Pull to refresh

Comments 19

Спасибо за статью, давно хотелось познакомится с WCF, но увы руки не доходили, теперь познакомлюсь.
Да, статья хороша для начала знакомства с WCF. Мне полезно.
UFO just landed and posted this here
если хотите не single, тогда в конструкторе ServiceHost(typeof(WcfService)) передавайте.
Или я не понял в чем проблема
UFO just landed and posted this here
Как вариант, используйте статические поля в вашем классе. В этом случае сколько бы объектов не создавалось, значения этих полей у всех будут одинаковыми.
Ну а на счет InstanceContextMode.Single и многопоточки — надо ковырять. На сколько я помню по описаниям, такое возможно, но никогда не пробовал.
UFO just landed and posted this here
Что-то я не совсем понял, что вы имеете в виду. В любом случае, если не брать во внимание синтаксис, статический класс от синглтона отличается только тем, что у него невозможно создать конструктор с параметрами (но никто не запрещает сделать метод а-ля Initialize). Тут где-то даже был холивар по поводу что лучше, статический класс или синглтон.

Найдите 10 отличий =)
// используя объект класса службы
WcfService instance = new WcfService("test");
ServiceHost host = new ServiceHost(instance);
host.Open();
// ...
instance.SomeInstanceProperty = 10;

// используя статические поля
WcfService.Initialize("test");
ServiceHost host = new ServiceHost(typeof(WcfService));
host.Open();
// ...
WcfService.SomeStaticProperty = 10;
UFO just landed and posted this here
=) Не за что. Как говорится, «Век живи, век учись.»
Не понимаю, зачем такие «Hello world» статьи, которых полным полно.

мне бы было бы интересно, если бы рассказали ну хотя бы об оптимизации, показали разные биндинги, tcp, http их разницу. Более углубленно.

Хотя, если вы собираетесь продолжать цикл статей, то для начала вполне неплохо, но только не останавливайтесь :)
Оптимизации-да… Про разницу биндингов и на MSDN можно почитать(я к тому, что тогда это будет все-таки не статья, а сводка из документации). По-моему очень даже хорошее начало, если цикл продолжить в таком же стиле.
WCF устроена таким образом, что биндинги могут быть разные, а код один. Т.е. сами биндинги задаются в config-файле, там особо даже не о чем рассказывать. Поменял строку, он уже у тебя вместо tcp по http. Или по named pipes работает.
самое главное, что сервер может одновременно несколько биндингов обслуживать. и настройки все эти можно (и нужно) выносить в конфиги — тогда перенастройка службы становится элементарной.
Отличная статья! Понравились объяснения путем создания всего ручками. Только вот маленькое замечание не совсем относящееся к данной статье… Вы объявляете прокси клиент, но нигде его не закрываете, что в более масштабном приложении скорее всего вызовет проблемы. Более того использование директивы using тоже не подходит и может начать постоянно выскакивать исключение вида: `System.ServiceModel.CommunicationObjectFaultedException: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state`. Все дело в том что в Dispose базового класса для прокси клиента(ClientBase, форматирование на хабре рубит параметр =( ) прописан лишь метод Close():
void IDisposable.Dispose()
{
this.Close();
}

который тоже может вызвать исключение, но оно-скроется. Сам обходил такое при помощи создания пэршл класса прокcи клиента, наследованного от IDisposable и написанием собственного метода Dispose(). Но это так… К статье не имеет отношения, написал просто, чтоб читающие знали, с чем могут столкнуться.
Всем, кто хочет разобраться с WCF очень рекомендую вот эту книгу. Сам по ней учился. Всё очень просто и доходчиво объясняется — начиная от подобных Hello world, и заканчивая оптимизациями.
Добавлю, есть еще хорошая книга по WCF, правда, на английском: Juval Lowy — Programming WCF Services, 3rd Edition.
Кстати, об авторах =) Сколько книгу читал, авторов так и не посмотрел.

Стив Резник, Ричард Крейн, Крис Боуэн. Основы Windows Communication Foundation для .NET Framework 3.5 (это книга по ссылке выше)
За статью — спасибо! Жаль что такой не было еще годик назад. В следующих постах хотелось бы видеть как сжимать и шифровать поток.
Sign up to leave a comment.

Articles