В настоящее время я кодирую набор вспомогательных классов, которые будут использоваться при создании прокси-клиента [для использования 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 месяцев и никаких проблем до сих пор.
Я отмечаю вопрос как ответивший.