Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Toto téma popisuje některé osvědčené postupy pro hostování služeb WCF (Windows Communication Foundation).
Implementace služby WCF jako knihovny DLL nasazené do adresáře \bin webové aplikace umožňuje opakovaně používat službu mimo model webové aplikace, například v testovacím prostředí, které nemusí mít nasazené Internetová informační služba (IIS).
Nepoužívejte imperativní rozhraní API pro vlastní hostitele k vytvoření nových hostitelů služeb, kteří naslouchají síťovým přenosům, které nejsou nativně podporovány hostitelským prostředím služby IIS (například služba IIS 6.0 pro hostování služeb TCP, protože komunikace TCP není nativně podporována ve službě IIS 6.0). Tento přístup se nedoporučuje. Hostitelé služeb vytvořené imperativním způsobem nejsou v hostitelském prostředí služby IIS známi. Kritickým bodem je, že zpracování provedené imperativními vytvořenými službami se službou IIS nepočítá, když určí, jestli je hostitelský fond aplikací nečinný. Výsledkem je, že aplikace, které mají takové imperativní vytvořené hostitele služby, mají hostitelské prostředí služby IIS, které agresivně odstraňuje hostitelské procesy služby IIS.
Koncové body pro službu hostovanou službou IIS by měly být nakonfigurované pomocí relativních identifikátorů URI (Uniform Resource Identifier), nikoli absolutních adres. To zaručuje, že adresa koncového bodu spadá do sady adres URI, které patří do hostitelské aplikace, a zajišťuje, že aktivace na základě zpráv proběhne podle očekávání.
Hostitelské prostředí služby IIS je optimalizované pro služby, které neudržují místní stav v paměti. Služba IIS recykluje hostitelský proces v reakci na řadu externích a interních událostí, což způsobuje ztrátu jakéhokoli nestálého stavu uloženého výhradně v paměti. Služby hostované ve službě IIS by měly ukládat svůj stav mimo proces (například v databázi) nebo do mezipaměti v paměti, která se dá snadno znovu vytvořit, pokud dojde k recyklování aplikace.
Poznámka
Protokoly WCF používají spolehlivost a zabezpečení vrstvy zpráv, které využívají nestálý stav v paměti. Spolehlivé relace WCF a relace zabezpečení se můžou neočekávaně ukončit z důvodu recyklace aplikací. Aplikace hostované službou IIS, které používají tyto protokoly, by měly buď záviset na něčem jiném než klíč relace poskytované WCF pro korelaci stavu aplikační vrstvy (například konstruktoru aplikační vrstvy nebo vlastní hlavičky korelace), nebo zakázat recyklaci procesů IIS pro hostované aplikace.
Pro zajištění optimálního výkonu ve scénáři střední vrstvy – služba, která v reakci na příchozí zprávy volá jiné služby – vytvoří instanci klienta služby WCF do vzdálené služby jednou a znovu ji použije pro více příchozích požadavků. Vytváření instancí klientů služby WCF je náročná operace vzhledem k volání služby u již existující instance klienta a scénáře střední vrstvy vytvářejí jedinečné zvýšení výkonu díky ukládání vzdálených klientů do mezipaměti mezi požadavky. Klienti služby WCF jsou bezpečné pro přístup z více vláken, takže není nutné synchronizovat přístup k klientovi ve více vláknech.
Scénáře střední vrstvy také vytvářejí zvýšení výkonu pomocí asynchronních rozhraní API generovaných možností svcutil /a
. Tato /a
možnost způsobí, že nástroj ServiceModel Metadata Utility Tool (Svcutil.exe) vygeneruje BeginXXX/EndXXX
metody pro každou operaci služby, což umožňuje potenciálně dlouhotrvající volání vzdálených služeb na pozadí vlákna.
Služby WCF můžete nasadit ve webové farmě služby IIS, kde sada počítačů sdílí společný externí název (například http://www.contoso.com
), ale jsou jednotlivě adresovány různými názvy hostitelů (například http://www.contoso.com
mohou směrovat provoz na dva různé počítače s názvem http://machine1.internal.contoso.com
a http://machine2.internal.contoso.com
). Tento scénář nasazení je plně podporovaný službou WCF, ale vyžaduje speciální konfiguraci webu IIS, který hostuje služby WCF, aby zobrazoval správný (externí) název hostitele v metadatech služby (jazyk popisu webových služeb).
Chcete-li zajistit, aby se v metadatech služby vygeneroval správný název hostitele WCF, nakonfigurujte výchozí identitu pro web služby IIS, který je hostitelem služeb WCF, aby používal explicitní název hostitele. Například počítače, které se nacházejí ve www.contoso.com
farmě, by měly používat vazbu lokality iis *:80:www.contoso.com pro protokol HTTP a *:443:www.contoso.com pro PROTOKOL HTTPS.
Vazby webu služby IIS můžete nakonfigurovat pomocí modulu snap-in konzoly MMC (IIS Microsoft Management Console).
Pokud chcete zajistit, aby fondy aplikací spuštěné v různých kontextech uživatelů nemohly přepsat sestavení z jiných účtů ve složce dočasných souborů ASP.NET, použijte různé identity a dočasné složky pro různé aplikace. Pokud máte například dvě virtuální aplikace /Application1 a / Application2, můžete vytvořit dva fondy aplikací, A a B se dvěma různými identitami. Fond aplikací A může běžet pod jednou identitou uživatele (uživatel1), zatímco fond aplikací B může běžet pod jinou identitou uživatele (user2) a nakonfigurovat /Application1 tak, aby používal A a /Application2 pro použití B.
V souboru Web.config můžete dočasnou složku nakonfigurovat pomocí <system.web/compilation/@tempFolder>. Pro /Application1 může být "c:\tempForUser1" a pro aplikaci2 může být "c:\tempForUser2". Udělte těmto složkám odpovídající oprávnění k zápisu pro tyto dvě identity.
Uživatel2 pak nemůže změnit složku generování kódu pro /application2 (v části c:\tempForUser1).
Ve výchozím nastavení se zprávy odeslané službě WCF hostované ve službě IIS 6.0 a starší zpracovávají synchronně. ASP.NET volání WCF ve vlastním vlákně (pracovní vlákno ASP.NET) a WCF používá k zpracování požadavku další vlákno. WCF se uchovává na pracovní vlákno ASP.NET, dokud jeho zpracování nekončí. To vede k synchronnímu zpracování požadavků. Zpracování požadavků asynchronně umožňuje větší škálovatelnost, protože snižuje počet vláken potřebných ke zpracování požadavku – WCF při zpracování požadavku neudržuje vlákno ASP.NET. Použití asynchronního chování se nedoporučuje pro počítače se službou IIS 6.0, protože neexistuje způsob, jak omezovat příchozí požadavky, které otevírají server útokům DOS (Denial Of Service ). Počínaje službou IIS 7.0 byla zavedena souběžná omezení požadavků: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0]"MaxConcurrentRequestsPerCpu
. Díky tomuto novému omezení je bezpečné používat asynchronní zpracování. Ve výchozím nastavení je ve službě IIS 7.0 zaregistrovaná asynchronní obslužná rutina a modul. Pokud je tato možnost vypnutá, můžete ručně povolit asynchronní zpracování požadavků v souboru Web.config vaší aplikace. Nastavení, která používáte, závisí na vašem aspNetCompatibilityEnabled
nastavení. Pokud jste nastavili aspNetCompatibilityEnabled
false
nastavení , nakonfigurujte ho System.ServiceModel.Activation.ServiceHttpModule
, jak je znázorněno v následujícím fragmentu konfigurace.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" />
</system.serviceModel>
<system.webServer>
<modules>
<remove name="ServiceModel"/>
<add name="ServiceModel"
preCondition="integratedMode,runtimeVersionv2.0"
type="System.ServiceModel.Activation.ServiceHttpModule, System.ServiceModel,Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</modules>
</system.webServer>
Pokud jste nastavili aspNetCompatibilityEnabled
true
nastavení , nakonfigurujte ho, jak je znázorněno v následujícím fragmentu System.ServiceModel.Activation.ServiceHttpHandlerFactory
konfigurace.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
<system.webServer>
<handlers>
<clear/>
<add name="TestAsyncHttpHandler"
path="*.svc"
verb="*"
type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
</handlers>
</system.webServer>
Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Postup výuky
Spouštění aplikací vysokovýkonných výpočetních prostředí (HPC) v Azure - Training
Azure HPC je účelově sestavená cloudová funkce pro úlohy HPC a AI, která využívá špičkové procesory a interfiniBand třídy HPC, aby poskytovala nejlepší výkon, škálovatelnost a hodnotu aplikací. Azure HPC umožňuje uživatelům odhalovat inovace, produktivitu a obchodní flexibilitu prostřednictvím vysoce dostupné řady technologií HPC a AI, které se dají dynamicky přidělovat při změně obchodních a technických potřeb. Tento studijní program je řada modulů, které vám pomůžou začít pracovat s prostředím Azure HPC –