Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 16 Min.

Mit ASP.NET Core im Technologie-Stack

Mit ASP.NET Core als Basis lassen sich SaaS-Projekte schnell und unkompliziert umsetzen.
© dotnetpro
Mit dem Aufkommen von Cloud-Angeboten sind neue Möglichkeiten entstanden, Softwareprodukte zu entwickeln und anzubieten. Die Auswirkungen dieser neuen Möglichkeiten, die mittlerweile nicht mehr allzu neu sind, von vielen aber noch so empfunden werden, sind deutlich größer, als viele denken. Beispielsweise setzen Start-ups sehr stark auf diese Art, Softwareprodukte anzubieten. Dahinterliegende Abomodelle, um Software und Dienstleistungen zu mieten, verbreiten sich dadurch ebenfalls zunehmend, was nicht jedem gefällt.Da das SaaS-Modell (SaaS: Software as a Service) für Softwareprodukte beliebt ist, haben sich zahlreiche Technologien neu oder in diese Richtung weiterentwickelt, um die Umsetzung von SaaS-Anwendungen zu erleichtern. Von simplen Projektvorlagen bis hin zu No- und Low-Code-Plattformen und bestehenden Frameworks ist alles dabei. Auch mit .NET lassen sich SaaS-Produkte umsetzen, entweder als vollständige Single Page Application (SPA) oder als Web-API auf das Backend fokussiert. SaaS ist dabei ein Teilbereich von XaaS (Everything-as-a-Service), das durch die verstärkte Cloud-Nutzung ein immer größerer Bereich wird.In diesem Artikel liegt der Fokus auf ASP.NET Core zur Umsetzung von SaaS-Projekten (siehe hierzu auch den Kasten ASP.NET Core vs. ASP.NET 4.x). Zuerst stellt sich die Frage, was überhaupt für ein SaaS-Projekt technisch wichtig ist und welche Möglichkeiten es für diese Umsetzungen gibt. Zudem beschreibt der Artikel, was für SaaS-Produkte im Normalfall wichtig ist und wie sich diese Anforderungen mit ASP.NET Core umsetzen lassen.

ASP.NET Core vs. ASP.NET 4.x

Dieser Artikel ist auf die aktuelle Version von ASP.NET Core ausgerichtet, das ein Redesign von ASP.NET 4.x ist. An dieser Version ist grundsätzlich nichts verkehrt, da es ein ausgereiftes Framework ist, das Dienste bereitstellt, die für das Erstellen von serverbasierten Webanwendungen unter Windows erforderlich sind.
Ein Blick über den Tellerrand ist ebenfalls wichtig, da auch andere Frameworks und Plattformen nicht schlafen und auf den SaaS-Zug aufgesprungen sind. Bei der Entwicklung ­neuer Softwareprodukte gibt es eine breite Palette an Möglichkeiten, die Anwendung zu konzipieren und umzusetzen. Beispielsweise lässt sich das Backend auf eine No-Code-Plattform auslagern, um so deutlich Zeit und Geld bei der Entwicklung zu sparen.

Was bedeutet SaaS?

SaaS ist ein Teilbereich des Cloud-Computings und eines von mittlerweile vier Servicemodellen. Neben SaaS gibt es noch Infrastructure as a Service (IaaS), Platform as a Service (PaaS) und Function as a Service (FaaS). Zu IaaS gehören der Zugang und die Nutzung von Hardwareressourcen wie beispielsweise Rechner, Netzwerke und Speicher. Virtuelle Cluster lassen sich so fast frei gestalten. Auswahl, Installation und Betrieb der Software liegen allerdings beim Nutzer. Mit PaaS ist der Zugang und die Nutzung von Programmierungs- und Laufzeitumgebungen gemeint. Dabei lassen sich Rechen- und Datenkapazitäten fast frei gestalten. Nutzer können in diesen Softwareumgebungen, die vom Service-Provider angeboten werden, eigene Anwendungen entwickeln. Bei FaaS werden immer wieder genutzte Funktionen auf einfache Weise zur Verfügung gestellt.Bei den Clouds unterscheidet man zudem verschiedene Liefermodelle. Es gibt öffentliche und private Clouds, hybride Varianten dazwischen und Community-Clouds. Dieser Artikel geht von einer öffentlichen Cloud aus, in der Ressourcen gegen Nutzungsgebühren gemietet werden können – beispielsweise Microsoft Azure oder Amazon Web Services (AWS).In dieses Umfeld reiht sich SaaS ein und baut auf dem Grundsatz auf, dass Software und die darunterliegende In­frastruktur von einem IT-Dienstleister genutzt werden können. Dafür erhebt dieser verständlicherweise Nutzungs­gebühren, der Betrieb der Software und Infrastruktur ist aber nicht vom Nutzer zu leisten. Das macht Ressourcen für anderen Aufgaben frei. Insbesondere lässt sich auf diese Weise Software verwenden, deren Eigenbetrieb viele Unternehmen nicht leisten könnten. Die Nutzungskosten fallen in der Regel in einem Abomodell an. Das verursacht regelmäßige Kosten und ist ein großer Kritikpunkt an diesem Vertriebsmodell.

