Co je nového ve WCF 4.5
Toto téma popisuje nové funkce windows Communication Foundation (WCF) verze 4.5.
gRPC jako alternativa k WCF
gRPC je moderní architektura RPC, která je oblíbenou alternativou wcf. GRPC je postaven na http/2, která poskytuje řadu výhod oproti WCF, včetně:
- Výkon: gRPC je mnohem efektivnější než WCF, zejména pro dlouhotrvající připojení.
- Škálovatelnost: GRPC je navržená tak, aby se škáluje na velký počet klientů a serverů.
- Zabezpečení: gRPC podporuje celou řadu mechanismů zabezpečení, včetně protokolu TLS a ověřování.
- Multiplatformní: gRPC je platformově neutrální a dá se použít s různými programovacími jazyky.
Další informace o vývoji nebo migraci aplikací WCF do gRPC najdete tady:
Funkce zjednodušení WCF
Hodně práce bylo provedeno, aby aplikace WCF 4.5 usnadnit vývoj a údržbu. Další informace najdete v tématu Funkce zjednodušení WCF.
Podpora asynchronní synchronizace na základě úloh
Ve výchozím nastavení funkce Add Service Reference generuje metody asynchronní operace služby vracející úlohy. To se provádí pro synchronní i asynchronní metody. To umožňuje volat operace služby asynchronně pomocí nového programovacího modelu založeného na úlohách. Když zavoláte vygenerovanou metodu proxy, WCF vytvoří objekt Task, který představuje asynchronní operaci a vrátí tuto úlohu vám. Úloha se dokončí po dokončení operace. Při implementaci asynchronní operace ji můžete implementovat jako asynchronní operaci založenou na úlohách. Další informace naleznete v tématu Synchronní a asynchronní operace.
Zjednodušené generované konfigurační soubory
Když v sadě Visual Studio přidáte odkaz na službu nebo použijete nástroj SvcUtil.exe, vygeneruje se konfigurační soubor klienta. V předchozích verzích WCF tyto konfigurační soubory obsahovaly hodnotu každé vlastnosti vazby, i když její hodnota je výchozí hodnota. Ve WCF 4.5 generované konfigurační soubory obsahují pouze vlastnosti vazby, které jsou nastaveny na ne-výchozí hodnotu.
Další informace najdete v tématu Funkce zjednodušení WCF.
Contract-First Development
WCF teď podporuje vývoj založený na kontraktech. Svcutil.exe má přepínač /serviceContract, který umožňuje generovat služby a datové kontrakty z dokumentu WSDL.
Přidání odkazu na službu z přenosného podmnožina projektu
Přenosné projekty podmnožina umožňují programátorům sestavení .NET udržovat jeden zdrojový strom a systém sestavení a současně podporovat více platforem .NET (desktop, Silverlight, Windows Telefon a Xbox). Přenosné projekty podmnožina odkazují pouze na přenosné knihovny .NET, které jsou sestavení, která lze použít na libovolné platformě .NET. Prostředí pro vývojáře je stejné jako přidání odkazu na službu v jakékoli jiné klientské aplikaci WCF. Další informace naleznete v tématu Přidání odkazu na službu v přenosném podmnožině projektu.
Výchozí změna režimu kompatibility ASP.NET
WCF poskytuje ASP.NET režim kompatibility, který vývojářům umožňuje úplný přístup k funkcím v kanálu ASP.NET HTTP při psaní služeb WCF. Chcete-li použít tento režim, je nutné nastavit aspNetCompatibilityEnabled
atribut na hodnotu true v <části serviceHostingEnvironment> web.config. Kromě toho každá služba v této appDomain musí mít RequirementsMode
vlastnost nastavena na AspNetCompatibilityRequirementsAttributeAllowed nebo Required. Ve výchozím nastavení AspNetCompatibilityRequirementsAttribute je nyní nastavena na Allowedhodnotu . Další informace najdete v tématu Služby WCF a ASP.NET.
Nové výchozí hodnoty přenosu
Kvůli zjednodušení konfigurace došlo ke změně řady výchozích hodnot transportních vlastností. Další informace najdete v tématu Funkce zjednodušení WCF.
XmlDictionaryReaderQuotas
XmlDictionaryReaderQuotas obsahuje konfigurovatelné hodnoty kvót pro čtečky slovníku XML, které omezují množství paměti využívané kodérem při vytváření zprávy. I když jsou tyto kvóty konfigurovatelné, výchozí hodnoty se změnily tak, aby se snížila možnost, že je vývojář bude muset explicitně nastavit. Další informace najdete v tématu Funkce zjednodušení WCF.
Ověřování konfigurace WCF
V rámci procesu sestavení v sadě Visual Studio se konfigurační soubory WCF nyní ověřují pro atributy definované v rámci projektu. V sadě Visual Studio se zobrazí seznam chyb nebo upozornění ověření, pokud se ověření nezdaří.
Popisy editoru XML
Editor XML sady Visual Studio teď poskytuje popisy pro každý element konfigurace a jeho vlastnosti, které jsou součástí konfiguračního souboru služby.
Vylepšení streamování
Byla přidána podpora skutečného asynchronního streamování, kde teď strana odeslání neblokuje vlákna v případě, že na straně příjmu není čtení nebo pomalé čtení, čímž se zvyšuje škálovatelnost. Odebrání omezení ukládání zpráv do vyrovnávací paměti, když klient odešle streamovanou zprávu službě WCF hostované službě IIS. Další informace najdete v tématu Funkce zjednodušení WCF.
Zjednodušení zveřejnění koncového bodu přes PROTOKOL HTTPS se službou IIS
Bylo přidáno mapování protokolu HTTPS, které zjednodušilo zveřejnění koncového bodu přes PROTOKOL HTTPS. Pokud chcete povolit koncový bod HTTPS, ujistěte se, že váš web má nakonfigurovanou vazbu HTTPS a certifikát SSL, a pak jednoduše povolte HTTPS pro virtuální adresář, který je hostitelem služby. Pokud je pro službu povolená metadata, zobrazí se také prostřednictvím protokolu HTTPS.
Generování jednoho dokumentu WSDL
Některé zásobníky zpracování WSDL třetích stran nemůžou zpracovávat dokumenty WSDL, které mají závislosti na jiných dokumentech prostřednictvím xsd:import. WCF teď umožňuje určit, že se všechny informace WSDL vrátí v jednom dokumentu. Pokud chcete požádat o jeden dokument WSDL, připojte k identifikátoru URI "?singleWSDL" při vyžádání metadat ze služby.
Podpora protokolu WebSocket
WebSockets je technologie, která poskytuje skutečnou obousměrnou komunikaci přes porty 80 a 443 s charakteristikou výkonu podobnou protokolu TCP. Byly přidány dvě nové vazby pro podporu komunikace přes přenos WebSocket. NetHttpBinding a NetHttpsBinding. Další informace naleznete v tématu: Systémové vazby.
Nové výchozí hodnoty přenosu
Následující tabulka popisuje nastavení, která se změnila a kde najít další informace.
Vlastnost | Zapnout | Nové výchozí | Další informace najdete v tématu |
---|---|---|---|
channelInitializationTimeout | NetTcpBinding | 30 sekund | ChannelInitializationTimeout |
listenBacklog | NetTcpBinding | 12 * počet procesorů | ListenBacklog |
maxPendingAccepts | ConnectionOrientedTransportBindingElement SMSvcHost.exe |
2 * počet procesorů pro přepravu 4 * počet procesorů pro SMSvcHost.exe |
MaxPendingAcceptsKonfigurace služby sdílení portů Net.TCP |
maxPending Připojení ions | ConnectionOrientedTransportBindingElement | 12 * počet procesorů | MaxPendingConnections |
receiveTimeout | SMSvcHost.exe | 30 sekund | Konfigurace služby sdílení portů Net.TCP |
Konfigurace služeb WCF v kódu
Windows Communication Foundation (WCF) umožňuje vývojářům konfigurovat služby pomocí konfiguračních souborů nebo kódu. Konfigurační soubory jsou užitečné, když je potřeba nakonfigurovat službu po nasazení. Při použití konfiguračních souborů potřebuje IT specialista pouze aktualizovat konfigurační soubor, nevyžaduje se žádná rekompilace. Konfigurační soubory ale můžou být složité a obtížně udržovatelné. Na konfigurační soubory a elementy konfigurace ladění se odkazují názvy, které vytváření konfiguračních souborů znesnadňuje a ztěžuje. WCF také umožňuje konfigurovat služby v kódu. Ve starších verzích WCF (4.0 a starších) konfigurace služeb v kódu byla snadná ve scénářích v místním prostředí, ServiceHost třída vám umožnila konfigurovat koncové body a chování před voláním ServiceHost.Open. Ve scénářích hostovaných na webu ale nemáte přístup ke ServiceHost třídě. Pokud chcete nakonfigurovat službu hostované na webu, museli jste vytvořit System.ServiceModel.ServiceHostFactory
vytvořenou ServiceHostFactory službu, kterou jste provedli a provedli jakoukoli potřebnou konfiguraci. Od rozhraní .NET Framework 4.5 poskytuje WCF jednodušší způsob, jak nakonfigurovat služby hostované v kódu i služby hostované na webu. Další informace naleznete v tématu Konfigurace služeb WCF v kódu.
Ukládání do mezipaměti ChannelFactory
Klientské aplikace WCF používají ChannelFactory<TChannel> třídu k vytvoření komunikačního kanálu se službou WCF. Vytváření ChannelFactory<TChannel> instancí způsobuje určité režijní náklady, protože zahrnuje následující operace:
ContractDescription Vytvoření stromu
Reflexe všech požadovaných typů CLR
Vytvoření zásobníku kanálů
Disposing of resources
Kvůli minimalizaci této režie může WCF ukládat objekty pro vytváření kanálů do mezipaměti při použití proxy klienta WCF. Další informace najdete v tématu Channel Factory a Ukládání do mezipaměti.
Komprese a binární kodér
Počínaje WCF 4.5 binární kodér WCF přidává podporu komprese. Typ komprese je nakonfigurován s CompressionFormat vlastností. Klient i služba musí vlastnost nakonfigurovat CompressionFormat . Komprese bude fungovat pro protokoly HTTP, HTTPS a TCP. Pokud klient určí použití komprese, ale služba ji nepodporuje, vyvolá se výjimka protokolu, která značí neshodu protokolu. Další informace najdete v tématu Volba kodéru zpráv.
UDP
Byla přidána podpora přenosu UDP, která vývojářům umožňuje psát služby, které používají zasílání zpráv "fire and forget". Klient odešle do služby zprávu a neočekává od služby žádnou odpověď.
Podpora více ověřování
Byla přidána podpora pro podporu více režimů ověřování, jak podporuje služba IIS, na jednom koncovém bodu WCF při použití přenosu HTTP a zabezpečení přenosu. Služba IIS umožňuje povolit více režimů ověřování ve virtuálním adresáři. Tato funkce umožňuje jednomu koncovému bodu WCF podporovat více režimů ověřování povolených pro virtuální adresář, kde je služba WCF hostovaná.
Podpora IDN
Byla přidána podpora umožňující služby WCF s internationalizovanými názvy domén. Další informace naleznete v tématu WCF a Internationalized Domain Names.
HttpClient
Byla přidána nová třída, HttpClient která usnadňuje práci s požadavky HTTP. Další informace najdete v tématu HttpClient a pokyny pro použití HttpClient.
Konfigurace IntelliSense
Hodnoty atributů v konfiguračních souborech pro vlastní atributy definované v projektu teď podporují technologii IntelliSense, aby se usnadnila rychlá a přesná práce s konfiguracemi.
Popisy konfigurace
Prvky a atributy WCF teď obsahují popisy v editoru XML, aby bylo možné snadněji a přesněji identifikovat účel elementu nebo atributu.
Vložit data jako třídy
V projektu WCF je možné datové typy definované v jazyce XML (jako jsou vystavené ve službě) vložit přímo do znakové stránky. Typ XML se vloží jako typ CLR. Další podrobnosti najdete v tématu Generování tříd datových typů z XML .
WebServiceHost a výchozí koncové body
V sadě Visual Studio 2010 webServiceHost automaticky vytvořil výchozí koncový bod bez ohledu na to, jestli jste explicitně zadali koncový bod. V sadě Visual Studio 2012 a novější webServiceHost vytvoří výchozí koncový bod pouze v případě, že nejsou explicitně přidány žádné koncové body. Pokud váš klient očekává výchozí koncový bod, můžete explicitně přidat koncový bod a nasměrovat na něj klienta. Případně můžete wcf říct, aby se vrátil k předchozímu chování přidáním následujícího nastavení do konfiguračního souboru aplikace.
<appSettings>
<add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/>
</appSettings>
IHttpCookieContainerManager
Toto rozhraní, které je vystaveno IChannelFactory<TChannel>, usnadňuje práci se soubory cookie na straně klienta. Pokud je vlastnost AllowCookies pro vazbu nastavena na hodnotu true, můžete k souborům cookie přistupovat pomocí následujícího kódu:
IHttpCookieContainerManager cookieManager = factory.GetProperty<IHttpCookieContainerManager>();
System.Net.CookieContainer container = cookieManager.CookieContainer;
Soubory cookie pak můžete načíst nebo nastavit z souboru CookieContainer. Pokud je vlastnost AllowCookies nastavená na hodnotu false, můžete soubory cookie ručně načíst a OperationContext odeslat v jiných požadavcích pomocí jiného OperationContext inspektoru zpráv. Rozhraní IHttpCookieContainerManager umožňuje ověřit uživatele ve službě a použít ověřovací soubor cookie vrácený danou službou k ověření s jinými službami.