Helyszíni WCF-szolgáltatás elérhetővététele egy felhőbeli webalkalmazás számára az Azure Relay használatával
Ez a cikk azt mutatja be, hogyan készíthet felhőbeli hibridalkalmazást a Microsoft Azure és a Visual Studio használatával. Létrehozhat egy alkalmazást, amely több Azure-erőforrást használ a felhőben. Ez az oktatóanyag a következőket ismerteti:
- Meglévő webszolgáltatás létrehozása vagy alakítása a használathoz egy webes megoldással.
- Az Azure Windows Communication Foundation (WCF) Relay szolgáltatás használata adatok megosztására egy Azure-alkalmazás és egy máshol üzemeltetett webszolgáltatás között.
Ebben az oktatóanyagban a következő feladatokat hajtja végre:
- Az oktatóanyag előfeltételeinek telepítése.
- Tekintse át a forgatókönyvet.
- Hozzon létre egy névteret.
- Hozzon létre egy helyszíni kiszolgálót.
- Hozzon létre egy ASP .NET-alkalmazást.
- Futtassa helyben az alkalmazást.
- A webalkalmazás üzembe helyezése az Azure-ban.
- Futtassa az alkalmazást az Azure-ban.
Előfeltételek
Az oktatóanyag teljesítéséhez a következő előfeltételekre lesz szüksége:
- Azure-előfizetés. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot, mielőtt hozzákezd.
- Visual Studio 2015 vagy újabb. Az oktatóanyagban szereplő példák a Visual Studio 2019-et használják.
- Azure SDK for .NET. Telepítse az SDK letöltési oldaláról.
Hogyan segít az Azure Relay a hibrid megoldások terén?
Az üzleti megoldások általában egyéni kód és meglévő funkciók kombinációjából állnak. Az egyéni kód az új és egyedi üzleti követelményeket kezeli. A már meglévő megoldások és rendszerek biztosítják a meglévő funkciókat.
A megoldások tervezői elkezdték a felhőt használni a méretezési követelmények egyszerűbb kezelése és az alacsonyabb működési költségek érdekében. Ennek során azt tapasztalják, hogy a megoldásuk építőelemeiként használni kívánt meglévő szolgáltatásegységek a vállalati tűzfalon belül vannak, és a felhőmegoldás könnyen elérhető. Számos belső szolgáltatás nem úgy van felépítve vagy üzemeltetve, hogy könnyen elérhető legyen a vállalati hálózat peremhálózatán.
Az Azure Relay a meglévő WCF-webszolgáltatásokat veszi igénybe, és biztonságosan elérhetővé teszi ezeket a szolgáltatásokat a vállalati peremhálózaton kívül eső megoldások számára anélkül, hogy a vállalati hálózati infrastruktúrában tolakodó módosításokat kellene végrehajtania. Ezek a Relay-szolgáltatások továbbra is a meglévő környezeten belül vannak tárolva, de átadják a bejövő munkamenetek és a kérések figyelését a felhőn tárolt Relay-szolgáltatásnak. Az Azure Relay ezeket a szolgáltatásokat közös hozzáférésű jogosultságkód- (SAS-) hitelesítéssel a jogosulatlan hozzáféréssel szemben is védi.
A forgatókönyv áttekintése
Ebben az oktatóanyagban egy ASP.NET webhelyet hoz létre, amely lehetővé teszi a termékek listáját a termékleltár oldalán.
Az oktatóanyag feltételezi, hogy egy meglévő helyi rendszeren elérhetők a termékek adatai, és hogy az Azure Relay közvetítőn keresztül éri el ezt a rendszert. Ezt a helyzetet egy egyszerű konzolalkalmazásban futó webszolgáltatás szimulálja. Egy memóriabeli termékkészletet tartalmaz. Ezt a konzolalkalmazást a saját számítógépén futtathatja, és üzembe helyezheti a webes szerepkört az Azure-ban. Ezzel láthatja, hogy az Azure-adatközpontban futó webes szerepkör hogyan hívja meg a számítógépet. Ez a hívás akkor is megtörténik, ha a számítógép szinte biztosan egy tűzfal és egy hálózati címfordítási (NAT) réteg mögött lesz.
A fejlesztési környezet kialakítása
Az Azure-alkalmazások fejlesztésének megkezdése előtt töltse le az eszközöket és állítsa be a fejlesztési környezetet:
- Telepítse az Azure SDK for .NET-et az SDK letöltési oldaláról.
- A .NET oszlopban válassza ki a Visual Studio használt verzióját. Ez az oktatóanyag a Visual Studio 2019-et használja.
- Amikor a rendszer a telepítő futtatására vagy mentésére kéri, válassza a Futtatás lehetőséget.
- A Webplatform-telepítő párbeszédpanelen válassza a Telepítés lehetőséget, és folytassa a telepítést.
Miután a telepítés befejeződött, minden szükséges rendelkezésére áll az alkalmazás fejlesztésének megkezdéséhez. Az SDK olyan eszközöket tartalmaz, amelyekkel könnyedén fejleszthet Azure-alkalmazásokat a Visual Studióban.
Névtér létrehozása
Az első lépés egy névtér létrehozása és egy közös hozzáférésű jogosultságkód (SAS) kulcs beszerzése. A névtér alkalmazáshatárt biztosít a továbbító szolgáltatáson keresztül közzétett összes alkalmazáshoz. A rendszer automatikusan létrehoz egy SAS-kulcsot egy szolgáltatásnévtér létrehozásakor. A szolgáltatásnévtér és az SAS-kulcs kombinációja biztosítja az Azure hitelesítő adatait az alkalmazáshoz való hozzáférés hitelesítéséhez.
Jelentkezzen be az Azure Portalra.
Válassza az Összes szolgáltatás lehetőséget a bal oldali menüben. Válassza az Integráció lehetőséget, keresse meg a Továbbítókat, vigye az egeret a Továbbítók fölé, majd válassza a Létrehozás lehetőséget.
A Névtér létrehozása lapon kövesse az alábbi lépéseket:
Válasszon egy Azure-előfizetést, amelyben létre szeretné hozni a névteret.
Erőforráscsoport esetén válasszon ki egy meglévő erőforráscsoportot, amelyben elhelyezi a névteret, vagy hozzon létre egy újat.
Adja meg a Relay névtér nevét.
Válassza ki azt a régiót, amelyben a névteret üzemeltetni kell.
Válassza a Véleményezés + létrehozás lehetőséget a lap alján.
A Véleményezés + létrehozás lapon válassza a Létrehozás lehetőséget.
Néhány perc múlva megjelenik a névtér Relay lapja.
Felügyeleti hitelesítő adatok lekérése
A Relay lapon válassza a megosztott hozzáférési szabályzatokat a bal oldali menüben. `
A Megosztott hozzáférési szabályzatok lapon válassza a RootManageSharedAccessKey lehetőséget.
Az SAS-szabályzat: RootManageSharedAccessKey területen válassza a Másolás gombot az elsődleges Csatlakozás ion-sztring mellett. Ez a művelet a vágólapra másolja a kapcsolati sztring későbbi használatra. Illessze be ezt az értéket a Jegyzettömbbe vagy egy másik ideiglenes helyre.
A későbbi használat érdekében ismételje meg az előző lépést, és másolja ki és illessze be az Elsődleges kulcs értékét egy ideiglenes helyre.
Helyszíni kiszolgáló létrehozása
Először egy szimulált helyszíni termékkatalógus-rendszert kell létrehoznia. Ez a projekt egy Visual Studio-konzolalkalmazás, és az Azure Service Bus NuGet-csomagot használja a Service Bus-kódtárak és konfigurációs beállítások belefoglalása érdekében.
Indítsa el a Microsoft Visual Studiót rendszergazdaként. Ehhez kattintson a jobb gombbal a Visual Studio program ikonra, és válassza a Futtatás rendszergazdaként lehetőséget.
A Visual Studióban válassza az Új projekt létrehozása lehetőséget.
Az Új projekt létrehozása területen válassza a C# konzolalkalmazását (.NET-keretrendszer), és válassza a Tovább lehetőséget.
Nevezze el a projekt ProductsServer nevét , és válassza a Létrehozás lehetőséget.
A Megoldáskezelő kattintson a jobb gombbal a ProductsServer projektre, majd válassza a NuGet-csomagok kezelése lehetőséget.
Válassza a Tallózás lehetőséget, majd keresse meg és válassza a WindowsAzure.ServiceBus lehetőséget. Válassza a Telepítés lehetőséget, és fogadja el a használati feltételeket.
A szükséges ügyfélszerelvényekre a rendszer most hivatkozik.
Adjon egy új osztályt a termékszerződéshez. A Megoldáskezelő kattintson a jobb gombbal a ProductsServer projektre, és válassza az Osztály hozzáadása lehetőséget>.
A Név mezőbe írja be a ProductsContract.cs nevet, és válassza a Hozzáadás lehetőséget.
Végezze el a következő kódmódosításokat a megoldáson:
A ProductsContract.cs fájlban cserélje le a névtér definícióját a következő kódra, amely meghatározza a szolgáltatás szerződését.
namespace ProductsServer { using System.Collections.Generic; using System.Runtime.Serialization; using System.ServiceModel; // Define the data contract for the service [DataContract] // Declare the serializable properties. public class ProductData { [DataMember] public string Id { get; set; } [DataMember] public string Name { get; set; } [DataMember] public string Quantity { get; set; } } // Define the service contract. [ServiceContract] interface IProducts { [OperationContract] IList<ProductData> GetProducts(); } interface IProductsChannel : IProducts, IClientChannel { } }
A Program.cs fájlban cserélje le a névtérdefiníciót a következő kódra, amely hozzáadja a profilszolgáltatást és annak gazdagépét.
namespace ProductsServer { using System; using System.Linq; using System.Collections.Generic; using System.ServiceModel; // Implement the IProducts interface. class ProductsService : IProducts { // Populate array of products for display on website ProductData[] products = new [] { new ProductData{ Id = "1", Name = "Rock", Quantity = "1"}, new ProductData{ Id = "2", Name = "Paper", Quantity = "3"}, new ProductData{ Id = "3", Name = "Scissors", Quantity = "5"}, new ProductData{ Id = "4", Name = "Well", Quantity = "2500"}, }; // Display a message in the service console application // when the list of products is retrieved. public IList<ProductData> GetProducts() { Console.WriteLine("GetProducts called."); return products; } } class Program { // Define the Main() function in the service application. static void Main(string[] args) { var sh = new ServiceHost(typeof(ProductsService)); sh.Open(); Console.WriteLine("Press ENTER to close"); Console.ReadLine(); sh.Close(); } } }
A Megoldáskezelő kattintson duplán az App.config elemre a fájl Visual Studio-szerkesztőben való megnyitásához. Az elem alján
<system.ServiceModel>
, de még mindig belül<system.ServiceModel>
adja hozzá a következő XML-kódot.Fontos
Cserélje le
yourServiceNamespace
a névtér nevére ésyourKey
a portálról korábban lekért SAS-kulcsra:<services> <service name="ProductsServer.ProductsService"> <endpoint address="sb://yourServiceNamespace.servicebus.windows.net/products" binding="netTcpRelayBinding" contract="ProductsServer.IProducts" behaviorConfiguration="products"/> </service> </services> <behaviors> <endpointBehaviors> <behavior name="products"> <transportClientEndpointBehavior> <tokenProvider> <sharedAccessSignature keyName="RootManageSharedAccessKey" key="yourKey" /> </tokenProvider> </transportClientEndpointBehavior> </behavior> </endpointBehaviors> </behaviors>
Megjegyzés:
Az okozott
transportClientEndpointBehavior
hiba csak figyelmeztetés, és nem blokkoló probléma ebben a példában.Továbbra is az App.config elemben
<appSettings>
cserélje le a kapcsolati sztring értéket a portálról korábban beszerzett kapcsolati sztring.<appSettings> <!-- Service Bus specific app settings for messaging connections --> <add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://yourNamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=yourKey"/> </appSettings>
Válassza a Ctrl+Shift+B billentyűkombinációt, vagy válassza a Build Solution (Build solution)>lehetőséget az alkalmazás létrehozásához és az eddigi munka pontosságának ellenőrzéséhez.
ASP.NET-alkalmazás létrehozása
Ebben a szakaszban egy egyszerű ASP.NET alkalmazást hoz létre, amely megjeleníti a termékszolgáltatásból lekért adatokat.
A projekt létrehozása
Győződjön meg arról, hogy a Visual Studio rendszergazdaként fut.
A Visual Studióban válassza az Új projekt létrehozása lehetőséget.
Új projekt létrehozásakor válassza a C# ASP.NET webalkalmazását (.NET-keretrendszer), és válassza a Tovább lehetőséget.
Nevezze el a projekt ProductsPortal nevét, és válassza a Létrehozás lehetőséget.
Az Új ASP.NET webalkalmazás létrehozása területen válassza az MVC lehetőséget, és válassza a Módosítás lehetőséget a Hitelesítés területen.
A Hitelesítés módosítása területen válassza a Nincs hitelesítés lehetőséget, majd kattintson az OK gombra. Ebben az oktatóanyagban egy olyan alkalmazást helyez üzembe, amelybe nem kell bejelentkeznie egy felhasználónak.
Az Új ASP.NET webalkalmazás létrehozása területen válassza a Létrehozás lehetőséget az MVC-alkalmazás létrehozásához.
Azure-erőforrások konfigurálása új webalkalmazáshoz. Kövesse a webalkalmazás közzétételének lépéseit. Ezután térjen vissza ehhez az oktatóanyaghoz, és folytassa a következő lépésben.
A Megoldáskezelő kattintson a jobb gombbal a Modellek elemre, majd válassza az Osztály hozzáadása lehetőséget>.
Nevezze el a Product.cs osztályt, majd válassza a Hozzáadás lehetőséget.
A webalkalmazás módosítása
A Visual Studio Product.cs fájljában cserélje le a meglévő névtérdefiníciót a következő kódra:
// Declare properties for the products inventory. namespace ProductsWeb.Models { public class Product { public string Id { get; set; } public string Name { get; set; } public string Quantity { get; set; } } }
A Megoldáskezelő bontsa ki a Vezérlők elemet, majd kattintson duplán a HomeController.cs elemre a fájl Visual Studióban való megnyitásához.
A HomeController.cs fájlban cserélje le a meglévő névtérdefiníciót a következő kódra:
namespace ProductsWeb.Controllers { using System.Collections.Generic; using System.Web.Mvc; using Models; public class HomeController : Controller { // Return a view of the products inventory. public ActionResult Index(string Identifier, string ProductName) { var products = new List<Product> {new Product {Id = Identifier, Name = ProductName}}; return View(products); } } }
A Megoldáskezelő bontsa ki a Megosztott nézetek elemet>, majd kattintson duplán a _Layout.cshtml parancsra a fájl Visual Studio-szerkesztőben való megnyitásához.
Módosítsa az összes előfordulást
My ASP.NET Application
a Northwind Traders-termékekre.Távolítsa el a
Home
,About
ésContact
a hivatkozásokat. A következő példában törölje a kiemelt kódot.A Megoldáskezelő bontsa ki a Nézetek>kezdőlapját, majd kattintson duplán az Index.cshtml parancsra a fájl Visual Studio-szerkesztőben való megnyitásához. Cserélje le a fájl teljes tartalmát a következő kódra:
@model IEnumerable<ProductsWeb.Models.Product> @{ ViewBag.Title = "Index"; } <h2>Prod Inventory</h2> <table> <tr> <th> @Html.DisplayNameFor(model => model.Name) </th> <th></th> <th> @Html.DisplayNameFor(model => model.Quantity) </th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.DisplayFor(modelItem => item.Quantity) </td> </tr> } </table>
Az eddigi munkája pontosságának ellenőrzéséhez válassza a Ctrl+Shift+B billentyűkombinációt a projekt létrehozásához.
Az alkalmazás futtatása helyben
Futtassa az alkalmazást a működése ellenőrzéséhez.
- Győződjön meg arról, hogy a ProductsPortal az aktív projekt. Kattintson a jobb gombbal a projekt nevére Megoldáskezelő, és válassza a Set As Startup Project (Indítási projekt beállítása) lehetőséget.
- A Visual Studióban válassza az F5 lehetőséget.
Az alkalmazásának meg kell jelennie egy böngészőben.
Az egyes alkotórészek összeállítása teljes egésszé
A következő lépés, hogy a helyszíni termékkiszolgálót az ASP.NET-alkalmazáshoz csatlakoztassuk.
Ha még nincs megnyitva, nyissa meg a Visual Studióban a ASP.NET alkalmazás létrehozása szakaszban létrehozott ProductsPortal projektet.
A Helyszíni kiszolgáló létrehozása szakasz lépéséhez hasonlóan adja hozzá a NuGet-csomagot a projekthivatkozásokhoz. A Megoldáskezelő kattintson a jobb gombbal a ProductsPortal projektre, majd válassza a NuGet-csomagok kezelése lehetőséget.
Keressen a WindowsAzure.ServiceBus kifejezésre, és válassza ki az WindowsAzure.ServiceBus elemet. Ezután fejezze be a telepítést, és zárja be ezt a párbeszédpanelt.
A Megoldáskezelő kattintson a jobb gombbal a ProductsPortal projektre, majd válassza a Meglévő elem hozzáadása lehetőséget>.
Keresse meg a ProductsContract.cs fájlt a ProductsServer konzolprojektben. ProductsContract.cs kiemelése. Kattintson a Hozzáadás melletti lefelé mutató nyílra, majd válassza a Hozzáadás hivatkozásként lehetőséget.
Ezután nyissa meg a HomeController.cs fájlt a Visual Studio szerkesztőjében, és a névtér definícióját cserélje az alábbi kódra. Mindenképpen cserélje le
yourServiceNamespace
a Relay névtér nevére ésyourKey
az SAS-kulcsra. Ez a kód lehetővé teszi, hogy az ügyfél meghívja a helyszíni szolgáltatást, és visszaadja a hívás eredményét.namespace ProductsWeb.Controllers { using System.Linq; using System.ServiceModel; using System.Web.Mvc; using Microsoft.ServiceBus; using Models; using ProductsServer; public class HomeController : Controller { // Declare the channel factory. static ChannelFactory<IProductsChannel> channelFactory; static HomeController() { // Create shared access signature token credentials for authentication. channelFactory = new ChannelFactory<IProductsChannel>(new NetTcpRelayBinding(), "sb://yourServiceNamespace.servicebus.windows.net/products"); channelFactory.Endpoint.Behaviors.Add(new TransportClientEndpointBehavior { TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider( "RootManageSharedAccessKey", "yourKey") }); } public ActionResult Index() { using (IProductsChannel channel = channelFactory.CreateChannel()) { // Return a view of the products inventory. return this.View(from prod in channel.GetProducts() select new Product { Id = prod.Id, Name = prod.Name, Quantity = prod.Quantity }); } } } }
A Megoldáskezelő kattintson a jobb gombbal a ProductsPortal megoldásra. Ne a projektre, hanem a megoldásra kattintson a jobb gombbal. Válassza a Meglévő projekt hozzáadása lehetőséget>.
Keresse meg a ProductsServer projektet, és kattintson duplán a ProductsServer.csproj megoldásfájlra annak hozzáadásához.
A ProductsServernek futnia kell az adatok ProductsPortalon való megjelenítéséhez. A Megoldáskezelő kattintson a jobb gombbal a ProductsPortal megoldásra, és válassza a Tulajdonságok lehetőséget a tulajdonságlapok megjelenítéséhez.
Válassza a Közös tulajdonságok>indítási projekt lehetőséget, és válassza a Több indítási projekt lehetőséget. Győződjön meg arról, hogy a ProductsServer és a ProductsPortal ebben a sorrendben jelenik meg, és hogy mindkettő művelete a Start.
Válassza a közös tulajdonságok>projektfüggőségeit a bal oldalon.
Projektek esetén válassza a ProductsPortal lehetőséget. Győződjön meg arról, hogy a ProductsServer ki van jelölve.
Projektek esetén válassza a ProductsServer lehetőséget. Győződjön meg arról, hogy a ProductsPortal nincs kijelölve, majd a módosítások mentéséhez kattintson az OK gombra .
A projekt helyi futtatása
Az alkalmazás helyi teszteléséhez a Visual Studióban válassza az F5 lehetőséget. Először a helyszíni kiszolgálónak, a ProductsServernek kell elindulnia, majd a ProductsPortal alkalmazásnak egy böngészőablakban kell elindulnia. Ezúttal azt láthatja, hogy a termékleltár felsorolja a helyszíni termékszolgáltatás rendszeréből lekért adatokat.
Válassza a Frissítés lehetőséget a ProductsPortal lapon. Minden alkalommal, amikor frissíti a lapot, a kiszolgálóalkalmazás egy üzenetet jelenít meg a ProductsServer meghívásakor.GetProducts()
Zárja be mindkét alkalmazást, mielőtt továbblép a következő szakaszra.
A ProductsPortal projekt telepítése egy Azure-webalkalmazásba
A következő lépés az Azure Web App ProductsPortal előtérének újbóli közzététele:
A Megoldáskezelő kattintson a jobb gombbal a ProductsPortal projektre, és válassza a Közzététel lehetőséget. A Közzététel lapon válassza a Közzététel elemet.
Megjegyzés:
Előfordulhat, hogy egy hibaüzenet jelenik meg a böngészőablakban, amikor a ProductsPortal webprojekt automatikusan elindul a telepítés után. Emiatt nem kell aggódnia, ugyanis az okozza, hogy a ProductsServer alkalmazás még nem fut.
Másolja ki az üzembe helyezett webalkalmazás URL-címét. Később szüksége lesz az URL-címre. Ezt az URL-címet a Visual Studio Azure-alkalmazás Szolgáltatástevékenység ablakából is lekérheti:
Zárja be a böngészőablakot a futó alkalmazás leállításához.
Mielőtt az alkalmazást a felhőben futtatja, győződjön meg arról, hogy a ProductsPortal webalkalmazásként indul el a Visual Studióban.
A Visual Studióban kattintson a jobb gombbal a ProductsPortal projektre, és válassza a Tulajdonságok lehetőséget.
Válassza a Web lehetőséget. A Start Művelet csoportban válassza a Start URL-címet. Ebben a példában
https://productsportal20190906122808.azurewebsites.net/
adja meg a korábban üzembe helyezett webalkalmazás URL-címét.Válassza az Összes fájl>mentése lehetőséget.
Válassza a Build>Rebuild Solution lehetőséget.
Az alkalmazás futtatása
Az alkalmazás létrehozásához és futtatásához válassza az F5 lehetőséget. A helyszíni kiszolgálónak, amely a ProductsServer konzolalkalmazás, először el kell indulnia, majd a ProductsPortal alkalmazásnak egy böngészőablakban kell elindulnia, ahogy az itt látható:
A termékleltár felsorolja a termékszolgáltatás helyszíni rendszeréből lekért adatokat, és megjeleníti az adatokat a webalkalmazásban. Ellenőrizze az URL-címet, és győződjön meg arról, hogy a ProductsPortal Azure-webalkalmazás fut a felhőben.
Fontos
A ProductsServer konzolalkalmazásnak futnia kell, és képesnek kell lennie biztosítani az adatokat a ProductsPortal alkalmazás számára. Ha a böngésző hibaüzenetet jelenít meg, várjon még néhány másodpercet, amíg a ProductsServer betöltődik, és megjeleníti a következő üzenetet, majd frissítse a böngészőt.
A böngészőben frissítse a ProductsPortal lapot. Minden alkalommal, amikor frissíti a lapot, a kiszolgálóalkalmazás egy üzenetet jelenít meg a ProductsServer meghívásakor.GetProducts()
Következő lépések
Folytassa a következő oktatóanyaggal:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: