Notatka
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.
W tym temacie omówiono funkcje nowe w programie Windows Communication Foundation (WCF) w wersji 4.5.
gRPC jako alternatywa dla programu WCF
gRPC to nowoczesna struktura RPC, która jest popularną alternatywą dla platformy WCF. Usługa gRPC jest oparta na protokole HTTP/2, który zapewnia wiele zalet w porównaniu z platformą WCF, w tym:
- Wydajność: gRPC jest znacznie wydajniejszy niż WCF, szczególnie w przypadku długotrwałych połączeń.
- Skalowalność: gRPC jest przeznaczony do skalowania do dużej liczby klientów i serwerów.
- Zabezpieczenia: usługa gRPC obsługuje różne mechanizmy zabezpieczeń, w tym tls i uwierzytelnianie.
- Międzyplatformowe: gRPC jest neutralna dla platformy i może być używana z różnymi językami programowania.
Aby uzyskać więcej informacji na temat tworzenia lub migrowania aplikacji WCF do usługi gRPC, zobacz:
- Dlaczego zalecamy gRPC dla deweloperów WCF
- Porównywanie programu WCF z biblioteką gRPC
- Wprowadzenie do usługi gRPC dla deweloperów WCF
Funkcje uproszczenia programu WCF
Wykonano wiele prac, aby ułatwić tworzenie i konserwację aplikacji WCF 4.5. Aby uzyskać więcej informacji, zobacz Funkcje uproszczenia programu WCF.
Obsługa asynchroniczna oparta na zadaniach
Domyślnie funkcja Dodaj odwołanie do usługi generuje metody operacji asynchronicznego zwracania zadań. Odbywa się to zarówno w przypadku metod synchronicznych, jak i asynchronicznych. Umożliwia to asynchroniczne wywoływanie operacji usługi przy użyciu nowego modelu programowania asynchronicznego opartego na zadaniach. Podczas wywoływania wygenerowanej metody serwera proxy program WCF konstruuje obiekt Task reprezentujący operację asynchroniczną i zwraca to zadanie. Zadanie kończy się po zakończeniu operacji. Podczas implementowania operacji asynchronicznych można zaimplementować ją jako operację asynchroniową opartą na zadaniach. Aby uzyskać więcej informacji, zobacz Operacje synchroniczne i asynchroniczne.
Uproszczone wygenerowane pliki konfiguracji
Po dodaniu odwołania do usługi w programie Visual Studio lub użyciu narzędzia SvcUtil.exe zostanie wygenerowany plik konfiguracji klienta. W poprzednich wersjach programu WCF te pliki konfiguracji zawierały wartość każdej właściwości powiązania, nawet jeśli jej wartość jest wartością domyślną. W programie WCF 4.5 wygenerowane pliki konfiguracji zawierają tylko te właściwości powiązania ustawione na wartość inną niż domyślna.
Aby uzyskać więcej informacji, zobacz Funkcje uproszczenia programu WCF.
Rozwój Contract-First
WCF ma teraz wsparcie dla rozwoju zgodnego z podejściem kontrakt-pierwszy. svcutil.exe ma przełącznik /serviceContract, który umożliwia generowanie kontraktów usług i danych z dokumentu WSDL.
Dodawanie referencji do usługi z przenośnego podzestawu projektu
Przenośne projekty podzestawu umożliwiają programistom zestawów .NET obsługę pojedynczego drzewa źródłowego i systemu kompilacji, jednocześnie obsługując wiele platform .NET (komputery stacjonarne, Silverlight, Windows Phone i Xbox). Przenośne projekty podzestawu odwołują się tylko do bibliotek przenośnych platformy .NET, które są zestawami, które mogą być używane na dowolnej platformie .NET. Doświadczenie dewelopera jest takie samo jak dodanie odwołania do usługi w dowolnej innej aplikacji klienckiej WCF. Aby uzyskać więcej informacji, zobacz Add Service Reference in a Portable Subset Project (Dodawanie odwołania do usługi w projekcie przenośnego podzestawu).
Domyślny tryb zgodności ASP.NET został zmieniony
Program WCF zapewnia tryb zgodności ASP.NET, który pozwala deweloperom na pełny dostęp do funkcji w potoku HTTP platformy ASP.NET podczas tworzenia usług WCF. Aby użyć tego trybu, należy ustawić atrybut aspNetCompatibilityEnabled na wartość true w sekcji <serviceHostingEnvironment> web.config. Ponadto każda usługa w tym appDomain musi mieć właściwość RequirementsMode ustawioną na AspNetCompatibilityRequirementsAttribute lub Allowed. Domyślnie AspNetCompatibilityRequirementsAttribute jest teraz ustawione na Allowed. Aby uzyskać więcej informacji, zobacz usługi WCF i ASP.NET.
Nowe wartości domyślne transportu
Aby uprościć konfigurację, zmieniono wiele wartości domyślnych właściwości transportu. Aby uzyskać więcej informacji, zobacz Funkcje uproszczenia programu WCF.
XmlDictionaryReaderQuotas
XmlDictionaryReaderQuotas Zawiera konfigurowalne wartości przydziału dla czytników słowników XML, które ograniczają ilość pamięci używanej przez koder podczas tworzenia komunikatu. Chociaż te limity przydziału można konfigurować, wartości domyślne zmieniły się tak, aby zmniejszyć możliwość jawnego ustawienia ich przez dewelopera. Aby uzyskać więcej informacji, zobacz Funkcje uproszczenia programu WCF.
Walidacja konfiguracji programu WCF
W ramach procesu kompilacji w programie Visual Studio pliki konfiguracji programu WCF są teraz weryfikowane pod kątem atrybutów zdefiniowanych w projekcie. Lista błędów weryfikacji lub ostrzeżeń jest wyświetlana w programie Visual Studio, jeśli walidacja zakończy się niepowodzeniem.
Wskazówki edytora XML
Aby ułatwić nowym i istniejącym deweloperom usług WCF konfigurowanie swoich usług, edytor XML programu Visual Studio udostępnia teraz etykietki narzędzi dla każdego elementu konfiguracji i jego właściwości, które są częścią pliku konfiguracji usługi.
Ulepszenia przesyłania strumieniowego
Dodano obsługę prawdziwego asynchronicznego przesyłania strumieniowego, gdzie strona wysyłająca nie blokuje już wątków, jeśli strona odbierająca nie odczytuje lub robi to wolno, co zwiększa skalowalność. Usunięto ograniczenie buforowania komunikatu, gdy klient wysyła komunikat strumieniowy do usługi WCF hostowanej w IIS. Aby uzyskać więcej informacji, zobacz Funkcje uproszczenia programu WCF.
Upraszczanie uwidaczniania punktu końcowego za pośrednictwem protokołu HTTPS za pomocą usług IIS
Dodano mapowanie protokołu HTTPS w celu uproszczenia uwidaczniania punktu końcowego za pośrednictwem protokołu HTTPS. Aby włączyć punkt końcowy HTTPS, upewnij się, że witryna internetowa ma skonfigurowane powiązanie HTTPS i certyfikat SSL, a następnie po prostu włączyć protokół HTTPS dla katalogu wirtualnego, który hostuje usługę. Jeśli metadane są włączone dla usługi, zostaną również uwidocznione za pośrednictwem protokołu HTTPS.
Generowanie pojedynczego dokumentu WSDL
Niektóre stosy przetwarzania WSDL innych firm nie mogą przetwarzać dokumentów WSDL, które mają zależności od innych dokumentów za pośrednictwem xsd:import. Program WCF umożliwia teraz określenie, że wszystkie informacje WSDL zostaną zwrócone w jednym dokumencie. Aby zażądać pojedynczego dokumentu WSDL dołącz element "?singleWSDL" do identyfikatora URI podczas żądania metadanych z usługi.
Obsługa protokołu WebSocket
WebSockets to technologia, która zapewnia prawdziwą dwukierunkową komunikację przez porty 80 i 443 z charakterystyką wydajności podobną do tcp. Dodano dwa nowe powiązania w celu obsługi komunikacji za pośrednictwem transportu protokołu WebSocket. NetHttpBinding i NetHttpsBinding. Aby uzyskać więcej informacji, zobacz: Powiązania dostarczane przez system.
Nowe wartości domyślne transportu
W poniższej tabeli opisano ustawienia, które zostały zmienione i gdzie można znaleźć dodatkowe informacje.
| Majątek | Włączone | Nowa wartość domyślna | Aby uzyskać więcej informacji, zobacz |
|---|---|---|---|
| limit czasu inicjalizacji kanału | NetTcpBinding | 30 sekund | ChannelInitializationTimeout |
| odsłuch zaległości | NetTcpBinding | 12 * liczba procesorów | ListenBacklog |
| maksLiczbaOczekującychZaakceptowań | Element wiążący transport połączeniowy SMSvcHost.exe |
2 * liczba procesorów do transportu 4 * liczba procesorów dla SMSvcHost.exe |
MaxPendingAccepts Konfigurowanie usługi udostępniania portów Net.TCP |
| maksOczekującychPołączeń | Element wiążący transport połączeniowy | 12 * liczba procesorów | MaxPendingConnections |
| receiveTimeout | SMSvcHost.exe | 30 sekund | Konfigurowanie usługi udostępniania portów Net.TCP |
Konfigurowanie usług WCF w kodzie
Program Windows Communication Foundation (WCF) umożliwia deweloperom konfigurowanie usług przy użyciu plików konfiguracji lub kodu. Pliki konfiguracji są przydatne, gdy po wdrożeniu należy skonfigurować usługę. W przypadku korzystania z plików konfiguracji specjalista IT musi tylko zaktualizować plik konfiguracji, nie jest wymagana ponowna kompilacja. Jednak pliki konfiguracji mogą być złożone i trudne do utrzymania. Nie ma obsługi debugowania plików konfiguracji i elementów konfiguracji są przywoływania przez nazwy, co sprawia, że tworzenie plików konfiguracji jest podatne na błędy i trudne. Program WCF umożliwia również konfigurowanie usług w kodzie. We wcześniejszych wersjach programu WCF (4.0 i starszych) konfigurowanie usług w kodzie było łatwe w scenariuszach hostowanych samodzielnie, ServiceHost klasa umożliwiała konfigurowanie punktów końcowych i zachowań przed wywołaniem elementu ServiceHost.Open. Jednak w scenariuszach hostowanych w internecie nie masz dostępu do ServiceHost klasy. Aby skonfigurować usługę hostowaną w internecie, musiałeś utworzyć System.ServiceModel.ServiceHostFactory, który tworzył ServiceHostFactory i wykonywał wszelkie potrzebne konfiguracje. Począwszy od programu .NET Framework 4.5, program WCF zapewnia łatwiejszy sposób konfigurowania zarówno usług hostowanych samodzielnie, jak i hostowanych w internecie w kodzie. Aby uzyskać więcej informacji, zobacz Konfigurowanie usług WCF w kodzie.
Buforowanie ChannelFactory
Aplikacje klienckie WCF używają ChannelFactory<TChannel> klasy do tworzenia kanału komunikacyjnego z usługą WCF. Tworzenie ChannelFactory<TChannel> wystąpień wiąże się z pewnym obciążeniem, ponieważ obejmuje następujące operacje:
Konstruowanie ContractDescription drzewa
Odzwierciedlanie wszystkich wymaganych typów Wspólnego Typu Języka Uruchomieniowego (CLR)
Konstruowanie stosu kanałowego
Usuwanie zasobów
Aby zminimalizować to obciążenie, program WCF może buforować fabryki kanałów w przypadku korzystania z serwera proxy klienta WCF. Aby uzyskać więcej informacji, zobacz Fabryka kanałów i buforowanie.
Kompresja i koder binarny
Począwszy od WCF 4.5 koder binarny WCF dodaje obsługę kompresji. Typ kompresji jest skonfigurowany z właściwością CompressionFormat . Zarówno klient, jak i usługa muszą skonfigurować CompressionFormat właściwość . Kompresja będzie działać dla protokołów HTTP, HTTPS i TCP. Jeśli klient określa użycie kompresji, ale usługa nie obsługuje go, zgłaszany jest wyjątek protokołu wskazujący niezgodność protokołu. Aby uzyskać więcej informacji, zobacz Wybieranie kodera komunikatów.
protokół UDP
Dodano obsługę transportu UDP, który umożliwia programistom pisanie usług korzystających z komunikatów typu "wyślij i zapomnij". Klient wysyła komunikat do usługi i oczekuje braku odpowiedzi z usługi.
Obsługa wielu uwierzytelniania
Dodano obsługę wielu trybów uwierzytelniania obsługiwanych przez usługi IIS w jednym punkcie końcowym programu WCF podczas korzystania z transportu HTTP i zabezpieczeń transportu. Usługi IIS umożliwiają włączenie wielu trybów uwierzytelniania w katalogu wirtualnym. Ta funkcja umożliwia pojedynczemu punktowi końcowemu WCF obsługę wielu trybów uwierzytelniania w katalogu wirtualnym, w którym jest hostowana usługa WCF.
Obsługa sieci IDN
Dodano obsługę usług WCF z nazwami domen międzynarodowych. Aby uzyskać więcej informacji, zobacz WCF i nazwy domen międzynarodowych.
HttpClient
Dodano nową klasę o nazwie HttpClient , aby ułatwić pracę z żądaniami HTTP. Aby uzyskać więcej informacji, zobacz HttpClient i Wskazówki dotyczące korzystania z obiektu HttpClient.
Konfiguracja funkcji IntelliSense
Wartości atrybutów w plikach konfiguracji dla niestandardowych atrybutów zdefiniowanych w projekcie teraz obsługują funkcję IntelliSense, co ułatwia szybką i dokładną pracę z konfiguracjami.
Podpowiedzi konfiguracji
Elementy i atrybuty programu WCF mają teraz etykietki narzędzi w edytorze XML, aby łatwiej i dokładnie zidentyfikować cel elementu lub atrybutu.
Wklej dane jako klasy
W projekcie WCF typy danych zdefiniowane w formacie XML (takie jak uwidocznione w usłudze) mogą być wklejane bezpośrednio na stronie kodu. Typ XML zostanie wklejony jako typ CLR. Aby uzyskać więcej informacji, zobacz Generowanie klas typów danych z formatu XML .
WebServiceHost i domyślne punkty końcowe
W programie Visual Studio 2010 webServiceHost automatycznie utworzył domyślny punkt końcowy niezależnie od tego, czy jawnie określono punkt końcowy. W programie Visual Studio 2012 lub nowszym webServiceHost tworzy domyślny punkt końcowy tylko wtedy, gdy nie zostaną jawnie dodane żadne punkty końcowe. Jeśli klient oczekuje domyślnego punktu końcowego, możesz jawnie dodać punkt końcowy i wskazać go klientowi. Alternatywnie możesz poinformować usługę WCF o powrocie do poprzedniego zachowania, dodając następujące ustawienie do pliku konfiguracji aplikacji
<appSettings>
<add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/>
</appSettings>
IHttpCookieContainerManager
Ten interfejs, udostępniany przez IChannelFactory<TChannel>program , sprawia, że praca z plikami cookie po stronie klienta jest znacznie łatwiejsza. Jeśli ustawienie AllowCookies ma wartość true w powiązaniu, możesz uzyskać dostęp do plików cookie przy użyciu następującego kodu:
IHttpCookieContainerManager cookieManager = factory.GetProperty<IHttpCookieContainerManager>();
System.Net.CookieContainer container = cookieManager.CookieContainer;
Następnie możesz pobrać lub ustawić pliki cookie z pliku CookieContainer. Jeśli ustawisz AllowCookies na false, możesz ręcznie pobrać pliki cookie za pomocą OperationContext i wysłać je w innych żądaniach przy użyciu innego OperationContext lub inspektora wiadomości. Interfejs IHttpCookieContainerManager umożliwia uwierzytelnianie użytkownika za pomocą usługi i używanie pliku cookie uwierzytelniania zwróconego przez usługę w celu uwierzytelnienia się w innych usługach.