Какие шаблоны проектирования встроены в сам wcf? - PullRequest
0 голосов
/ 04 октября 2010

Меня интересуют шаблоны проектирования, которые использовались при разработке wcf.В качестве примера того, что я ищу: класс ChannelFactory используется для создания канала между клиентом и службой;это представляет реализацию шаблона Абстрактной фабрики или шаблона Строителя?Или комбинация двух?Причина, по которой я задаю этот вопрос, заключается в том, что при документировании шаблонов проектирования часто используются примеры его использования, особенно в области того, как шаблоны проектирования можно комбинировать друг с другом.Мне кажется, что рассмотрение практического примера существующего программного обеспечения, которое находится в производстве (например, wcf, тем более, что человек может использовать Reflector для детального изучения классов и их объектной модели), значительно улучшит понимание шаблонов проектирования.

1 Ответ

3 голосов
/ 04 октября 2010

Абстрактная фабрика строится по шаблону Builder.Вместо того, чтобы фабрика знала, как создать один тип объекта, она знает, как создавать много разных, но связанных типов объектов.Builder - это базовый строительный блок для шаблона, который инкапсулирует инициализацию другого объекта в отдельном месте от кода объекта или потребителя.Абстрактная фабрика использует Builder для создания чистой фабрикации, единственной целью которой является создание объектов.

Более точно:

  • Сервисы в целом, но особенно WCF, делаютинтенсивное использование шаблонов в стиле адаптера, таких как прокси.Служба WCF создает «прокси», который выглядит как класс за конечной точкой службы, но на самом деле это совсем другой тип класса;прокси-класс является «адаптером» между вашим кодом (который ожидает базовый класс обслуживания) и реализацией службы (которая поддерживает каналы связи, сериализацию / десериализацию и т. д., о которых зависимые классы не должны знать), которая находится над классомэто делает реальную работу.

  • Все, что связано с каналами связи, как вы обнаружили, обычно включает в себя Factory для инициализации объекта, представляющего канал данных.Эти объекты дороги и требуют знания деталей реализации, которых не должен знать класс потребления.

  • За кулисами сервисные вызовы представляют использование шаблона Command.Сообщение, передаваемое по проводной сети, инкапсулирует метод вызова сервиса, который переваривается веб-сервером и преобразуется в вызов метода, подключенного к этой конечной точке сервиса.Однако, похоже, что вы на самом деле вызываете метод, вместо того, чтобы инкапсулировать выполняемую операцию и вызывать универсальный метод, вы не можете считать, что он принадлежит этому семейству.

В SOA также много шаблонов асинхронности и передачи сообщений.

...