Az interakció a szolgáltatások révén a mag, a Microsoft docs

Ebben a cikkben,

ASP.NET Core - ez egy új cross-platform közegben nyílt forráskódú szoftvert létrehozni egy modern felhő alkalmazások csatlakozik az internetre, mint például a web-alapú alkalmazások számára a tárgyak internete alkalmazások és szerver oldali mobil alkalmazások.

Starter Guide to ASP.NET alapszolgáltatás Fabric és konfigurációs utasításokat lásd a fejlesztési környezet. Lásd létrehozása külső webes felületének alkalmazása segítségével ASP.NET Core.

ASP.NET alapszolgáltatás Fabric a környezetben

Bár ASP.NET Core alkalmazások futtathatók a .NET Core vagy teljes változata a .NET Framework, Szerviz Fabric jelenleg munka csak a teljes verzió a .NET-keretrendszer. Ez azt jelenti, hogy amikor létrehoz egy szolgáltatás ASP.NET alapszolgáltatás Fabric továbbra is szükség van, hogy összpontosítson a teljes változata a .NET-keretrendszer.

ASP.NET Core lehet használni kétféleképpen a Szolgáltatás Fabric:

  • Hozzá, mint vendég a futtatható fájlt. Ez főleg futni a meglévő alkalmazások ASP.NET alapszolgáltatás Fabric módosítása nélkül a kódot.
  • Végezze belsejében megbízható szolgáltatást. Ez jobb integrációt futásidejű szolgáltatás szövet és lehetővé teszi, hogy ASP.NET Core állapottartók.

A többi ezt a cikk bemutatja, hogyan kell használni az ASP.NET Core belül megbízható szolgáltatás ASP.NET integrációs összetevők, hogy a hajó az SDK for Service szövet.

Elhelyezés Szerviz Fabric

A Szolgáltató Fabric egy vagy több példányban és (vagy) szolgáltatás fut a replika gazdafolyamata szolgáltatás - egy futtatható fájl, amely végrehajtja a szerviz kódot. Creator szolgáltatás tartozik a fogadó folyamat szolgáltatás szolgáltató Fabric aktiválja és a monitorok.

Jellemzően, ASP.NET (MVC 5) szorosan kapcsolódik az IIS keresztül SYSTEM.WEB.DLL. ASP.NET Core közös web szerver és webes alkalmazás. Ez lehetővé teszi, hogy vándorol egy webes alkalmazás különböző webszerverek, valamint lehetővé teszi a webes kiszolgálók függetlenül található. Ez azt jelenti, hogy lehet futtatni egy webszerver a saját folyamatát, ellentétben a folyamat, amelyik egy dedikált web szerver szoftver, mint például az IIS.

Kombinálni Szerviz szövet és ASP.NET Megbízható szolgáltatás, vagy a vendég a futtatható alkalmazás, meg kell futtatni az ASP.NET folyamat a host szolgáltatást. ASP.NET Core önálló szállást lehetővé teszi.

ASP.NET Core szállást megbízható szolgáltatás

Jellemzően önállóan elhelyezett ASP.NET alkalmazás Core létre webhoszt az alkalmazás belépési pontja, például static void Main () metódust Program.cs. Ebben az esetben a webhoszting életciklus kapcsolódik az életciklus folyamat.

alkalmazás belépési pont nem alkalmas arra, hogy hozzon létre webhost a megbízható szolgáltatás, hiszen csak akkor kell használni a szolgáltatások, mint a regisztráció, a futási környezet megbízható szolgáltatás, hogy képes létrehozni az esetekben az ilyen típusú szolgáltatás. Webhost létrehozandó megbízható szolgáltatás automatikusan. A fogadó folyamat szolgáltatási példányt a szolgáltatás és (vagy) másolatai is eltarthat életciklusa.