Was sind Micro-SaaS?

Im zusammengesetzten Kunstwort Micro-SaaS ist der Begriff SaaS enthalten, der im vorherigen Abschnitt beschrieben wurde. Es handelt sich also um ein Softwareprodukt in der Cloud. Haken dran.Mit dem Begriff "micro" ist tatsächlich das Wort "klein" gemeint, allerdings nicht bezogen auf die Software oder das Servicegeschäft. Das soll sogar einen sehr hohen Nutzen und damit einen sehr hohen Wert haben. Auch die Umsetzung ist qualitativ sehr gut. "Micro" bezieht sich auf die Art und Weise, wie so ein SaaS-Produkt erstellt wird und von wem. In der Regel ist damit eine Einzelperson oder eine kleine Gruppe von Personen gemeint, die an dieser Software arbeiten. Es wird ein „most viable product“ angestrebt, das schnell zu einer ersten Produktversion ausgebaut wird, die dann live geht. Dies soll die Produktzyklen gerade zu Beginn deutlich reduzieren. Zudem konzentriert sich ein Micro-SaaS damit auf wenige, dafür aber essenzielle Funktionen.Tyler Tringas, Gründer von Storemapper [1], hat den Begriff Micro-SaaS geprägt und ursprünglich wie folgt definiert: „Ein SaaS-Unternehmen, das auf einen Nischenmarkt abzielt, von einer Person oder einem sehr kleinen Team betrieben wird, mit geringen Kosten, einem engen Fokus, einer kleinen, aber engagierten Benutzerbasis und ohne externe Finanzierung. Daher der Begriff Micro-SaaS.“ Auch der Bezug auf die fehlende Finanzierung ist ein wichtiges Unterscheidungskriterium zu anderen SaaS-Produkten. Micro-SaaS-Vorhaben sind in der Regel im Bootstrapping-Verfahren umgesetzt, also neben einer anderen Erwerbstätigkeit oder Ähnlichem [2].Micro-SaaS wird häufig mit Vertical SaaS verwechselt, einem Geschäftsmodell, das sich auf die Konzeption und Entwicklung von SaaS-Lösungen für eine bestimmte Branche konzentriert. Der Unterschied besteht darin, dass ein Micro-SaaS von einer einzelnen Person betrieben werden kann, während bei einem Vertical SaaS ein eigenes Team für den Entwicklungsprozess erforderlich ist.Da es sich um einen kleinen Betrieb handelt, sind keine großen MRR-Ziele (monthly recurring revenue, monatlich wiederkehrende Umsätze) erforderlich, um eine gesunde Rendite zu erzielen, und Unternehmer genießen attraktive Freiheiten innerhalb des Geschäftsmodells. Ein Micro-SaaS kann mit einem minimalen Arbeitsaufwand verbunden sein, wenn es erst einmal etabliert ist und läuft, und bietet eine ganze Reihe von Vorteilen.Nicht selten werden Micro-SaaS als die Zukunft der Lifestyle-Softwareunternehmen bezeichnet: ortsunabhängig, mit wiederkehrenden Einnahmen und hoffentlich geringer Fluktuation. Und warum sollte es die Wirtschaft überhaupt kümmern? Es ist anzunehmen, dass es Millionen von Micro-SaaS-Unternehmen auf der ganzen Welt geben wird – ähnlich wie es an jeder Ecke kleine Läden gibt. Diese kleinen Unternehmen werden kleine Kundengruppen im Internet bedienen, die geringe oder sehr spezifische Bedürfnisse haben, und mit diesen Kunden einen profitablen Lebensunterhalt erwirtschaften. Micro-SaaS-Unternehmen sind in der Regel ortsunabhängig. Sie können von einem Laptop aus und mit einer Internetverbindung die ganze Welt bedienen. Dies hat zu einem neuen Phänomen des nomadischen Lebensstils geführt. Wenn Sie sich vorgenommen haben, die Welt zu bereisen oder neue Orte kennenzulernen, aber einen Job haben, könnte ein rentables Micro-SaaS-Unternehmen womöglich Ihre Träume erfüllen.

