.NET-Microservices: .NET-Microservices-Architektur für .NET-Containeranwendungen.NET Microservices: Architecture for Containerized .NET Applications

Bucheinband

EDITION v2.2: auf ASP.NET Core 2.2 aktualisiertEDITION v2.2 - Updated to ASP.NET Core 2.2

Dieser Leitfaden ist eine Einführung in das Entwickeln von auf Microservices basierenden Anwendung und das Verwalten derselben mithilfe von Containern.This guide is an introduction to developing microservices-based applications and managing them using containers. Er erläutert das Architekturdesign und Implementierungsansätze mithilfe von .NET Core und Docker-Containern.It discusses architectural design and implementation approaches using .NET Core and Docker containers.

Um den Einstieg einfacher zu gestalten, konzentriert sich der Leitfaden auf eine auf Containern und Microservice basierende Referenzanwendung, die Sie erforschen können.To make it easier to get started, the guide focuses on a reference containerized and microservice-based application that you can explore. Die Referenzanwendung ist im eShopOnContainers-GitHub-Repository verfügbar.The reference application is available at the eShopOnContainers GitHub repo.

EinführungIntroduction

Unternehmen sparen zunehmend Kosten, lösen Entwicklungsprobleme und verbessern DevOps und Produktvorgänge durch das Verwenden von Containern.Enterprises are increasingly realizing cost savings, solving deployment problems, and improving DevOps and production operations by using containers. Microsoft hat mit Produkten wie Azure Kubernetes Service und Azure Service Fabric sowie durch die Partnerschaft mit Marktführern wie Docker, Mesosphere und Kubernetes Containerinnovationen für Linux und Windows veröffentlicht.Microsoft has been releasing container innovations for Windows and Linux by creating products like Azure Kubernetes Service and Azure Service Fabric, and by partnering with industry leaders like Docker, Mesosphere, and Kubernetes. Diese Produkte stellen Containerlösungen bereit, die Unternehmen beim Erstellen und Bereitstellen von Anwendungen mit Cloudgeschwindigkeit und im Cloudmaßstab unterstützen, unabhängig von der Wahl ihrer Plattformen oder Tools.These products deliver container solutions that help companies build and deploy applications at cloud speed and scale, whatever their choice of platform or tools.

Docker entwickelt sich praktisch zum Standard in der Containerindustrie und wird von den meisten wichtigen Anbietern der Windows- und Linux-Ökosysteme unterstützt.Docker is becoming the de facto standard in the container industry, supported by the most significant vendors in the Windows and Linux ecosystems. (Microsoft ist einer der wichtigsten Cloudanbieter, die Docker unterstützen.) In Zukunft wird Docker wahrscheinlich in jedem lokalen oder Cloud-Datencenter allgegenwärtig sein.(Microsoft is one of the main cloud vendors supporting Docker.) In the future, Docker will probably be ubiquitous in any datacenter in the cloud or on-premises.

Darüber hinaus hat sich die Microservices-Architektur zu einem wichtigen Ansatz für verteilte unternehmenskritische Anwendungen entwickelt.In addition, the microservices architecture is emerging as an important approach for distributed mission-critical applications. In einer auf Microservice basierenden Architektur wird die Anwendung auf einer Sammlung von Diensten erstellt, die unabhängig entwickelt, getestet, bereitgestellt und mit Versionsangabe versehen werden können.In a microservice-based architecture, the application is built on a collection of services that can be developed, tested, deployed, and versioned independently.

Über diesen LeitfadenAbout this guide

Dieser Leitfaden ist eine Einführung in das Entwickeln von auf Microservices basierenden Anwendung und das Verwalten derselben mithilfe von Containern.This guide is an introduction to developing microservices-based applications and managing them using containers. Er erläutert das Architekturdesign und Implementierungsansätze mithilfe von .NET Core und Docker-Containern.It discusses architectural design and implementation approaches using .NET Core and Docker containers. Um den Einstieg in Container und Microservices einfacher zu gestalten, konzentriert sich der Leitfaden auf eine auf Containern und Microservice basierende Verweisanwendung, die Sie erforschen können.To make it easier to get started with containers and microservices, the guide focuses on a reference containerized and microservice-based application that you can explore. Die Beispielanwendung ist im eShopOnContainers-GitHub-Repository verfügbar.The sample application is available at the eShopOnContainers GitHub repo.

