Prognozowanie wdrożeń programu Windows Communication Foundation: Ułatwianie integracji w przyszłości
Jeśli używasz ASP.NET dzisiaj i przewidujesz korzystanie z usługi WCF w przyszłości, ten temat zawiera wskazówki, aby upewnić się, że nowe usługi sieci Web ASP.NET będą działać dobrze razem z aplikacjami WCF.
Rekomendacje ogólne
Przyjęcie ASP.NET 2.0 dla nowych usług. Zapewni to dostęp do ulepszeń i ulepszeń nowej wersji. Jednak umożliwi to również korzystanie ze składników ASP.NET 2.0 wraz ze składnikami WCF w tej samej aplikacji.
Protokoły
Użyj nowego obiektu ASP.NET 2.0 do sprawdzania zgodności z profilem podstawowym WS-I 1.1:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(
ConformsTo = WsiProfiles.BasicProfile1_1,
EmitConformanceClaims=true)]
public interface IEcho
ASP.NET usługi sieci Web zgodne z profilem WS-I Basic Profile 1.1 będą współdziałać z klientami WCF przy użyciu wstępnie zdefiniowanego powiązania programu WCF. BasicHttpBinding
Programowanie usług
Unikaj używania atrybutu SoapDocumentServiceAttribute , aby komunikaty kierowane do metod na podstawie w pełni kwalifikowanej nazwy elementu treści komunikatu SOAP, a nie nagłówka HTTP SOAPAction. WCF używa nagłówka HTTP SOAPAction do routingu komunikatów.
Reprezentacja danych
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 sieci Web ASP.NET w oczekiwaniu na wdrożenie usługi WCF w przyszłości 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 wprowadzenie klas platformy .NET do kontraktów danych z dodatkiem DataContractAttribute elementu 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 będą mogły być przetwarzane jako kontrakty danych przez aplikacje WCF, co daje między innymi lepszą wydajność w aplikacjach WCF.
Zabezpieczenia
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ą bogatsze i są oparte na standardowych protokołach.