Взаимодействие с веб-службами ASP.NET
Взаимодействие между веб-службами ASP.NET и веб-службами Windows Communication Foundation (WCF) возможно, если обеспечить, чтобы службы, реализованные с помощью обеих технологий, соответствовали спецификации WS-I Basic Profile 1.1. Веб-службы ASP.NET, соответствующие спецификации WS-I Basic Profile 1.1, могут взаимодействовать с клиентами WCF с помощью предоставляемой системой привязки WCF — BasicHttpBinding.
Используйте имеющуюся в ASP.NET 2.0 возможность добавления атрибутов WebService и WebMethodAttribute в интерфейс, а не в класс, и создания класса для реализации интерфейса, как показано в следующем примере кода.
[WebService]
public interface IEcho
{
[WebMethod]
string Echo(string input);
}
public class Service : IEcho
{
public string Echo(string input)
{
return input;
}
}
Использование этого варианта предпочтительно, так как интерфейс с атрибутом WebService составляет контракт для операций, выполняемых службой, доступный для повторного использования в различных классах, которые могут реализовывать этот же контракт другими способами.
Избегайте использования атрибута SoapDocumentServiceAttribute для маршрутизации сообщений методам по полному имени элемента тела SOAP-сообщения, а не по заголовку HTTP SOAPAction. В WCF для маршрутизации сообщений используется заголовок HTTP SOAPAction.
XML-код, в который тип сериализуется сериализатором XmlSerializer, по умолчанию семантически идентичен XML-коду, в который тип сериализуется сериализатором DataContractSerializer, при условии, что пространство имен для XML задано явным образом. При задании типа данных для использования в веб-службах ASP.NET , если в будущем планируется переход на WCF, поступайте следующим образом.
Задавайте тип с использованием классов .NET Framework, а не схемы XML.
Добавляйте в класс только атрибуты SerializableAttribute и XmlRootAttribute, используя последний для явного задания пространства имен для типа. Не добавляйте дополнительные атрибуты из пространства имен System.Xml.Serialization для задания способа преобразования класса .NET Framework в XML.
Используя этот подход, вы впоследствии сможете превратить классы .NET в контракты данных, добавив атрибуты DataContractAttribute и DataMemberAttribute, без значительного изменения XML-кода, в который классы сериализуются для передачи. Типы, используемые в сообщениях веб-службами ASP.NET, могут обрабатываться приложениями WCF как контракты данных, что, помимо прочих преимуществ, повышает производительность приложений WCF.
Избегайте использования параметров проверки подлинности, предусмотренных в IIS: клиенты WCF их не поддерживают. Если службу необходимо защитить, используйте параметры, предусмотренные в WCF: они надежны и основаны на стандартных протоколах.
Влияние загрузки модуля ServiceModel HttpModule на производительность
В платформе .NET Framework 3.0 модуль WCF HttpModule устанавливался в корневой файл Web.config таким образом, что любое приложение ASP.NET поддерживало WCF. Это может влиять на производительность, поэтому можно удалить ServiceModel из файла Web.config, как показано в следующем примере.
<httpModules>
<remove name=”ServiceModel” />
<httpModules/>
См. также
Задачи
Как настраивать службы WCF для взаимодействия с клиентами веб-службы ASP.NET