Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматриваются новые возможности Windows Communication Foundation (WCF) версии 4.5.
gRPC в качестве альтернативы WCF
gRPC — это современная платформа RPC, которая является популярной альтернативой WCF. gRPC построен на основе HTTP/2, что обеспечивает ряд преимуществ по сравнению с WCF, в том числе:
- Производительность: gRPC гораздо эффективнее, чем WCF, особенно для длительных подключений.
- Масштабируемость: gRPC предназначен для масштабирования до большого количества клиентов и серверов.
- Безопасность: gRPC поддерживает различные механизмы безопасности, включая TLS и проверку подлинности.
- Кроссплатформенный: gRPC является платформо-нейтральным и может использоваться с различными языками программирования.
Дополнительные сведения о разработке или переносе приложений WCF в gRPC см. в следующем разделе:
- Почему мы рекомендуем gRPC для разработчиков WCF
- Сравнение WCF с gRPC
- Общие сведения о gRPC для разработчиков WCF
Функции упрощения WCF
Было сделано много работы, чтобы упростить разработку и обслуживание приложений WCF 4.5. Дополнительные сведения см. в разделе "Функции упрощения WCF".
Поддержка асинхронного выполнения на основе задач
По умолчанию добавление ссылки на службу создает методы асинхронной операции службы. Это делается для синхронных и асинхронных методов. Это позволяет асинхронно вызывать операции службы с помощью новой асинхронной модели программирования на основе задач. При вызове созданного прокси-метода WCF создает объект Task для представления асинхронной операции и возвращает его вам. Задача завершается после завершения операции. При реализации асинхронной операции ее можно реализовать как асинхронную операцию на основе задач. Дополнительные сведения см. в разделе "Синхронные и асинхронные операции".
Упрощенные генерированные файлы конфигурации
При добавлении ссылки на службу в Visual Studio или использовании средства SvcUtil.exe создается файл конфигурации клиента. В предыдущих версиях WCF эти файлы конфигурации содержат значение каждого свойства привязки, даже если его значение является значением по умолчанию. В WCF 4.5 созданные файлы конфигурации содержат только те свойства привязки, которые имеют значение, отличное от значения по умолчанию.
Дополнительные сведения см. в разделе "Функции упрощения WCF".
Contract-First Разработка
WCF теперь поддерживает разработку, в которой контракты идут первыми. svcutil.exe имеет переключатель /serviceContract, который позволяет создавать контракты службы и данных из документа WSDL.
Добавление ссылки на службу из проекта переносимого подмножества
Переносимые проекты подмножества позволяют программистам сборки .NET поддерживать одно исходное дерево и систему сборки, сохраняя поддержку нескольких платформ .NET (классических, Silverlight, Windows Phone и Xbox). Переносимые проекты подмножества ссылаются только на переносимые библиотеки .NET, которые являются сборками, которые можно использовать на любой платформе .NET. Интерфейс разработчика совпадает с добавлением ссылки на службу в любом другом клиентском приложении WCF. Для получения дополнительной информации см. раздел «Добавление служебной ссылки» в проекте переносимого подмножества.
Изменен режим совместимости ASP.NET по умолчанию
WCF предоставляет режим совместимости ASP.NET, чтобы предоставить разработчикам полный доступ к функциям в конвейере HTTP ASP.NET при написании служб WCF. Чтобы использовать этот режим, необходимо задать для атрибута aspNetCompatibilityEnabled значение true в <разделе serviceHostingEnvironment> web.config. Кроме того, любая служба в этой области приложения должна иметь свойство RequirementsMode в своем AspNetCompatibilityRequirementsAttribute установленным на Allowed или Required. По умолчанию AspNetCompatibilityRequirementsAttribute теперь установлено на Allowed. Дополнительные сведения см. в разделе "Службы WCF" и ASP.NET.
Новые значения по умолчанию транспорта
Чтобы упростить настройку, изменились значения свойств транспорта по умолчанию. Дополнительные сведения см. в разделе "Функции упрощения WCF".
XmlDictionaryReaderQuotas
XmlDictionaryReaderQuotas содержит настраиваемые значения квот для средств чтения словарей XML, которые ограничивают объем памяти, используемой кодировщиком при создании сообщения. Хотя эти квоты настраиваются, значения по умолчанию изменились, чтобы уменьшить вероятность того, что разработчику придется явно задать их. Дополнительные сведения см. в разделе "Функции упрощения WCF".
Проверка конфигурации WCF
В рамках процесса сборки в Visual Studio файлы конфигурации WCF теперь проверяются для атрибутов, определенных в проекте. Список ошибок или предупреждений проверки отображается в Visual Studio, если проверка завершается ошибкой.
Подсказки редактора XML
Чтобы помочь новым и существующим разработчикам служб WCF настроить свои службы, редактор XML Visual Studio теперь предоставляет подсказки для каждого элемента конфигурации и его свойств, входящих в файл конфигурации службы.
Улучшения потоковой передачи
Добавлена поддержка истинной асинхронной потоковой передачи, в которой сторона отправки теперь не блокирует потоки, если сторона получения не считывает или замедляет чтение, тем самым увеличивая масштабируемость. Удалено ограничение буферизации сообщений, когда клиент отправляет потоковое сообщение в службу WCF, размещенную в IIS. Дополнительные сведения см. в разделе "Функции упрощения WCF".
Упрощение предоставления конечной точки по протоколу HTTPS с помощью IIS
Добавлено сопоставление протоколов HTTPS для упрощения предоставления конечной точки по протоколу HTTPS. Чтобы включить конечную точку HTTPS, убедитесь, что на веб-сайте настроена привязка HTTPS и SSL-сертификат, а затем просто включите HTTPS для виртуального каталога, на котором размещена служба. Если метаданные включены для службы, она также будет предоставляться по протоколу HTTPS.
Создание одного документа WSDL
Некоторые сторонние стеки обработки WSDL не могут обрабатывать документы WSDL, имеющие зависимости от других документов с помощью xsd:import. WCF теперь позволяет указать, что все сведения WSDL возвращаются в одном документе. Чтобы запросить один документ WSDL, добавьте "?singleWSDL" в универсальный код ресурса (URI) при запросе метаданных из службы.
Поддержка WebSocket
WebSockets — это технология, которая обеспечивает двунаправленную связь через порты 80 и 443 с характеристиками производительности, аналогичной TCP. Добавлены две новые привязки для поддержки обмена данными по транспорту WebSocket. NetHttpBinding и NetHttpsBinding. Дополнительные сведения см. в разделе системно предоставляемые привязки.
Новые значения по умолчанию транспорта
В следующей таблице описаны параметры, которые изменились и где найти дополнительные сведения.
| Недвижимость | Вкл | Новое значение по умолчанию | Для получения дополнительной информации см. |
|---|---|---|---|
| тайм-аут инициализации канала | NetTcpBinding | 30 секунд | ChannelInitializationTimeout |
| Очередь прослушивания | NetTcpBinding | 12 * число процессоров | ListenBacklog |
| maxPendingAccepts | Элемент привязки транспортировки с ориентированием на соединение SMSvcHost.exe |
2 * число процессоров для транспорта 4 * число процессоров для SMSvcHost.exe |
MaxPendingAccepts Настройка службы общего доступа к tcp-портам Net.TCP |
| maxPendingConnections | Элемент привязки транспортировки с ориентированием на соединение | 12 * число процессоров | MaxPendingConnections |
| receiveTimeout | SMSvcHost.exe | 30 секунд | Настройка службы общего доступа к tcp-портам Net.TCP |
Настройка служб WCF в коде
Windows Communication Foundation (WCF) позволяет разработчикам настраивать службы с помощью файлов конфигурации или кода. Файлы конфигурации используются, если необходимо настроить службу после ее развертывания. При использовании файлов конфигурации ИТ-работнику требуется только обновить файл конфигурации без необходимости выполнять повторную компиляцию. Файлы конфигурации, однако, могут быть сложными и требовать больших усилий при обслуживании. Отсутствует поддержка отладки файлов конфигурации, и ссылки на элементы конфигурации осуществляются по именам, что усложняет работу и способствует совершению ошибок при создании файлов конфигурации. WCF также позволяет настраивать службы в коде. В более ранних версиях WCF (4.0 и более ранних версий) настройка служб в коде была легкой в локальном сценарии, ServiceHost класс позволил настроить конечные точки и поведение до вызова ServiceHost.Open. Однако в сценариях, размещенных в Интернете, у вас нет доступа к классу ServiceHost . Чтобы настроить веб-хостинговую службу, приходилось создавать класс System.ServiceModel.ServiceHostFactory, который создавал ServiceHostFactory и выполнял необходимые настройки. Начиная с версии .NET Framework 4.5, WCF предоставляет более простой способ настройки как самостоятельно размещаемых служб, так и служб, размещаемых в интернете в коде. Дополнительные сведения см. в разделе "Настройка служб WCF в коде".
Кэширование ChannelFactory
Клиентские приложения WCF используют ChannelFactory<TChannel> класс для создания канала связи со службой WCF. Создание ChannelFactory<TChannel> экземпляров приводит к некоторым затратам, так как включает в себя следующие операции:
ContractDescription Создание дерева
Отражение всех необходимых типов CLR
Создание стека каналов
Удаление ресурсов
Чтобы минимизировать эти затраты, WCF может кэшировать фабрики каналов при использовании клиентского прокси WCF. Дополнительные сведения см. в разделе "Фабрика каналов" и кэширование.
Сжатие и двоичный кодировщик
Начиная с WCF 4.5 двоичный кодировщик WCF добавляет поддержку сжатия. Тип сжатия настраивается свойством CompressionFormat . Клиент и служба должны настроить CompressionFormat свойство. Сжатие будет работать для протоколов HTTP, HTTPS и TCP. Если клиент указывает использовать сжатие, но служба его не поддерживает, возникает исключение протокола, указывающее на несоответствие протокола. Дополнительные сведения см. в разделе "Выбор кодировщика сообщений".
UDP
Добавлена поддержка транспорта UDP, которая позволяет разработчикам писать службы, использующие обмен сообщениями по принципу "отправил и забыл". Клиент отправляет сообщение в службу и не ожидает ответа от службы.
Поддержка нескольких аутентификаций
Добавлена поддержка нескольких режимов проверки подлинности, поддерживаемых IIS, на одном конечном узле WCF при использовании HTTP-транспорта и транспортной безопасности. СЛУЖБЫ IIS позволяют включить несколько режимов проверки подлинности в виртуальном каталоге. Эта функция позволяет одной конечной точке WCF поддерживать несколько режимов проверки подлинности, включенных для виртуального каталога, в котором размещена служба WCF.
Поддержка IDN
Добавлена поддержка, позволяющая службам WCF использовать международные доменные имена. Дополнительные сведения см. в разделе WCF и международных доменных имен.
HttpClient
Добавлен новый класс HttpClient , который упрощает работу с HTTP-запросами. Дополнительные сведения см. в разделе HttpClient " Рекомендации по использованию HttpClient".
Настройка IntelliSense
Значения атрибутов в файлах конфигурации для пользовательских атрибутов, определенных в проекте, теперь поддерживают IntelliSense, что упрощает и ускоряет работу с конфигурациями.
Подсказки по настройке
Элементы и атрибуты WCF теперь имеют подсказки в редакторе XML, чтобы упростить и точно определить назначение элемента или атрибута.
Вставка данных в качестве классов
В проекте WCF типы данных, определенные в ФОРМАТЕ XML (например, предоставляемые в службе), можно вставить непосредственно в кодовую страницу. Тип XML будет вставлен как тип CLR (Общая Языковая Среда). Дополнительные сведения см. в разделе "Создание классов типов данных из XML ".
Конечные точки WebServiceHost и их настройки по умолчанию
В Visual Studio 2010 WebServiceHost автоматически создал конечную точку по умолчанию, если вы явно указали конечную точку или нет. В Visual Studio 2012 и более поздних версиях WebServiceHost создает только конечную точку по умолчанию, если конечные точки не добавляются явным образом. Если клиент ожидает конечную точку по умолчанию, можно явно добавить конечную точку и указать клиенту его. Кроме того, можно сообщить WCF вернуться к предыдущему поведению, добавив следующий параметр в файл конфигурации приложения.
<appSettings>
<add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/>
</appSettings>
IHttpCookieContainerManager
Этот интерфейс, предоставляемый IChannelFactory<TChannel>, упрощает работу с файлами cookie на стороне клиента. Если параметр AllowCookies имеет значение true в привязке, вы можете получить доступ к файлам cookie с помощью следующего кода:
IHttpCookieContainerManager cookieManager = factory.GetProperty<IHttpCookieContainerManager>();
System.Net.CookieContainer container = cookieManager.CookieContainer;
Затем вы можете получить или задать файлы cookie из CookieContainer. Если параметр AllowCookies имеет значение false, вы можете вручную получить файлы cookie с помощью OperationContext и отправить их в другие запросы с помощью другого OperationContext или инспектора сообщений. Интерфейс IHttpCookieContainerManager позволяет пройти проверку подлинности пользователя со службой и использовать файл cookie проверки подлинности, возвращенный этой службой, для проверки подлинности с другими службами.