Authentifizierung und Autorisierung als Basisanforderungen

Da eine SaaS-Anwendung von vielen Nutzern verwendet werden soll, sind die beiden Bereiche Authentifizierung und Autorisierung essenziell. Unter dem Begriff Authentifizierung werden alle Möglichkeiten zusammengefasst, mit denen eine Person sich ausweisen kann, um zu prüfen, ob sie auch ist, wer sie vorgibt zu sein. Dabei handelt es sich ­somit um einen Identitätsnachweis. Dies geschieht zum Beispiel durch den Abgleich von Nutzername und Passwort. Passen beide Informationen zusammen und gibt es diese Kombination im System, so ist die Authentifizierung geglückt.Die Autorisierung ist das Gewähren von Zugriffsrechten oder Privilegien, die der Identität zustehen. Damit verbunden ist ein Berechtigungssystem, um für die unterschiedenen Bereiche der Anwendungen und den Operationen darin Berechtigungen vergeben zu können. Während die Implementierung einer Authentifizierung bereits aufwendig genug sein kann, wird ein Berechtigungssystem sehr schnell sehr komplex.In ASP.NET Core gibt es für beide Bereiche verschiedene Möglichkeiten. In ASP.NET Core wird die Authentifizierung über den Authentifizierungsdienst IAuthenticationService abgewickelt, der von der Authentifizierungs-Middleware verwendet wird. Der Dienst nutzt registrierte Authentifizierungshandler, um entsprechende Aktionen auszuführen. Beispiele für identifizierungsbezogene Aktionen sind etwa die Authentifizierung eines Nutzers und die Reaktion darauf, wenn ein nicht erkannter Nutzer versucht, auf eine eingeschränkte Ressource zuzugreifen. Schemata für die Identifizierung werden bei ASP.NET Core in der Datei Program.cs hinzugefügt. Das Anfügen der Methoden erfolgt dort über einen Aufruf von AddAuthenti­cation(), beispielsweise AddJwtBearer() oder AddCookie(), wie im folgenden Beispiel:
<span class="hljs-keyword">builder.Services.AddAuthentication(</span>
<span class="hljs-keyword"> </span> <span class="hljs-keyword">JwtBearerDefaults.AuthenticationScheme). </span>
  <span class="hljs-keyword">AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, </span>
  options =&gt; <span class="hljs-keyword">builder.Configuration.Bind("JwtSettings",</span>
<span class="hljs-keyword"> </span> options)).<span class="hljs-keyword">AddCookie(CookieAuthenticationDefaults.</span>
<span class="hljs-keyword"> </span> AuthenticationScheme.options =&gt; <span class="hljs-keyword">builder.Configuration.</span>
<span class="hljs-keyword"> </span> <span class="hljs-keyword">Bind("CookieSettings", </span>options))<span class="hljs-comment">;</span> 
Die Authentifizierung lässt sich sowohl für SPAs als auch für Web-API-Projekte nutzen. Microsoft bietet dazu ausgedehnte Tutorials [3] und Templates an. Basis dafür ist die sogenannte ASP.NET Core Identity. Dahinter verbirgt sich ein API, das die Anmeldefunktionalität der Nutzeroberfläche (UI) unterstützt und ebenso die Verwaltung von Nutzern, Kennwörtern, Profildaten, Rollen, Tokens, E-Mail-Bestätigungen und mehr. Nutzer können ein Konto mit den in Identity gespeicherten Anmeldeinformationen erstellen oder einen externen Anmeldeanbieter verwenden. Zu diesen gehören Facebook, Google, Microsoft Account und Twitter.Der Identity Code ist auf GitHub verfügbar [4]. Identity wird häufig mit einer SQL-Server-Datenbank konfiguriert, um Nutzernamen, Kennwörter und Profildaten zu speichern. Es kann auch ein anderer persistenter Speicher verwendet werden, beispielsweise Azure Table Storage. Microsoft bietet umfangreiche Tutorials an, um das Scaffolding dieser Identity umzusetzen [5].

