Введение в расширяемость
Модель приложения Windows Communication Foundation (WCF) предназначена для решения большей части требований к обмену данными любого распределенного приложения. Однако всегда существуют сценарии, которые модель приложений по умолчанию и предоставленные системой реализации не поддерживают. Модель расширяемости WCF предназначена для поддержки пользовательских сценариев, позволяя изменять системное поведение на каждом уровне даже до точки замены всей модели приложения. В этом разделе кратко рассматриваются различные области расширения и даются ссылки на дополнительные сведения о каждой из них.
Области расширения
Можно расширять следующее.
Среду выполнения приложения. При этом расширяются диспетчеризация и обработка сообщений для приложения. Сюда входит также расширение системы безопасности, системы метаданных, системы сериализации, а также привязок и элементов привязки, соединяющих приложение с системой базовых каналов.
Канал и среду выполнения канала. При этом расширяется система, функционирующая на уровне сообщения, и обеспечивается поддержка протоколов, транспорта и кодирования.
Среду выполнения узла. При этом расширяется связь домена приложения размещения с каналом и средой выполнения приложения.
Расширение среды выполнения приложения
В приложениях WCF существует различие между сообщениями, предназначенными для соответствующего канала и сообщений, предназначенных для самого приложения. Сообщения канала поддерживают некоторую связанную с каналами функциональность, такую как установление защищенного взаимодействия или установление безопасного сеанса. Эти сообщения недоступны среде выполнения приложения; они обрабатываются до задействования уровня приложения.
Сообщения приложения содержат данные, предназначенные для операции службы или клиента, созданной разработчиком или его заказчиком. Эти сообщения доступны системе расширения уровня приложения в виде сообщений или в виде объектов, в зависимости от конкретных потребностей.
Все сообщения проходят через систему каналов; только сообщения приложения передаются из системы каналов в приложение. Для создания новой функциональности уровня канала необходимо расширить систему каналов. Для создания новой функциональности уровня приложения необходимо расширить среду выполнения службы или клиента (соответственно диспетчеры и фабрики каналов). Дополнительные сведения о расширении среды выполнения приложения см. в разделе "Расширение ServiceHost" и уровня модели службы.
Расширение безопасности
Для построения пользовательских механизмов безопасности, таких как маркеры и учетные данные, необходимо расширить систему безопасности. Дополнительные сведения см. в разделе "Расширение безопасности".
Расширение системы метаданных
Чтобы предоставлять метаданные способом, отличным от предусмотренного по умолчанию, необходимо расширить систему метаданных. Дополнительные сведения см. в разделе "Расширение системы метаданных".
Расширение системы сериализации
Для построения пользовательских кодировщиков, создания суррогатов данных или выполнения какой-либо иной обработки, подразумевающей настройку передаваемых данных, необходимо расширить систему сериализации. Дополнительные сведения см. в разделе "Расширение кодировщиков и сериализаторов".
Расширение привязок
Для связывания каналов транспорта или протокола с уровнем приложения необходимо расширить систему привязок. Дополнительные сведения см. в разделе "Расширение привязок".
Расширение системы каналов
Сведения о создании каналов, поддерживающих пользовательские транспорты или функции протокола, см. в разделе "Расширение уровня канала".
Расширение системы размещения службы
Для изменения модели приложений в масштабе всей службы необходимо расширить класс System.ServiceModel.ServiceHostBase. Дополнительные сведения см. в разделе "Расширение ServiceHost" и уровня модели службы.
Для изменения связи между доменом приложения размещения и узлом службы необходимо расширить класс System.ServiceModel.Activation.ServiceHostFactory. Дополнительные сведения см. в разделе "Расширение размещения с помощью ServiceHostFactory".