Общие сведения о расширяемости

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

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

Вы можете расширить следующие возможности:

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

  • Среда выполнения и время выполнения канала. Это расширяет систему, которая работает на уровне сообщения, обеспечивая поддержку протокола, транспорта и кодирования.

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

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

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

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

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

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

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

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

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

Расширение сериализации

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

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

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

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

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

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

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

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

См. также