Megbízható szolgáltatás Bíróság prezentálni a szolgáltatás osztály, amely származó vagy StatelessService StatefulService. kommunikációs stack szolgáltatás tartalmazza a megvalósítás ICommunicationListener szolgáltatás osztály. Csomagok NuGet Microsoft.ServiceFabric.Services.AspNetCore. * Tartalmaz végrehajtás ICommunicationListener. aki fut és kezeli ASP.NET Core webhoszt a Kestrel vagy WebListener a megbízható szolgáltatás.

Az interakció a szolgáltatások révén a mag, a Microsoft docs

ICommunicationListener tárgyak ASP.NET Core

Megvalósítás ICommunicationListener Kestrel és WebListener csomagolásban NuGet Microsoft.ServiceFabric.Services.AspNetCore. * Van hasonló használati szokások, de végre különböző műveleteket minden webszerver.

Mindkét hallgató kommunikáció olyan kivitelező, hogy azon a következő érveket:

Middleware integrálása Service Fabric

Ennek oka az a téves azonosítás

Ez időnként hibákat okozhat, amit nehéz diagnosztizálni.

Ennek elkerülése érdekében, hogy a szolgáltatás helyezze a végpont a szolgáltatás neve, egy egyedi azonosítóval, majd nézd meg a feldolgozás során az ügyfél kéri. Ez az együttes fellépés szolgáltatások közötti megbízható környezetbarát ügyfél. Ez nem biztonságos hitelesítési ellenőrzésre szolgáltatás egy ellenséges kliens környezetben.

Szolgáltatások, amelyek dinamikusan hozzárendelt port kell használni ezt a köztes.

Services segítségével az állandó egyedi port, nem kell ezt a problémát egy közös környezetben. Állandó egyedi port általánosan használt külső szolgáltatások, amelyek megkövetelik a jól ismert port csatlakozó kliens alkalmazások. Például a legtöbb webes alkalmazások hozzáférését az internethez 80-as portot, vagy a 443-as böngésző kapcsolatokat. Ebben az esetben nem tartalmaznak egy egyedi azonosítót.

Az alábbi ábra mutatja a kérelmet flow engedélyezve middleware.

Az interakció a szolgáltatások révén a mag, a Microsoft docs

WebListener Megbízható Szolgáltatások

WebListener használhatja megbízható szolgáltatás, importáló csomag NuGet Microsoft.ServiceFabric.AspNetCore.WebListener. Ez a csomag tartalmazza WebListenerCommunicationListener. végrehajtás ICommunicationListener. amely lehetővé teszi, hogy webhost ASP.NET Core belül megbízható szolgáltatás útján WebListener a webszerver.

Az alábbi ábra azt mutatja, hogyan kell használni WebListener HTTP.sys kernel driver Windows megosztásához portok:

Az interakció a szolgáltatások révén a mag, a Microsoft docs

WebListener szolgáltatás nélkül követési állapot

WebListener felhasználásra állapotának ellenőrzését a szolgáltatás nélkül felülírás CreateServiceInstanceListeners eljárás és visszaút WebListenerCommunicationListener például:

WebListener szolgáltatás stateful

Beállítás végpont

Arra is szükség van, hogy adja át a végpont-i név közé WebListenerCommunicationListener tervezők.

Használata WebListener statikus port

Ahhoz, hogy egy statikus portot WebListener, adja meg a port számát a végpont konfiguráció.

Használata WebListener dinamikus port

Ahhoz, hogy használni egy dinamikusan hozzárendelt port WebListener, kisebb ingatlan Port Endpoint konfigurációban.

Kestrel Megbízható szolgáltatások

Kestrel lehet használni megbízható szolgáltatás, importáló csomag NuGet Microsoft.ServiceFabric.AspNetCore.Kestrel. Ez a csomag tartalmazza KestrelCommunicationListener. végrehajtás ICommunicationListener. amely lehetővé teszi, hogy webhost ASP.NET Core belül megbízható szolgáltatás használatával Kestrel egy webszervert.

Kestrel - ez cross-platform web szerver ASP.NET alapú Core libuv, cross-platform könyvtárának aszinkron IO. Ellentétben WebListener, Kestrel nem használ egy központi vezérlő végpontok mint például HTTP.sys. és nem támogatja a megosztás a kikötő között több folyamat. Kestrel minden esetben kell használni egy egyedi portot.

