Doprovodné materiály k architektuře nabízení v podnicích
Podniky v současné době se postupně pohybují k vytváření mobilních aplikací pro koncové uživatele (externí) nebo pro zaměstnance (interní). Mají stávající back-endové systémy na místě IT sálové nebo některé obchodní aplikace, které musí být integrovány do architektury mobilní aplikace. V této příručce se dozvíte, jak nejlépe provést tuto integraci, aby bylo možné řešení doporučit běžným scénářům.
Častým požadavkem je odesílat nabízená oznámení uživatelům prostřednictvím své mobilní aplikace, když dojde k nějakému zájmu v back-end systémech. například zákazník banky, který má bankovní aplikaci bank na iPhone, chce upozornit, když se na účtu navýší debet nad určitou částku z účtu nebo intranetového scénáře, kdy zaměstnanec z finančního oddělení, který má aplikaci pro schvalování rozpočtu na Windows Phone, chce upozornit, když se přijme žádost o schválení.
Bankovní účet nebo zpracování schválení se pravděpodobně provede v některém back-endu systému, který musí iniciovat uživateli nabízené oznámení. Může existovat několik takových back-end systémů, které musí všechny sestavovat stejný druh logiky, aby bylo možné je odeslat, když událost aktivuje oznámení. Složitost zde spočívá v integraci několika back-end systémů spolu s jediným systémem nabízených oznámení, kde se koncoví uživatelé můžou přihlásit k odběru různých oznámení a můžou existovat i několik mobilních aplikací. Například intranetové mobilní aplikace, ve kterých jedna mobilní aplikace může chtít dostávat oznámení z několika takových back-end systémů. Systémy back-end neznají ani nepotřebují znát sémantiku a technologii nabízených oznámení, takže běžné řešení je tradičně zavedlo k zavedení komponenty, která se dotáže back-endové systémy na všechny události, které vás zajímají, a zodpovídá za odeslání nabízených zpráv klientovi.
lepším řešením je použití modelu Azure Service Bus – tématu nebo předplatného, které zjednodušuje složitost a zároveň usnadňuje škálovatelné řešení.
Tady je obecná Architektura řešení (generalizovaná s více mobilními aplikacemi, ale i v případě, že je k dispozici jenom jedna mobilní aplikace).
Architektura

