Взаимодействие с веб-службами 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>