Dieser Leitfaden enthält in erster Linie grundlegende Entwicklungs- und Architekturrichtlinien auf Ebene der Entwicklungsumgebung mit einem Schwerpunkt auf zwei Technologien: Docker und .NET Core.This guide provides foundational development and architectural guidance primarily at a development environment level with a focus on two technologies: Docker and .NET Core. Dieser Leitfaden ist dafür gedacht, dass Sie ihn lesen, wenn Sie über das Design Ihrer Anwendung nachdenken, ohne sich auf die Infrastruktur (Cloud oder lokal) Ihrer Produktionsumgebung zu konzentrieren.Our intention is that you read this guide when thinking about your application design without focusing on the infrastructure (cloud or on-premises) of your production environment. Die Entscheidung über Ihre Infrastruktur treffen Sie später, wenn Sie Ihre produktionsbereiten Anwendungen erstellen.You will make decisions about your infrastructure later, when you create your production-ready applications. Deshalb ignoriert dieser Leitfaden die Infrastruktur und konzentriert sich auf die Entwicklungsumgebung.Therefore, this guide is intended to be infrastructure agnostic and more development-environment-centric.

Der nächste Schritt nach dem Durcharbeiten dieses Leitfadens ist der, mehr über produktionsbereite Microservices in Microsoft Azure zu erfahren.After you have studied this guide, your next step would be to learn about production-ready microservices on Microsoft Azure.

VersionVersion

Dieser Leitfaden wurde für die Version .NET Core 2.2 überarbeitet und weist viele weitere Aktualisierungen auf, die sich auf die gleiche „Generation“ von Technologien beziehen (alsoThis guide has been revised to cover .NET Core 2.2 version plus many additional updates related to the same “wave” of technologies (that is. Azure und ergänzende Technologien von Drittanbietern), die zeitlich mit .NET Core 2.2 zusammenfallen.Azure and additional 3rd party technologies) coinciding in time with .NET Core 2.2. Aus diesem Grund wurde auch die Versionsnummer des Buchs auf Version 2.2 aktualisiert.That’s why the book version has also been updated to version 2.2.

Was in diesem Leitfaden nicht behandelt wirdWhat this guide does not cover

Dieser Leitfaden konzentriert sich nicht auf den Lebenszyklus der Anwendung, DevOps, CI/CD-Pipelines oder Teamarbeit.This guide does not focus on the application lifecycle, DevOps, CI/CD pipelines, or team work. Der komplementäre Leitfaden Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Lebenszyklus von Docker-Containeranwendungen mit der Microsoft-Plattform und Microsoft-Tools) konzentriert sich auf dieses Thema.The complementary guide Containerized Docker Application Lifecycle with Microsoft Platform and Tools focuses on that subject. Der aktuelle Leitfaden enthält ebenfalls keine Details zu der Implementierung in die Azure-Infrastruktur, z.B. Informationen zu bestimmten Koordinatoren.The current guide also does not provide implementation details on Azure infrastructure, such as information on specific orchestrators.

Zusätzliche RessourcenAdditional resources

  • Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Lebenszyklus von Docker-Containeranwendungen mit der Microsoft-Plattform und Microsoft-Tools) (E-Book zum Download)Containerized Docker Application Lifecycle with Microsoft Platform and Tools (downloadable e-book)
    https://aka.ms/dockerlifecycleebook

Zielgruppe dieses LeitfadensWho should use this guide

Dieser Leitfaden wurde für Entwickler und Lösungsarchitekten geschrieben, die mit der Entwicklung von auf Docker basierenden Anwendungen und mit der auf Microservices basierenden Architektur noch nicht vertraut sind.We wrote this guide for developers and solution architects who are new to Docker-based application development and to microservices-based architecture. Dieser Leitfaden ist für Sie geeignet, wenn Sie mehr über das Entwickeln, Entwerfen und Implementieren von Machbarkeitsstudienanwendungen mit den Entwicklungstechnologien von Microsoft (mit Schwerpunkt auf .NET Core) und mit Docker-Containern erfahren möchten.This guide is for you if you want to learn how to architect, design, and implement proof-of-concept applications with Microsoft development technologies (with special focus on .NET Core) and with Docker containers.

Außerdem kann dieser Leitfaden hilfreich für Sie sein, wenn Sie ein technischer Entscheidungsträger sind, z.B. ein Unternehmensarchitekt, der einen Überblick über die Architektur und Technologie erhalten möchte, bevor über einen Ansatz für neue und moderne verteilte Anwendungen entschieden wird.You will also find this guide useful if you are a technical decision maker, such as an enterprise architect, who wants an architecture and technology overview before you decide on what approach to select for new and modern distributed applications.

So verwenden Sie diesen LeitfadenHow to use this guide

Im ersten Teil dieses Leitfadens werden Docker-Container vorgestellt. Außerdem wird erläutert, wie zwischen .NET Core und .NET Framework als Entwicklungsframework gewählt werden kann und ein Überblick über Microservices bereitgestellt.The first part of this guide introduces Docker containers, discusses how to choose between .NET Core and the .NET Framework as a development framework, and provides an overview of microservices. Dieser Inhalt ist an Architekten und technische Entscheidungsträger gerichtet, die sich einen Überblick verschaffen möchten, aber sich nicht auf die Details zur Implementierung des Codes konzentrieren müssen.This content is for architects and technical decision makers who want an overview but don't need to focus on code implementation details.