klíčovým kamenem v tomto diagramu architektury je Azure Service Bus, který poskytuje témata nebo programovací model předplatných (další informace najdete v tématu [Service Bus publikování do Pub/Sub]). příjemce, což je v tomto případě mobilní back-end (obvykle mobilní služba Azure, která iniciuje nabízení oznámení do mobilních aplikací), nepřijímá zprávy přímo ze systémů back-end, ale místo toho poskytuje zprostředkující vrstvu abstrakce poskytovanou službou Azure Service Bus, která umožňuje mobilnímu back-endu přijímat zprávy z jednoho nebo více back-end systémů. je třeba vytvořit Service Bus téma pro každý back-end systém, například účet, HR, Finance, který je v podstatě "důležité" témata, která zahájí odeslání zprávy jako nabízené oznámení. Back-endové systémy odesílají zprávy do těchto témat. mobilní back-end se může přihlásit k odběru jednoho nebo několika takových témat vytvořením předplatného Service Bus. Umožňuje mobilnímu back-endu přijímat oznámení z odpovídajícího systému back-end. Mobilní back-end nadále naslouchá zprávám ve svých předplatných a Jakmile přijde zpráva, přepíná a odesílá oznámení do centra oznámení. Centra oznámení nakonec doručovat zprávu do mobilní aplikace. Tady je seznam klíčových součástí:
- Back-endové systémy (LoB/starší systémy)
- vytvoří Service Bus téma.
- Odesílá zprávu.
- Mobilní back-end
- Vytvoří předplatné služby.
- Přijímá zprávu (ze systému back-end)
- Odesílá oznámení klientům (prostřednictvím centra oznámení Azure).
- Mobilní aplikace
- Přijímá a zobrazuje oznámení.
Výhody
- Oddělení mezi příjemcem (mobilní aplikace/služba prostřednictvím centra oznámení) a odesilatelem (back-end systémy) umožňuje integraci dalších back-end systémů s minimálními změnami.
- Také umožňuje situaci, kdy více mobilních aplikací dokáže přijímat události z jednoho nebo více back-end systémů.
Ukázka
Požadavky
Dokončete následující kurzy a seznamte se s koncepty a běžnými vytvářeními & kroky konfigurace:
- [Service Bus program pro publikování a následné] zpracování – v tomto kurzu se dozvíte, jak pomocí Service Bus témata a předplatná vytvořit obor názvů, který bude obsahovat témata nebo odběry, jak odesílat & zpráv z nich.
- [Notification Hubs – Windows univerzální kurz] – v tomto kurzu se dozvíte, jak nastavit aplikaci v Windows storu a použít Notification Hubs k registraci a následnému doručování oznámení.
Ukázka kódu
Úplný vzorový kód je k dispozici v [ukázkách centra oznámení]. Je rozdělen na tři komponenty:
EnterprisePushBackendSystem
a. tento projekt používá NuGet balíček Azure. Messaging. ServiceBus a je založen na [Service Busm programování pro publikování]a odesílání.
b. Tato aplikace je jednoduchá Konzolová aplikace v jazyce C# pro simulaci systému LoB, která zahájí doručení zprávy do mobilní aplikace.
static async Task Main(string[] args) { string connectionString = ConfigurationManager.AppSettings.Get("Azure.ServiceBus.ConnectionString"); // Create the topic await CreateTopicAsync(connectionString); // Send message await SendMessageAsync(connectionString); }c.
CreateTopicAsyncslouží k vytvoření Service Busho tématu.public static async Task CreateTopicAsync(string connectionString) { // Create the topic if it does not exist already ServiceBusAdministrationClient client = new ServiceBusAdministrationClient(connectionString); if (!await client.TopicExistsAsync(topicName)) { await client.CreateTopicAsync(topicName); } }d.
SendMessageAsyncslouží k odeslání zpráv do tohoto Service Bus tématu. Tento kód jednoduše pošle do tématu sadu náhodných zpráv pro účely ukázky. Obvykle existuje systém back-end, který odesílá zprávy, když dojde k události.public static sync Task SendMessageAsync(string connectionString) { await using var client = new ServiceBusClient(connectionString); ServiceBusSender sender = client.CreateSender(topicName); // Sends random messages every 10 seconds to the topic string[] messages = { "Employee Id '{0}' has joined.", "Employee Id '{0}' has left.", "Employee Id '{0}' has switched to a different team." }; while (true) { Random rnd = new Random(); string employeeId = rnd.Next(10000, 99999).ToString(); string notification = String.Format(messages[rnd.Next(0,messages.Length)], employeeId); // Send Notification ServiceBusMessage message = new ServiceBusMessage(notification); await sender.SendMessageAsync(message); Console.WriteLine("{0} Message sent - '{1}'", DateTime.Now, notification); System.Threading.Thread.Sleep(new TimeSpan(0, 0, 10)); } }ReceiveAndSendNotification
a. tento projekt využívá balíčky Azure. Messaging. ServiceBus a Microsoft. Web. webjobs. Publish NuGet a je založen na [Service Busm programování]pro publikování a odesílání.
b. Následující aplikace konzoly se spouští jako Webová úloha Azure , protože musí běžet nepřetržitě, aby naslouchala zpráv ze systémů LOB a back-endu. Tato aplikace je součástí vašeho mobilního back-endu.
static async Task Main(string[] args) { string connectionString = ConfigurationManager.AppSettings.Get("Azure.ServiceBus.ConnectionString"); // Create the subscription that receives messages await CreateSubscriptionAsync(connectionString); // Receive message await ReceiveMessageAndSendNotificationAsync(connectionString); }c.
CreateSubscriptionAsyncslouží k vytvoření předplatného Service Bus pro téma, kde back-end systém odesílá zprávy. V závislosti na obchodním scénáři Tato součást vytvoří jedno nebo více předplatných odpovídajících tématům (například některé můžou přijímat zprávy ze systému HR, některé z finančních systémů a tak dále).static async Task CreateSubscriptionAsync(string connectionString) { // Create the subscription if it does not exist already ServiceBusAdministrationClient client = new ServiceBusAdministrationClient(connectionString); if (!await client.SubscriptionExistsAsync(topicName, subscriptionName)) { await client.CreateSubscriptionAsync(topicName, subscriptionName); } }d.
ReceiveMessageAndSendNotificationAsyncse používá ke čtení zprávy z tématu pomocí svého předplatného, a pokud je čtení úspěšné, pak se vytvoří oznámení (ve vzorovém scénáři Windows nativní informační oznámení), které se pošle do mobilní aplikace pomocí Azure Notification Hubs.static async Task ReceiveMessageAndSendNotificationAsync(string connectionString) { // Initialize the Notification Hub string hubConnectionString = ConfigurationManager.AppSettings.Get ("Microsoft.NotificationHub.ConnectionString"); hub = NotificationHubClient.CreateClientFromConnectionString (hubConnectionString, "enterprisepushservicehub"); ServiceBusClient Client = new ServiceBusClient(connectionString); ServiceBusReceiver receiver = Client.CreateReceiver(topicName, subscriptionName); // Continuously process messages received from the subscription while (true) { ServiceBusReceivedMessage message = await receiver.ReceiveMessageAsync(); var toastMessage = @"<toast><visual><binding template=""ToastText01""><text id=""1"">{messagepayload}</text></binding></visual></toast>"; if (message != null) { try { Console.WriteLine(message.MessageId); Console.WriteLine(message.SequenceNumber); string messageBody = message.Body.ToString(); Console.WriteLine("Body: " + messageBody + "\n"); toastMessage = toastMessage.Replace("{messagepayload}", messageBody); SendNotificationAsync(toastMessage); // Remove message from subscription await receiver.CompleteMessageAsync(message); } catch (Exception) { // Indicate a problem, unlock message in subscription await receiver.AbandonMessageAsync(message); } } } } static async void SendNotificationAsync(string message) { await hub.SendWindowsNativeNotificationAsync(message); }e. pokud chcete tuto aplikaci publikovat jako webovou úlohu, klikněte pravým tlačítkem na řešení v Visual Studio a vyberte publikovat jako webovou úlohu .

f. Vyberte svůj profil publikování a vytvořte nový web Azure, pokud už neexistuje, který je hostitelem této webové úlohy, a až potom web publikujte.
snímek obrazovky dialogového okna publikovat web s vybranou možností Microsoft Azure weby, zelená šipka ukazující na dialogové okno vybrat existující web s novou možností popsaný červeně a zelenou šipkou ukazující na dialogové okno vytvořit web v Microsoft Azure s názvem webu a možnostmi popsanými červeně.
například Nakonfigurujte úlohu tak, aby běžela průběžně, takže když se přihlásíte k Azure Portal , mělo by se zobrazit něco jako v následujícím seznamu:

EnterprisePushMobileApp
a. tato aplikace je aplikace Windows storu, která přijímá informační zprávy z webové úlohy spuštěné jako součást mobilního back-endu a zobrazuje je. tento kód je založený na [Notification Hubsm Windowsm univerzálním kurzu].
b. Ujistěte se, že je ve vaší aplikaci povolený příjem oznámení informačními zprávami.
c. Zajistěte, aby se při spuštění aplikace volala následující registrační kód Notification Hubs (po nahrazení
HubNameDefaultListenSharedAccessSignaturehodnot a:private async void InitNotificationsAsync() { var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); var hub = new NotificationHub("[HubName]", "[DefaultListenSharedAccessSignature]"); var result = await hub.RegisterNativeAsync(channel.Uri); // Displays the registration ID so you know it was successful if (result.RegistrationId != null) { var dialog = new MessageDialog("Registration successful: " + result.RegistrationId); dialog.Commands.Add(new UICommand("OK")); await dialog.ShowAsync(); } }
Spuštění ukázky
Ujistěte se, že je vaše webová úloha úspěšně spuštěná a že je naplánováno jejich nepřetržité spuštění.
spusťte EnterprisePushMobileApp, ve kterém se spustí aplikace Windows Store.
Spusťte konzolovou aplikaci EnterprisePushBackendSystem , která simuluje back-end LOB a začne odesílat zprávy a měla by se zobrazit informační zpráva, která se zobrazí jako na následujícím obrázku:

zprávy byly původně odeslány pro Service Bus témata, která byla monitorována Service Bus odběry ve webové úloze. Po přijetí zprávy se vytvoří oznámení a pošle se do mobilní aplikace. Můžete procházet protokoly webové úlohy a potvrdit zpracování při přechodu na odkaz protokoly v Azure Portal pro vaši webovou úlohu:
