Взаимодействие с веб-службами ASP.NET

Взаимодействие между веб-службами ASP.NET и веб-службами Windows Communication Foundation (WCF) можно обеспечить, гарантируя, что службы, реализованные с помощью обоих технологий, соответствуют спецификации WS-I Basic Profile 1.1. ASP.NET веб-службах, которые соответствуют базовому профилю WS-I 1.1, взаимодействуют с клиентами WCF с помощью предоставленной системой привязки BasicHttpBindingWCF.

Используйте параметр 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 использует SOAPAction заголовок HTTP для маршрутизации сообщений.

XML-код, в который тип сериализуется сериализатором XmlSerializer, по умолчанию семантически идентичен XML-коду, в который тип сериализуется сериализатором DataContractSerializer, при условии, что пространство имен для XML задано явным образом. При определении типа данных для использования с ASP. Службы NETWeb в ожидании внедрения 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>

См. также