Sicherer mit Multi-Faktor-Authentifizierung

Da es immer häufiger zu Datenlecks bei Webanwendungen und anderen Anbietern kommt, nimmt die Notwendigkeit einer Multi-Faktor-Authentifizierung (MFA) zu. Dabei handelt es sich um ein Verfahren, bei dem ein Nutzer während eines Anmeldevorgangs aufgefordert wird, sich zusätzlich zu identifizieren. Diese Aufforderung kann die Eingabe eines Codes eines Mobiltelefons, die Verwendung eines FIDO2-Schlüssels oder die Eingabe eines Fingerabdruckscans sein. Diese zweite Form der Authentifizierung erhöht die Sicherheit, da ein solcher zusätzlicher Faktor von einem Angreifer nicht so leicht erlangt oder dupliziert werden kann.MFA erfordert mindestens zwei oder mehr Arten von Nachweisen einer Identität, zum Beispiel Informationen, die nur der Nutzer kennt, oder biometrische Informationen. Die Zwei-Faktor-Authentifizierung (2FA) ist eine Untergruppe der MFA. 2FA wird bei der Verwendung von ASP.NET Core Identity von Haus aus unterstützt. Um es für einen bestimmten Nutzer zu aktivieren oder zu deaktivieren, ist die Eigenschaft IdentityUser zu setzen:
IdentityUser<span class="hljs-tag">&lt;<span class="hljs-name">TKey</span>&gt;</span>.TwoFactorEnabled 
Die Standardnutzeroberfläche von ASP.NET Core Identity enthält Seiten für die Konfiguration von 2FA. Damit ist auch dieses Merkmal bei ASP.NET Core schnell umgesetzt.

Mandantenfähigkeit als Querschnittsthema

Die Mandantenfähigkeit, im Englischen „multi-tenancy“ genannt, ist für zahlreiche Geschäftsmodelle eine technische Notwendigkeit. Damit sind nicht ausschließlich die Bereiche Authentifizierung und Autorisierung gemeint; die sind eine bereits davorgeschaltete Notwendigkeit.Im Kern handelt es sich bei der Mandantenfähigkeit um eine Architektur, bei der eine Codebasis mehrere Kunden bedient, während sie deren Daten aber isoliert. Für die Kunden sieht es so aus, als hätten sie ihre eigene Kopie der Software laufen, während von der Anwendung in Wirklichkeit nur eine einzige Instanz beziehungsweise Bereitstellung läuft. Der Schwerpunkt der Mandantenfähigkeit kann in den Bereichen Sicherheit, Wartbarkeit, reduzierte Infrastrukturkomplexität und verbesserte Ressourcennutzung liegen.Mandant (tenant) ist ein Sammelbegriff, und die Teams definieren, was er für sie bedeutet. Ein Mandant kann ein Nutzer, eine Organisation oder eine andere logische Gruppierung sein. Obwohl bei vielen SaaS-Angeboten eine Organisation normalerweise die Grenze für die Festlegung eines Mandanten ist, muss das nicht für alle Branchen oder Geschäftsmodelle gleich sein.Soll Mandantenfähigkeit eingeführt werden, muss die Anwendung in der Regel von vornherein auf dieses Konzept ausgerichtet sein. Sie lässt sich zwar in bestehende Anwendungen einbauen, aber es ist einfacher, Lösungen zu entwickeln, wenn die Mandantenfähigkeit als grundlegend betrachtet wird. In der Regel betrifft sie jeden Aspekt einer Anwendung, von der Authentifizierung und Autorisierung über die Geschäftslogik, das Datenbankschema und die Isolierung bis hin zu Elementen, die der Nutzer nicht sieht, wie die Hosting-Umgebung.Das ultimative Ziel von Mandantenfähigkeit ist es, einen Bereich der Komplexität deutlich zu reduzieren, wobei der Kompromiss eine gewisse zusätzliche Komplexität ist. Mandantenfähigkeit lässt sich mit dem Entity Framework Core und ASP.NET Core implementieren.

