Можно ли использовать службу WCF так, как если бы это была веб-служба ASP.NET? - PullRequest
5 голосов
/ 21 декабря 2010

Я интегрирую продукт другого поставщика с нашими существующими процессами.

Этот продукт взаимодействует с нашей системой через веб-службу ASP.NET. Например, мне нужно написать веб-службу ASP.NET, в которой указаны конкретные имена методов и параметры, указанные поставщиком.

Достаточно просто, но мы хотим перенести как можно больше материала в WCF. Я еще не пользовался WCF, но, на мой взгляд, это замена веб-служб ASP.NET (и других вещей).

Видя, как я не могу изменить продукт поставщика, единственный способ, которым я мог бы написать этот новый веб-сервис с использованием WCF, - это если сервис WCF можно использовать как веб-сервис ASP.NET (т. Е. Насколько Продукт производителя обеспокоен тем, что он использует веб-службу ASP.NET).

Можно ли пользоваться услугами WCF таким образом?

Ответы [ 2 ]

5 голосов
/ 21 декабря 2010

да, веб-сервисы являются веб-сервисами.В целом WCF является более гибким и более мощным, чем ASP.NET, но вы можете получать сообщения по проводам в и из службы WCF, чтобы они выглядели точно так же, как сообщения для службы ASMX.Но WCF также отличается по умолчанию.

Миграция должна быть почти механической.Замените файл .asmx, содержащий это:

<%@ WebService 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Class="CommunicationService" %> 

... на файл .svc, содержащий это:

<%@ ServiceHost 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Service="CommunicationService" %> 

... и вы почти закончили.

Но настройки по умолчанию для веб-службы WCF отличаются от настроек веб-службы ASP.NET.В частности, пространства имен XML входящих и исходящих сообщений могут различаться.Не каждый определяет отдельные пространства имен XML для своих служб и сообщений, но для тех, кто это делает, миграция будет проблемой.Разница в поведении (WCF-vs-ASPNET) приведет к тому, что приложения, которые успешно смогли вызвать службу ASMX, не будут работать с "преобразованной" службой WCF.

В этой статье обсуждается проблема в некоторых деталях и описывается хороший обходной путь: используйте собственный ServiceHost.

Код хоста службы в вышеприведенной статье неполон в том смысле, что он работает только для исправления схемы запроса;Вам может / может понадобиться сделать что-то подобное для схемы ответа.

Удачи.

0 голосов
/ 23 декабря 2010

В дополнение к другим ответам и указанию на вашу проблему с миграцией вы можете ВСЕ ЕЩЕ открыть, чтобы ваши старые веб-сервисы работали в том виде, в каком они есть сейчас, но укажите эти веб-сервисы (существующие) на службу хоста WCF. Таким образом, новый и старый веб-сервисы работают без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...