{"id":881,"date":"2022-07-01T08:42:00","date_gmt":"2022-07-01T08:42:00","guid":{"rendered":"https:\/\/tremp.info\/?p=881"},"modified":"2022-07-01T09:14:40","modified_gmt":"2022-07-01T09:14:40","slug":"microsoft-net-und-azure","status":"publish","type":"post","link":"https:\/\/tremp.info\/?p=881","title":{"rendered":"Microsoft .NET und Azure"},"content":{"rendered":"\n<p>Im Modul \u00abCloud Softwareprogrammierung\u00bb des <a rel=\"noreferrer noopener\" href=\"https:\/\/www.ost.ch\/de\/studium\/wirtschaft\/bachelor-wirtschaftsinformatik\" target=\"_blank\">BSc Wirtschaftsinformatik<\/a> an der OST Ostschweizer Fachhochschule setzen unsere Studierenden der Vertiefungsrichtung \u00abBusiness Software Development\u00bb die folgende Architekturvision mit einem Datenobjekt praktisch um:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/tremp.info\/wp-content\/uploads\/2022\/07\/DotNet-Azure-Architekturvision.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/tremp.info\/wp-content\/uploads\/2022\/07\/DotNet-Azure-Architekturvision-1024x576.png\" alt=\"\" class=\"wp-image-882\" srcset=\"https:\/\/tremp.info\/wp-content\/uploads\/2022\/07\/DotNet-Azure-Architekturvision-1024x576.png 1024w, https:\/\/tremp.info\/wp-content\/uploads\/2022\/07\/DotNet-Azure-Architekturvision-300x169.png 300w, https:\/\/tremp.info\/wp-content\/uploads\/2022\/07\/DotNet-Azure-Architekturvision-768x432.png 768w, https:\/\/tremp.info\/wp-content\/uploads\/2022\/07\/DotNet-Azure-Architekturvision-1536x864.png 1536w, https:\/\/tremp.info\/wp-content\/uploads\/2022\/07\/DotNet-Azure-Architekturvision.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Details zu den Begriffen und Konzepten k\u00f6nnen Sie in meinem <a href=\"https:\/\/link.springer.com\/book\/10.1007\/978-3-658-33179-5\" target=\"_blank\" rel=\"noreferrer noopener\">Lehrbuch \u00abArchitekturen Verteilter Softwarearchitekturen\u00bb<\/a> nachlesen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Visual Studio und Azure DevOps<\/h2>\n\n\n\n<p>Die Softwareentwicklung erfolgt mit <strong>Visual Studio<\/strong>, welche die Programmierung, das lokale Testen und das Deployment unterst\u00fctzt. <strong>Azure DevOps<\/strong> Repos erm\u00f6glicht die zentrale Verwaltung aller Sourcen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Blazor Web App<\/h2>\n\n\n\n<p>Die Microsoft <strong>Blazor<\/strong>-Technologie erlaubt es mit HTML\/CSS und C# als Programmiersprache eine Web App zu entwickeln. Dabei l\u00e4sst sich die Web App auf dem Client als <strong>PWA <\/strong>(Progressive Web App) installieren. Die Authentisierung und Autorisierung erfolgt via <strong>Azure Active Directory<\/strong>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SOA (Service Oriented Architecture) mittels Web API<\/h2>\n\n\n\n<p>Mit ASP.NET C# lassen sich <strong>RESTful-Services <\/strong>entwickeln, welche \u00fcber verschiedene Endpoints die gesamte Funktionalit\u00e4t einer Applikation als Web API anbietet. Postman bietet die M\u00f6glichkeit, den Service mittels OpenAPI zu entwerfen und nach der Programmierung manuell oder automatisiert zu testen. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Event-Driven Architecture<\/h2>\n\n\n\n<p>Bei der Event-Driven Architecture werden die programmierten Algorithmen in den einzelnen Software-Komponenten durch Ereignisse ausgel\u00f6st. In diesem Beispiel erfolgt dies durch zwei Bausteine:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Azure Service Bus<\/strong> als Message Broker<\/li><li><strong>Azure Functions<\/strong>, welche auf bestimmte Ereignisse hin programmiert sind<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">DaaS (Database as a Service)<\/h2>\n\n\n\n<p>Das Web API trennt die Bilddaten von den strukturierten Daten:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Die <strong>NoSQL Azure CosmosDB<\/strong> ist f\u00fcr das Speichern von schemalosen Daten geeignet.<\/li><li>Die <strong>Azure SQL Server DB<\/strong> eignet sich f\u00fcr das Speichern von strukturierten Daten.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">CQRS (Command and Query Responsibility Segregation) mit Event-Sourcing<\/h2>\n\n\n\n<p>Das Web API trennt die Persistenz-Aufrufe:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>DB-ver\u00e4ndernde Befehle (Commands) wie hinzuf\u00fcgen, \u00e4ndern und l\u00f6schen von Datenobjekten<\/li><li>Abfragen von Datenobjekten<\/li><\/ul>\n\n\n\n<p>Das Web API sendet die Befehle und dazugeh\u00f6rigen Daten als <strong>Message <\/strong>in ein JSON-Objekt verpackt an die entsprechende Queue des Azure Service Bus. \u00dcber die sessionbehaftete DBResponse-Queue erh\u00e4lt das Web API die jeweilige Antwort.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FaaS (Function as a Service)<\/h2>\n\n\n\n<p>Mit <strong>Azure Functions <\/strong>lassen sich Event-gesteuerte Funktionen in C# entwickeln. <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Mit einem <strong>CosmosDB-Trigger<\/strong> erstellt die Funktion bei jeder DB-\u00c4nderung ein Vorschaubild und speichert dieses in der CosmosDB.<\/li><li>Mit dem <strong>Azure Service Bus-Trigger<\/strong> nehmen die entsprechenden Funktionen die Command- bzw. Query-Anweisungen entgegen und verarbeiten diese. Der Zugriff auf die SQL-DB erfolgt \u00fcber das Entity Framework, welches als ORM (Objekt Relational Mapper) fungiert.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Deployment in die Azure Cloud<\/h2>\n\n\n\n<p>Die Softwareengineers containerisieren die einzelnen Komponenten und testen diese lokal mit Docker. Das Deployment automatisieren sie via Azure DevOps Pipeline. In Azure sind die containerisierten Komponenten mittels Container Registry verwaltet.  Alle installierten Komponenten laufen somit in der Azure Cloud als <strong>serverless Microservices<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Modul \u00abCloud Softwareprogrammierung\u00bb des BSc Wirtschaftsinformatik an der OST Ostschweizer Fachhochschule setzen unsere Studierenden der Vertiefungsrichtung \u00abBusiness Software Development\u00bb die folgende Architekturvision mit einem Datenobjekt praktisch um: Details zu den Begriffen und Konzepten k\u00f6nnen Sie in meinem Lehrbuch \u00abArchitekturen Verteilter Softwarearchitekturen\u00bb nachlesen. Visual Studio und Azure DevOps Die Softwareentwicklung [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":883,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,46],"tags":[54,70,69,58,53],"class_list":["post-881","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-bildung","category-software-engineering","tag-net","tag-azure","tag-c","tag-softwarearchitektur","tag-verteilte-systeme"],"_links":{"self":[{"href":"https:\/\/tremp.info\/index.php?rest_route=\/wp\/v2\/posts\/881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tremp.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tremp.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tremp.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tremp.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=881"}],"version-history":[{"count":6,"href":"https:\/\/tremp.info\/index.php?rest_route=\/wp\/v2\/posts\/881\/revisions"}],"predecessor-version":[{"id":891,"href":"https:\/\/tremp.info\/index.php?rest_route=\/wp\/v2\/posts\/881\/revisions\/891"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tremp.info\/index.php?rest_route=\/wp\/v2\/media\/883"}],"wp:attachment":[{"href":"https:\/\/tremp.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tremp.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tremp.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}