Web-API und Minimal-API

Mit ASP.NET Core lassen sich nicht nur SPAs erstellen, sondern auch Web-API-Projekte und seit einigen Versionen, konkret mit .NET 6, auch mit dem sogenannten Minimal-API. Das ist ein zusätzliches Entwicklungsmodell, das es erlaubt, mit wenigen Zeilen Code Web-APIs zu erstellen – also eine Vereinfachung der Entwicklung, die Aufwand spart, wenn das Modell vorher bekannt ist. Dazu hat Microsoft in C# einige Änderungen vorgenommen und auch eine neue Builder-Klasse für neue Entwicklungsmodelle eingeführt. Diese Änderungen verschieben die Entwicklung in Richtung Sprachen wie beispielsweise Node.js. Die Anpassungen an C# betreffen zum Beispiel die globalen und impliziten using-Statements und die neuen Top-Level-Statements.Wenn ein SaaS-Projekt geplant wird, das einige wenige Endpunkte besitzt, kann das Minimal-API sehr gut sein. Ein Projekt mit vielen Endpunkten führt häufig dazu, dass die Übersichtlichkeit leidet. Zudem basiert das Minimal-API nicht auf der bisher bekannten ASP.NET-MVC-Architektur. Funktionen wie Model-Binding und Action-Filter funktionieren daher anders oder sind gar nicht vorhanden. Durch den Verzicht auf die MVC-Architektur sind Minimal-APIs grundsätzlich etwas schneller, was sich in der Praxis aber in wenigen Prozent mehr Requests pro Sekunde auswirkt.Wesentlich größeren Einfluss haben andere Stellen, zum Beispiel die Implementierung des Handlers, und da hilft kein Entwicklungsmodell. Minimal-APIs können zudem nur JSON-Daten verarbeiten. Sind andere Datenformate notwendig, muss die Funktionalität dafür nachimplementiert oder es müssen externe Bibliotheken gefunden und genutzt werden.

Logging, Monitoring und Health Checks

Die Themen Logging, Monitoring und Health Checks sind deutlich wichtiger, als das auf den ersten Blick erscheinen mag. SaaS-Produkte müssen so problemlos funktionieren wie nur möglich, insbesondere zu Stoßzeiten und was die Ausfallwahrscheinlichkeit betrifft. Bei Micro-SaaS-Projekten ist das Thema noch essenzieller, denn an diesen Softwareprodukten arbeitet maximal ein kleines Team und häufig nur eine Person. Verkäufe zu verpassen, weil mitten am Tag etwas nicht funktioniert, darf möglichst nicht passieren.Das Logging in Anwendungen mit ASP.NET Core ist prinzipiell kein Problem. Logging-Provider in .NET sorgen dafür, dass sich die Logeinträge an verschiedene Quellen übermitteln lassen, etwa an den Konsolen-Provider, der die Informationen ausgibt. Andere Logging-Provider speichern die Daten allerdings für eine spätere Verwendung und Analyse. Provider gibt es unter anderem für die Klassen Console, EventSource, EventLog (Windows) oder für die Azure Application Insights. Zudem gibt es zahlreiche Provider für Drittanbieter. Sie können im Code sowohl hinzugefügt als auch konfiguriert werden.ASP.NET Core bietet darüber hinaus eine Reihe von Paketen an, um ein Monitoring zu implementieren. Dazu gehört beispielsweise App.Metrics.AspNetCore.Tracking, um typische Webmetriken in einer ASP.NET-Core-Anwendung zu erfassen und zu überwachen. Zudem lassen sich über Bibliotheken oder manuell externe Monitoring-Systeme einbinden, um für das eigene SaaS-Projekt wichtige Metriken zu speichern und zu überwachen. Sentry [6] ist so ein Beispiel oder Dynatrace [7].Health Checks sind notwendig, um zu prüfen und zu überwachen, ob Dienste noch erreichbar sind oder nicht. Das Thema hat die Episode 108 der dotnetpro-Kolumne „Frameworks und mehr“ erst kürzlich behandelt [8].