Der zweite Teil dieses Leitfadens beginnt mit dem Abschnitt Development Process for Docker Based Applications (Entwicklungsprozess für auf Docker basierende Anwendungen).The second part of the guide starts with the Development process for Docker based applications section. Der Schwerpunkt liegt auf den Mustern für die Entwicklung und Microservices, um Anwendungen mithilfe von .NET Core und Docker zu implementieren.It focuses on development and microservice patterns for implementing applications using .NET Core and Docker. Dieser Abschnitt ist am besten für Entwickler und Architekten geeignet, die sich auf den Code, auf Muster und auf Implementierungsdetails konzentrieren möchten.This section will be of most interest to developers and architects who want to focus on code and on patterns and implementation details.

Bei der eShopOnContainers-Anwendung handelt es sich um eine Open-Source-Referenz-App für .NET Core und Microservices, die für die Bereitstellung mithilfe von Docker-Containern entwickelt wurde.The eShopOnContainers application is an open-source reference app for .NET Core and microservices that is designed to be deployed using Docker containers. Die Anwendung besteht aus mehreren Subsystemen, einschließlich mehrerer Front-Ends der E-Store-Benutzeroberfläche (eine Web-MVC-App, eine Web-SPA und eine native mobile App).The application consists of multiple subsystems, including several e-store UI front ends (a Web MVC app, a Web SPA, and a native mobile app). Sie enthält ebenfalls den Back-End-Microservice und Container für alle erforderlichen serverseitigen Vorgänge.It also includes the back-end microservices and containers for all required server-side operations.

Der Zweck der Anwendung besteht in der Präsentation von Architekturmustern.The purpose of the application is to showcase architectural patterns. SIE STELLT KEINE PRODUKTIONSBEREITE VORLAGE DAR, die sich als Ausgangspunkt für reale Anwendungen eignet.IT IS NOT A PRODUCTION-READY TEMPLATE to start real-world applications. Tatsächlich befindet sich die Anwendung in einem dauerhaften Betastadium, da sie ebenfalls zum Testen neuer, potenziell interessanter Technologien direkt bei ihrem Erscheinen verwendet wird.In fact, the application is in a permanent beta state, as it’s also used to test new potentially interesting technologies as they show up.

Senden Sie uns Ihr Feedback!Send us your feedback!

Dieser Leitfaden wurde geschrieben, um Ihnen die Architektur von Containeranwendungen und Microservices in .NET näherzubringen.We wrote this guide to help you understand the architecture of containerized applications and microservices in .NET. Der Leitfaden und die verknüpfte Verweisanwendung werden weiterentwickelt. Wir freuen uns über Ihr Feedback!The guide and related reference application will be evolving, so we welcome your feedback! Wenn Sie Kommentare dazu haben, wie dieser Leitfaden verbessert werden kann, senden Sie diese bitte an:If you have comments about how this guide can be improved, please send them to:

dotnet-architecture-ebooks-feedback@service.microsoft.com

MitwirkendeCredits

Mitautoren:Co-Authors:

Cesar de la Torre, leitender PM, .NET-Produktteam, Microsoft Corp.Cesar de la Torre, Sr. PM, .NET product team, Microsoft Corp.

Bill Wagner, leitender Inhaltsentwickler, C+E, Microsoft Corp.Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp.

Mike Rousos, leitender Softwareentwickler, DevDiv CAT-Team, MicrosoftMike Rousos, Principal Software Engineer, DevDiv CAT team, Microsoft

Editoren:Editors:

Mike PopeMike Pope

Steve HoagSteve Hoag

Teilnehmer und Prüfer:Participants and reviewers:

Jeffrey Richter, Partner Software Engineer, Azure-Team, MicrosoftJeffrey Richter, Partner Software Eng, Azure team, Microsoft

Jimmy Bogard, leitender Architekt bei HeadspringJimmy Bogard, Chief Architect at Headspring

Udi Dahan, Gründer & CEO, bestimmte SoftwareUdi Dahan, Founder & CEO, Particular Software

Jimmy Nilsson, Mitgründer und CEO von Factor10Jimmy Nilsson, Co-founder and CEO of Factor10

Glenn Condron, leitender Programm-Manager, ASP.NET-TeamGlenn Condron, Sr. Program Manager, ASP.NET team

Mark Fussell, PM-Teamleiter, Azure Service Fabric-Team, MicrosoftMark Fussell, Principal PM Lead, Azure Service Fabric team, Microsoft

