Наилучшая практика хранения параметров привязки WCF для совместного использования прокси-серверами и службами WCF? - PullRequest
1 голос
/ 12 апреля 2010

В настоящее время я кодирую набор вспомогательных классов, которые будут использоваться при создании прокси-клиента [для использования Client / Silverlight] для использования служб WCF на Сервере (НЕ с использованием Добавить ссылку на службу).

Обратите внимание, как я устанавливаю размер буфера на максимально допустимый (в первом фрагменте кода), потому что для некоторых сервисов у нас есть большие требования к полезной нагрузке. Дополнительный эффект заключается в том, что теперь мне нужно настроить службу WCF для совместного использования одного и того же размера буфера с прокси-клиентом, чтобы они были синхронизированы. Я не хочу вводить эти цифры в файл конфигурации (один на клиенте, один на сервере); вместо этого я хочу поделиться каким-то объектом конфигурации для обоих, чтобы изменить настройки только один раз.

Моя первоначальная идея - создать статический класс со статическими полями только для чтения в качестве элементов конфигурации, чтобы обеспечить легкий доступ к каждому набору конфигурации, а также интеграцию intellisense. Есть мысли или рекомендации?

// .... First code snippet
        BasicHttpBinaryBinding binding = new BasicHttpBinaryBinding ();

        // Increase the buffer sizes to the limit
        binding.MaxBufferSize = Int32.MaxValue;  // <------- HARD CODED
        binding.MaxReceivedMessageSize = Int32.MaxValue; // <------- HARD CODED

        EndpointAddress endPoint = new EndpointAddress(
            string.Format ( "{0}{1}", _baseUri, string.Format ( BASE_SERVICE,       serviceName ) ) );

// ......................

/ * КОНФИГУРАЦИОННЫЕ КЛАССЫ * /

public class BindingBufferConfiguration
{
    public int MaxBufferSize { get; protected set;}
    public int MaxReceivedMessageSize { get; protected set; }

    public BindingBufferConfiguration (int MaxBufferSize,int MaxReceivedMessageSize)
    {
        this.MaxBufferSize = MaxBufferSize;
        this.MaxReceivedMessageSize = MaxReceivedMessageSize;
    }
}

 public static class PatientModuleBufferConfiguration
{
     public static readonly BindingBufferConfiguration PatientProxyBufferConfiguration = new BindingBufferConfiguration ( 4096, 4096 );
     public static readonly BindingBufferConfiguration PatientPhotoProxyBufferConfiguration = new BindingBufferConfiguration(1024 * 500 /*500 KB*/,1024 * 500 /*500 KB*/ )
     // ....
}

Либо на самом деле никто не имеет хорошего ответа на вопрос, либо нет правильного ответа. В моем случае, это работало в течение 3 месяцев и никаких проблем до сих пор.

Я отмечаю вопрос как ответивший.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...