Templates und Projektstrukturen als Abkürzungen

Projektvorlagen bieten die Gewissheit, ein Projekt auf einer getesteten und wohldefinierten Struktur aufzusetzen. Die Vorgaben oder Vorschläge so eines Templates beziehen sich zum einen Teil auf eine Projektstruktur und zum anderen Teil auf bereits eingebettete Bibliotheken oder Frameworks. Für ASP.NET Core gibt es zahlreiche Vorlagen oder vorgefertigte Open-Source-Projekte, um verschiedene Architekturen und Entwurfsmuster umzusetzen.Zwei Beispiele dafür sind NopCommerce [9] und Squidex [10]. Ersteres ist eine beliebte Open-Source-E-Commerce-Anwendung, die stabil ist und zahlreiche Anpassungen unterstützt. Zudem sind verschiedene Plug-ins verfügbar, um die Anwendung zu erweitern. Squidex ist ein Headless CMS und Content Management Hub, das mit ASP.NET Core, OData- und CQRS-Pattern entwickelt wurde.Wenn diese fast fertigen Lösungen zum eigenen Problem passen, dann sind das ebenfalls sehr gute Abkürzungen, um bei der Entwicklung viel Aufwand zu sparen. Es muss auch nicht unbedingt ASP.NET Core sein, siehe die Alternativen im Kasten Alternative Backends.

Alternative Backends

Neben ASP.NET Core als Backend gibt es zahlreiche weitere Möglichkeiten. BaaS als Backend as a Service wird viel zu oft außen vor gelassen, wenn No- oder Low-Code nicht direkt von Anfang an mitgedacht werden. Denn dann ist die Tendenz einer Eigenentwicklung sehr hoch und fertige BaaS-Lösungen werden nicht berücksichtigt.
Weitere Vorlagen bieten unter anderem die Produkte Dotnet-Boxed [11], Clean Architecture [12] und sowie ngX Starter Kit [13]. Diese Templates definieren gut zu nutzende Projektstrukturen, um komplexe Themen einfach zu verpacken. Das Clean-Architecture-Template bietet eine Vorlage zum Erstellen einer SPA mit Angular und ASP.NET Core nach den Prinzipien der Clean Architecture. Ein Projekt auf Grundlage dieser Vorlage lässt sich über das zugehörige NuGet-Paket verwenden, indem dieses Paket zuvor installiert und ausgeführt wird.Wenn eine vollständige Single-Page-Anwendung geplant ist und nicht ausschließlich das Backend oder Frontend, dann bietet Microsoft gute Tutorials, um ASP.NET Core mit Angular, React oder Vue zu verheiraten. Das Resultat dieser Tutorials ist eine fertige SPA mit einer dieser Web-Framework-Technologien, die sich anschließend für das eigene Projekt nutzen lässt.

Nützliche Bibliotheken und Frameworks