Diego Vega, PM-Teamleiter, Entity Framework-Team, MicrosoftDiego Vega, PM Lead, Entity Framework team, Microsoft

Barry Dorrans, leitender Sicherheitsprogramm-ManagerBarry Dorrans, Sr. Security Program Manager

Rowan Miller, leitender Programm-Manager, MicrosoftRowan Miller, Sr. Program Manager, Microsoft

Ankit Asthana, leitender PM-Manager, .NET-Team, MicrosoftAnkit Asthana, Principal PM Manager, .NET team, Microsoft

Scott Hunter, Partner Director von PM, .NET-Team, MicrosoftScott Hunter, Partner Director PM, .NET team, Microsoft

Nish Anil, Senior Program Manager, .NET-Team, MicrosoftNish Anil, Sr. Program Manager, .NET team, Microsoft

Dylan Reisenberger, Architekt und Entwicklungsleiter bei PollyDylan Reisenberger, Architect and Dev Lead at Polly

Steve „ardalis“ Smith – Softwarearchitekt und Trainer – Ardalis.comSteve "ardalis" Smith - Software Architect and Trainer - Ardalis.com

Ian Cooper, Codearchitekt bei BrighterIan Cooper, Coding Architect at Brighter

Unai Zorrilla, Architekt und Entwicklungsleiter bei Plain ConceptsUnai Zorrilla, Architect and Dev Lead at Plain Concepts

Eduard Tomas, Entwicklungsleiter bei Plain ConceptsEduard Tomas, Dev Lead at Plain Concepts

Ramon Tomas, Entwickler bei Plain ConceptsRamon Tomas, Developer at Plain Concepts

David Sanz, Entwickler bei Plain ConceptsDavid Sanz, Developer at Plain Concepts

Javier Valero, Chief Operating Officer bei Grupo SolutioJavier Valero, Chief Operating Officer at Grupo Solutio

Pierre Millet, leitender Berater, MicrosoftPierre Millet, Sr. Consultant, Microsoft

Michael Friis, Produktmanager, Docker IncMichael Friis, Product Manager, Docker Inc

Charles Lowell, Softwareentwickler, VS CAT-Team, MicrosoftCharles Lowell, Software Engineer, VS CAT team, Microsoft

Miguel Veloso, leitender Berater bei Turing ChallengeMiguel Veloso, Sr. Consultant at Turing Challenge

DOWNLOAD verfügbar unter: https://aka.ms/microservicesebookDOWNLOAD available at: https://aka.ms/microservicesebook

VERÖFFENTLICHT VONPUBLISHED BY

Microsoft Developer Division, .NET- und Visual Studio-ProduktteamsMicrosoft Developer Division, .NET and Visual Studio product teams

Eine Abteilung der Microsoft CorporationA division of Microsoft Corporation

One Microsoft WayOne Microsoft Way

Redmond, Washington 98052-6399Redmond, Washington 98052-6399

Copyright © 2019 Microsoft CorporationCopyright © 2019 by Microsoft Corporation

Alle Rechte vorbehalten.All rights reserved. Die Inhalte dieses Buchs dürfen in keiner Form und für keinen Zweck ohne die schriftliche Genehmigung des Herausgebers reproduziert oder übertragen werden.No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher.

Dieses Buch wird unverändert bereitgestellt und drückt die Ansichten und Meinungen des Autors aus.This book is provided “as-is” and expresses the author’s views and opinions. Die Ansichten, Meinungen und Informationen, die in diesem Buch zum Ausdruck gebracht werden, einschließlich URLs und anderer Verweise auf Internetwebsites, können ohne vorherige Ankündigung geändert werden.The views, opinions and information expressed in this book, including URL and other Internet website references, may change without notice.

Einige der hier dargestellten Beispiele dienen nur zu Illustrationszwecken und sind fiktiv.Some examples depicted herein are provided for illustration only and are fictitious. Keinerlei Zuordnung oder Verbindung zu realen Gegebenheiten ist beabsichtigt oder sollte gefolgert werden.No real association or connection is intended or should be inferred.

Microsoft und die auf der Webseite „Marken“ unter https://www.microsoft.com aufgelisteten Marken sind Marken der Microsoft-Unternehmensgruppe.Microsoft and the trademarks listed at https://www.microsoft.com on the “Trademarks” webpage are trademarks of the Microsoft group of companies.

Mac und macOS sind Marken von Apple Inc.Mac and macOS are trademarks of Apple Inc.

Das Logo des Docker-Wals ist eine registrierte Marke von Docker, Inc. Verwendet mit Genehmigung.The Docker whale logo is a registered trademark of Docker, Inc. Used by permission.

Alle anderen Marken und Logos sind Eigentum der jeweiligen Besitzer.All other marks and logos are property of their respective owners.