Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Współdziałanie usług sieci Web ASP.NET i usług sieci Web programu Windows Communication Foundation (WCF) można osiągnąć, zapewniając, że usługi zaimplementowane przy użyciu obu technologii są zgodne ze specyfikacją WS-I Basic Profile 1.1. ASP.NET usługi sieci Web zgodne z WS-I Basic Profile 1.1 współdziałają z klientami WCF przy użyciu powiązania dostarczonego przez system WCF. BasicHttpBinding
Użyj opcji ASP.NET 2.0 dodawania WebService atrybutów i WebMethodAttribute do interfejsu, a nie do klasy, i pisania klasy w celu zaimplementowania interfejsu, jak pokazano w poniższym przykładowym kodzie.
[WebService]
public interface IEcho
{
[WebMethod]
string Echo(string input);
}
public class Service : IEcho
{
public string Echo(string input)
{
return input;
}
}
Użycie tej opcji jest preferowane, ponieważ interfejs z atrybutem WebService stanowi kontrakt dla operacji wykonywanych przez usługę, które mogą być ponownie używane z różnymi klasami, które mogą implementować ten sam kontrakt na różne sposoby.
Unikaj używania atrybutu SoapDocumentServiceAttribute do kierowania komunikatów do metod na podstawie w pełni kwalifikowanej nazwy elementu treści komunikatu SOAP zamiast nagłówka HTTP SOAPAction
. WCF używa nagłówka SOAPAction
HTTP do routingu komunikatów.
Kod XML, do którego XmlSerializer serializuje typ domyślnie, jest semantycznie identyczny z kodem XML, do którego DataContractSerializer serializuje typ, pod warunkiem że przestrzeń nazw xml jest jawnie zdefiniowana. Podczas definiowania typu danych do użycia z usługami sieciowymi ASP.NET, w oczekiwaniu na wdrożenie WCF, wykonaj następujące czynności:
Zdefiniuj typ przy użyciu klas programu .NET Framework, a nie schematu XML.
Dodaj tylko element SerializableAttribute i XmlRootAttribute do klasy, używając tej drugiej, aby jawnie zdefiniować przestrzeń nazw dla typu. Nie należy dodawać dodatkowych atrybutów z System.Xml.Serialization przestrzeni nazw, aby kontrolować sposób tłumaczenia klasy programu .NET Framework na język XML.
Przyjmując to podejście, powinno być możliwe późniejsze przekształcenie klas platformy .NET w kontrakty danych dzięki dodaniu DataContractAttribute i DataMemberAttribute, bez istotnego zmieniania kodu XML, w którym klasy są serializowane do transmisji. Typy używane w komunikatach przez usługi sieci Web ASP.NET mogą być przetwarzane jako kontrakty danych przez aplikacje WCF, zapewniając między innymi lepszą wydajność w aplikacjach WCF.
Unikaj używania opcji uwierzytelniania udostępnianych przez usługi Internet Information Services (IIS). Klienci programu WCF nie obsługują ich. Jeśli usługa musi być zabezpieczona, użyj opcji udostępnianych przez usługę WCF, ponieważ te opcje są niezawodne i są oparte na standardowych protokołach.
Wpływ na wydajność spowodowany ładowaniem modułu HttpModule ServiceModel
W programie .NET Framework 3.0 program WCF HttpModule
został zainstalowany w głównym pliku Web.config, tak aby każda aplikacja ASP.NET była włączona w programie WCF. Może to mieć wpływ na wydajność, dlatego można usunąć ServiceModel
z pliku Web.config, jak pokazano w poniższym przykładzie.
<httpModules>
<remove name="ServiceModel" />
</httpModules>