Die obigen Abschnitte sind auf etliche Merkmale und wichtige Punkte eingegangen, die bei der Entwicklung eines SaaS-Produkts zu berücksichtigen sind. Für .NET und im Umfeld von ASP.NET Core haben sich zahlreiche Bibliotheken und Frameworks etabliert, die nützlich sind, wenn SaaS-Produkte umgesetzt werden sollen.So beispielsweise beim Thema Logging, wo es eine sehr breite Auswahl gibt. Einige Beispiele sind Elmah.io, Graylog [14], Kisslog, Log4net, Microsoft.Extensions.Logging, NLog, Sentry und Serilog. Zum Teil sind das einzelne Bibliotheken, die das Logging vereinfachen, beispielsweise die Microsoft Extensions oder NLog; zum anderen sind sie mit Logging-Anbietern verknüpft, wie bei Graylog. Diese erlauben es, dass die Protokolldaten auf einem externen SaaS-System gespeichert werden, um sie dort zu sammeln, zu verwalten sowie analysieren zu können.Ähnlich sieht es beim Thema Mandantenfähigkeit aus. Dort existieren Projekte wie SaaSKit [15], das etwas in die Jahre gekommen zu sein scheint, sowie Finbuckle.MultiTenant [16] und Orchard Core [17]. Alle drei bieten unter anderem die Möglichkeit, modulare, mandantenfähige Anwendungen mit ASP.NET Core zu implementieren.In eine ähnliche Richtung gehen Frameworks wie ABP [18]. Sie bieten ein vollständiges Framework an, um Webanwendungen zu erstellen, beispielsweise auf Basis von Microservices und Domain Driven Design. Mandantenfähigkeit gehört ebenfalls dazu und ist ein Merkmal von vielen.

Die Königsdisziplin: Externe Dienste einbinden

Bei der Entwicklung eigener (Micro-)SaaS-Lösungen sollten Sie auch immer einen Blick über den Tellerrand werfen, wenn es um Funktionalitäten des geplanten Produkts geht. Gerade in den letzten Jahren haben sich zahlreiche Anbieter mit Softwareprodukten hervorgetan, die dem Entwickler Funktionalitäten (und Aufwand) in erheblichem Maße abnehmen können. Wenn es im Kontext der eigenen SaaS-Idee daher möglich ist, können diese externen Dienste die Entwicklung beträchtlich beschleunigen.Zum Beispiel Anbieter wie Strapi [19] oder Storyblok [20] als Headless-Content-Management-Systeme (CMS). Dadurch lassen sich Inhalte extern in ordentlichen Editoren erstellen, um sie dann unkompliziert über APIs in eigene Projekte einzubinden. Zudem hat sich Headless Commerce als weiterer Trend etabliert. Headless Commerce ist ein Begriff für eine Softwarearchitektur, bei der die zentrale Annahme die Trennung der Nutzeroberfläche (Frontend) von der Geschäftslogik (Backend) ist. Diese beiden Schichten kommunizieren über APIs und es bestehen keine strikten Abhängigkeiten zwischen ihnen. Dabei wird das Frontend mit einer Headles-eCommerce-Plattform verbunden und wahlweise, wenn notwendig, ein Headless CMS dazugeschaltet. Dadurch lassen sich direkt Bezahlfunktionen einbinden, ohne diese selbst implementieren zu müssen. Vue Storefront [21] ist ein Beispiel dafür.Daher ist es bei der Entwicklung eines SaaS-Projekts so elementar, auf externe Dienste zu schauen, um Abkürzungen zu nehmen, wo immer es möglich ist. Zugegeben ist das aber auch etwas, das viele Entwickler erst lernen müssen, da der Drang, etwas selbst zu implementieren, sehr stark ist.

Ist die Technologie entscheidend?

Bei der Entwicklung von (Micro-)SaaS-Produkten gibt es viele Diskussionen rund um die eingesetzte Technologie. Die
.NET-Community argumentiert gegen die PHP-Community und umgekehrt und im Frontend stehen sich Fans von Angular, React und Vue argumentativ gegenüber. Hinzu kommen immer mehr Multi Page Application (MPA) Frameworks, sodass darüber hinaus Diskussionen über SPA vs. MPA aufkommen, was die Entscheidung für einen Weg oder eine Technologie nicht einfacher macht.In der Praxis sieht es wesentlich differenzierter aus. Das ­bezieht sich gar nicht auf die Technologie, sondern auf die Tatsache, dass ein nicht unerheblicher Teil der SaaS-Vor­haben an anderen Kriterien scheitert als an der Technologieauswahl. Mittlerweile lassen sich sicherlich die meisten Projekte mit praktisch jeder Webtechnologie umsetzen. Die konkreten Einschränkungen werden immer weniger. Wer ein SaaS-Produkt starten möchte, sollte sich daher weniger auf eine konkrete Technologie fokussieren, sondern das nutzen, was bereits bekannt ist und beherrscht wird. Das steigert die Erfolgsaussichten enorm. Zudem ist es sehr wichtig, vorhandene externe Dienste einzubinden, damit solche Dinge nicht jedes Mal neu entwickelt werden müssen.Daher lautet der Tipp, sich auf das Geschäftsproblem und die schnelle Prototypenentwicklung zu konzentrieren und nicht übermäßig auf die Technologieauswahl.

