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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сведения о создании каналов, поддерживающих пользовательские транспорты или функции протокола, см. в разделе "Расширение уровня канала".

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

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

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

См. также