Az interakció a szolgáltatások révén a mag, a Microsoft docs

Kestrel szolgáltatás nélkül követési állapot

Ahhoz, hogy a Kestrel a szolgáltatást anélkül követési állapot CreateServiceInstanceListeners újra a módszert, és visszatér KestrelCommunicationListener például:

Kestrel szolgáltatás stateful

Ahhoz, hogy a Kestrel szolgálatában stateful felülírás eljárás CreateServiceReplicaListeners és visszaút KestrelCommunicationListener például:

Ebben a példában, az egyedüli például IReliableStateManager előírt webhost függőségi injekciós tartályba. Ez nem kötelező, de lehet használni IReliableStateManager és megbízható gyűjtemény MVC vezérlő tevékenységének módszerekkel.

Megjegyezzük, hogy a végpont konfiguráció neve nem érhető el a szolgáltatás KestrelCommunicationListener állapottartók. Ezt részletesebben a következő fejezetben.

Beállítás végpont

Ahhoz, hogy a Kestrel Végpont konfiguráció szükséges.

Egy statikus port, és Kestrel

Akkor kell állítani egy statikus portkonfiguráció Endpoint ServiceManifest.xml fájl használható a Kestrel. Bár ez nem kötelező, ez ad két potenciális előnyök:

Ha Endpoint állítva, az ő neve kell átadni a kivitelező KestrelCommunicationListener.

Ha Endpoint konfiguráció nem használják, nem adja meg a végpontot nevét a kivitelező KestrelCommunicationListener. Ebben az esetben a dinamikus port fogja használni. Ez a folyamat leírása a következő részben.

Egy dinamikus port, és Kestrel

Kestrel nem tudja használni az automatikus porthozzárendelésének Végpont konfigurációs fájl ServiceManifest.xml automatikus porthozzárendelésének Végpont konfiguráció hozzárendel egy egyedi portot minden fogadó folyamat. Ennek eredményeként, a fogadó folyamat tartalmazhat több példányban Kestrel. Mivel Kestrel nem támogatja a megosztását port, akkor nem fog működni, mert minden egyes esetben Kestrel kell nyitni egy egyedi portot.

Ahhoz, hogy használni a dinamikus port hozzárendelésének a Kestrel, teljesen elég ahhoz, hogy csökkentse Végpont konfiguráció ServiceManifest.xml fájlban vagy át a végpont név közé KestrelCommunicationListener tervezője.

Ebben a konfigurációban KestrelCommunicationListener automatikusan válasszon egy használaton kívüli portot között az alkalmazásokat.

Szkriptek és konfiguráció

  • kívülről hozzáférhető ASP.NET alapszolgáltatás nélkül követési állapot
  • ASP.NET alapszolgáltatás nélkül követési állapot csak belső használatra
  • ASP.NET alapszolgáltatás stateful csak belső használatra

Kívülről hozzáférhető szolgáltatás a végpont kívül rendelkezésre álló klaszter, általában egy terheléselosztó.

Szolgáltatás kizárólag belső használatra - egy olyan szolgáltatás végpont, amelyet csak a klaszteren belül.

Végpontok szolgáltatás stateful nem kell tenni az interneten. A klaszterek, amelyek mögött a terhelés kiegyenlítő, amely nem támogatja a felbontást Service Fabric Services (például Azure Load kiegyensúlyozó), nem lesz képes a szolgáltatások és állapotmegőrző mert a terhelés kiegyenlítő nem lenne képes felismerni és irányítsa a forgalmat a megfelelő replika szolgáltatás állapottartók.

Kívülről elérhető ASP.NET alapszolgáltatás nélkül követési állapot

Jelenleg Kestrel nem támogatott szegélynek szerver (Internet hozzáférés). A forgalom kezelésére az internetről kell használni reverse proxy szerver, mint például az IIS vagy nginx.