Fazit

ASP.NET Core eignet sich zweifelsfrei, um schnell und unkompliziert (Micro-)SaaS-Projekte zu stemmen. Die Technologie ist ausgereift, läuft mittlerweile auf zahlreichen Systemen, ist Open Source und die Unterstützung der Community ist umfassend. Egal ob Webanwendung oder API-Projekt, ASP.NET Core beherrscht beide Aspekte und lässt sich mit Vue und Co. problemlos zu einer funktionsfähigen SPA ausbauen.Wer ASP.NET (Core) kennt und ein SaaS-Projekt aufbauen möchte, sollte sich nicht von der Start-up-Community ausbremsen lassen, nur weil dort gerade andere Technologien in sind. Das mag in einem Jahr schon wieder ganz anders aussehen. Der Geschwindigkeitsvorteil bei der Entwicklung durch die bekannte Technologie ist schwer wettzumachen.Dennoch ist vor der Entwicklung ein kurzer Blick auf externe Dienste zu empfehlen, damit keine Bezahl- oder Abrechnungssysteme etc. komplett neu implementiert werden, wenn dies praktisch nicht notwendig ist.

Fussnoten

  1. Storemapper, http://www.storemapper.com
  2. Tyler Tringas, What Is Micro-SaaS & Why Should You Read This, http://www.dotnetpro.de/SL2211SaaS1
  3. Authentication and authorization for SPAs, http://www.dotnetpro.de/SL2211SaaS2
  4. GitHub, Identity, http://www.dotnetpro.de/SL2211SaaS3
  5. Rick Anderson, Scaffold Identity in ASP.NET Core projects, http://www.dotnetpro.de/SL2211SaaS4
  6. Sentry, http://www.dotnetpro.de/SL2211SaaS5
  7. Dynatrace, http://www.dotnetpro.de/SL2211SaaS6
  8. Fabian Deitelhoff, Wie geht es dir? ASP.NET Core Health Checks, dotnetpro 8/2022, Seite 74 ff., http://www.dotnetpro.de/A2208Frameworks
  9. nopCommerce, http://www.dotnetpro.de/SL2211SaaS7
  10. GitHub, Squidex, http://www.dotnetpro.de/SL2211SaaS8
  11. Github, .NET Boxed Templates, http://www.dotnetpro.de/SL2211SaaS9
  12. GitHub, Clean Architecture Solution Template, http://www.dotnetpro.de/SL2211SaaS10
  13. GitHub, ngX Starter Kit, http://www.dotnetpro.de/SL2211SaaS11
  14. GitHub, Gelf.Extensions.Logging, http://www.dotnetpro.de/SL2211SaaS12
  15. GitHub, SaaSKit, http://www.dotnetpro.de/SL2211SaaS13
  16. GitHub, Finbuckle.MultiTenant 6.8.1, http://www.dotnetpro.de/SL2211SaaS14
  17. Orchard Core, http://www.dotnetpro.de/SL2211SaaS15
  18. ABP, https://abp.io
  19. Strapi, http://www.dotnetpro.de/SL2211SaaS16
  20. Storyblok, http://www.storyblok.com
  21. Vue Storefront, https://vuestorefront.io
  22. Choose between ASP.NET 4.x and ASP.NET Core, http://www.dotnetpro.de/SL2211SaaS17
  23. Firebase, https://firebase.google.com
  24. Supabase, https://supabase.com

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Evolutionäres Prototyping von Business-Apps - Low Code/No Code und KI mit Power Apps
Microsoft baut Power Apps zunehmend mit Features aus, um die Low-Code-/No-Code-Welt mit der KI und der professionellen Programmierung zu verbinden.
19 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige