Поделиться через


Введение в расширяемость

Модель приложений Windows Communication Foundation (WCF) предусматривает удовлетворение большей части связанных с обменом данных потребностей любого распределенного приложения. Однако всегда существуют сценарии, которые модель приложений по умолчанию и предоставленные системой реализации не поддерживают. Модель расширяемости WCF предназначена для поддержки пользовательских сценариев и позволяет изменять поведение системы на всех уровнях, вплоть до замены модели приложений целиком. В этом разделе кратко рассматриваются различные области расширения и даются ссылки на дополнительные сведения о каждой из них.

Области расширения

Можно расширять следующее.

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

  • Канал и среду выполнения канала. При этом расширяется система, функционирующая на уровне сообщения, и обеспечивается поддержка протоколов, транспорта и кодирования.

  • Среду выполнения узла. При этом расширяется связь домена приложения размещения с каналом и средой выполнения приложения.

Расширение среды выполнения приложения

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

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

Все сообщения проходят через систему каналов; только сообщения приложения передаются из системы каналов в приложение. Для создания новой функциональности уровня канала необходимо расширить систему каналов. Для создания новой функциональности уровня приложения необходимо расширить среду выполнения службы или клиента (диспетчеры и фабрики каналов соответственно). Дополнительные сведения расширении среды выполнения приложения см. в разделе Расширение ServiceHost и уровень модели службы.

Расширение системы безопасности

Для построения пользовательских механизмов безопасности, таких как маркеры и учетные данные, необходимо расширить систему безопасности. Дополнительные сведения см. в разделе Расширение системы безопасности.

Расширение системы метаданных

Чтобы предоставлять метаданные способом, отличным от предусмотренного по умолчанию, необходимо расширить систему метаданных. Дополнительные сведения см. в разделе Расширение системы метаданных.

Расширение системы сериализации

Для построения пользовательских кодировщиков, создания суррогатов данных или выполнения какой-либо иной обработки, подразумевающей настройку передаваемых данных, необходимо расширить систему сериализации. Дополнительные сведения см. в разделе Расширение кодировщиков и сериализаторов.

Расширение привязок

Для связывания каналов транспорта или протокола с уровнем приложения необходимо расширить систему привязок. Дополнительные сведения см. в разделе Расширение привязок.

Расширение системы каналов

О том, как создавать каналы с поддержкой пользовательского транспорта или пользовательской функциональности протокола, см. в разделе Расширение уровня каналов.

Расширение системы размещения службы

Для изменения модели приложений в масштабе всей службы необходимо расширить класс System.ServiceModel.ServiceHostBase. Дополнительные сведения см. в разделе Расширение ServiceHost и уровень модели службы.

Для изменения связи между доменом приложения размещения и узлом службы необходимо расширить класс System.ServiceModel.Activation.ServiceHostFactory. Дополнительные сведения см. в разделе Расширение размещения с использованием ServiceHostFactory.

См. также

Другие ресурсы

Расширение WCF