Skip to content
February 3, 2012 / ahriman hpc mode

[Перевод] Что нового в WCF 4.5? Изменения в режиме совместимости ASP.NET

Оглавление:

1. Что нового в WCF 4.5? Начнём с конфигурации WCF
2. Что нового в WCF 4.5? Один WSDL-файл.
3. Что нового в WCF 4.5? Подсказки конфигурации и intellisense в файлах конфигурации
4. Что нового в WCF 4.5? Проверки конфигурации
5. Что нового в WCF 4.5? Поддержка множественной аутентификации на одну точку входа в IIS
6. Что нового в WCF 4.5? Точка входа HTTPS для IIS
7. Что нового в WCF 4.5? BasicHttpsBinding
8. Что нового в WCF 4.5? Изменения в режиме совместимости ASP.NET
9. Что нового в WCF 4.5? Улучшенный стриминг в IIS

Это восьмой пост в серии про WCF 4.5. Продолжаем разговор о фичах, связанных с веб-хостингом, а именно о режиме совместимости ASP.NET в WCF 4.5.

Обычно сервис WCF размещенный в IIS работает с ASP.NET – они “делят” между собой pipeline, находятся в одном домене приложений, но в контексте HTTP работают довольно изолированно друг от друга (авторизация, контекст, сессии, и прочее). Это стандартное поведение WCF.

Однако вы можете изменить это стандартное поведение WCF и указать режим совместимости ASP.NET – это позволит WCF и ASP.NET разделить pipeline и один контекст HTTP. У этого есть свои преимущества и недостатки (например, проблема сессий ASP.NET и блокирующие вызовы WCF).

Для установки режима совместимости ASP.NET необходимо сделать следующее:

1. Включить ASP.NET compatibility mode в web.config:

<system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />    
</system.serviceModel>

2. Указать сервисам на поддержку режима совместимости с помощью атрибута AspNetCompatibilityRequirements .

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

Побольше про WCF и ASP.NET на MSDN.

Что же изменилось в WCF 4.5?

В WCF 4.5стандартным поведением WCF является автоматическая поддержка режима совместимости ASP.NET:

1. В шаблоне проекта WCF Service Application в элемент serviceHostingEnvironment добавлен атрибут aspNetCompatibilityEnabled со стандартным значением true.

2. Стандартное значение атрибута AspNetCompatibilityRequirements изменено с NotAllowed на Allowed. Без этого вам необходимо было бы вручную добавлять атрибут в каждый новый сервис. Это отмечено в документации к атрибуту:

WCF 4 – http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.100).aspx

WCF 4.5 – http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.110).aspx

Режим совместимости ASP.NET весьма полезен, если вам необходимо давать доступ к одной информации приложению ASP.NET и сервису WCF. Но будьте осторожны – проблема параллелизма concurrency problem возникает при расшаривании состояния сессии между WCF и ASP.NET.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: