Dieser Artikel wurde maschinell übersetzt.

Muster und Methoden

Sie können von der Patterns and Practices abhängen.

Alex Homer

Inhalt

Muster und Methoden
Ein Guiding-Blatt
Umgang mit vorhanden
Ein kurze Verlauf der Abhängigkeiten bei Microsoft
Erweitern Sie
Zusammenfassung

Schreiben von Computercode für die in äußerst schwierig sollen, verwendet.Wenn begann ich Programmieren Heimcomputer mehr vor Jahren als ich wichtig sind, die einzige Möglichkeit merken damit ein Programm ausgeführt auf mehr als ein desultory crawl wurde mit Computer-code zu schreiben.Selbst ein einfaches Textverarbeitungsprogramm Dienstprogramm kann mehrere Wochen zum Erstellen, wie Sie detailgetreuen und realistischen Strecken geplant die Speicherzuordnungen für Variablen, schrieb Routinen für einfache Aufgaben wie z. B. Zeichnen von Zeichen auf dem Bildschirm und die Decodierung Tastatur eingeben, und dann jede einzelne Prozessor-Anweisung in einem assembler eingegeben dauern.

Heute ist, erstellen leistungsfähige code einfach.Wir uns für gewährt die Vielzahl von tools, höheren Sprachen runtime-frameworks, Codebibliotheken und Betriebssystemdienste, die es ermöglichen Anwendungen schnell und effizient zu erstellen.Jedoch beim Erstellen der code geworden viel einfacher, der Vorgang zum Erstellen von Anwendungen nicht hat.Wir erwarten noch viel mehr von unseren modernen Anwendungen als jemals zuvor.Sie müssen über Netzwerke kommunizieren Interaktion mit anderen Anwendungen und Dienste verfügbar machen äußerst interaktive und reagieren Benutzeroberflächen und rich media und Grafiken unterstützen.Und natürlich Sie müssen stabile, sichere, zuverlässige und verwaltbare.

In der Tat wäre es den Anforderungen von unseren modernen Anwendungen ohne die fortlaufende Wachstum und Weiterentwicklung von Programmiersprachen, Betriebssysteme, Plattformdienste und frameworks angefordert fast unmöglich wäre.Die riesige Zunahme der Komplexität der Anwendungen hat auch erzwungen wir entdecken Sie die Möglichkeiten zum vereinfachen und den code zu organisieren.Den Jahren eine Reihe von versucht und getesteten Programmierung und Entwurf Techniken haben entwickelt, wie z. B. componentization, Objekt-Ausrichtung, und – zuletzt – Dienst Ausrichtung.

Muster und Methoden

Während der Verbesserungen in tools und frameworks vereinfachen, schneller code zu schreiben, und moderne erhöhen erleichtern Sprachen und Programmierung Formatvorlagen besseren code, schreiben, die der einen Bereich, der die meisten Auswirkungen auf unsere Fähigkeit, die Anwendungen in den letzten 10 bis 15 Jahren erstellen wurde die Entwicklung und steigenden Annahme von software-Entwurfsmuster wurde.

Entwurfsmuster werden allgemeine Probleme, die in Anwendungsentwurf und Entwicklung wiederholt auftreten und bieten Techniken, für die Behandlung dieser Probleme beschrieben.Muster auch beschreiben Sie die aktuellen üblich zur Behebung von Problemen der Architektur aus, und zur Handhabung von die Komplexität der Entwurf von Anwendungen angefordert.Die Anordnung der Elemente code und Lösung sind das Herzstück von software design heute, und Muster bieten uns Möglichkeiten zur Vereinfachung und Organisieren dieser Elemente, wobei die am besten zum Maximieren der Leistung, Flexibilität und Wartbarkeit für Anwendungen.

Seit der Veröffentlichung des Buchs Boden-aktuelle vom Gang der vier, Erich Gamma, Richard Helm, Ralph Johnson und John M.Vlissides, Entwurf Muster: Elements of Reusable Object-Oriented Software (Addison-Wesley, 1996), die viele der grundlegenden Entwurfsmuster dokumentiert werden, die wir uns für heute erteilt, ist die Anzahl der Entwurfsmuster für Entwickler und Designer verfügbar mit einer phänomenalen rate geworden.Nahezu jeden Aspekt der die Erstellung von software ist design und Implementierung der Muster verknüpft, und dokumentieren alle einfach eine unmöglich Aufgabe geworden.Stattdessen ist Designer und Entwickler in specialties fragmentiert und erfahren, die am häufigsten für Ihre eigenen Bereich Fachwissen Muster.

Ein Guiding-Blatt

2002, Der patterns & practices-Gruppe bei Microsoft Corporation veröffentlicht die Anwendungsarchitektur für .NET: Entwerfen von Anwendungen und Dienste Handbuch, Onlineschalten zusammen die grundlegende Gestaltung Anleitungen und Spezialisten Ratschläge zur Architekten, die auf dem Microsoft .NET Framework-Anwendungen erstellen.Technologien ändern über einen Zeitraum und während die Grundlagen von Entwurf und Entwicklung in dem Handbuch beschriebenen heute, der im ursprüngliche Handbuch nicht behandelt einige der neuen Funktionen von .NET Framework oder behandeln die Entwurfsaspekte Teilzahlungsraten für neue Arten von Anwendungen gleichmäßig gültig sind jedoch.

Für die letzte mehrere Monate hat ein umfassende team von Spezialisten der Branche und Stichwortexperten, innerhalb und außerhalb von Microsoft, zusammenarbeiten wurde, um eine neue Version des im Handbuch zu erstellen, die eine umfassende Einführung in die Architektur und Entwerfen von Lösungen auf der Microsoft .NET Framework enthält.Im Microsoft Application Architecture Guide (2nd Edition) beschrieben, allgemeinen architektonischen Prinzipien und Mustern und aktuellen Denken auf akzeptierte Methoden der Entwurf und Entwicklung.Es enthält außerdem eine Anleitung zur Anwenden von diesen Faktoren auf bestimmte Arten von Anwendungen und bietet einen umfassenden Überblick über die viele Plattformdienste und Codebibliotheken zur Verfügung, um Implementierung einfacher zu machen.

Selbstverständlich ist zu einen häufig verwendeten Ausdruck aufnehmen, software und die Systemarchitektur etwas, das die Frage Leben, das Universum und alles bevorzugt.Keine einzige Publikation kann alle möglichen Fragen oder hoffen, dass zur vollständig umfassende Abdeckung des jedes mögliche Szenarios.Zielsetzung jedoch die neue Führungslinie, um die Informationen bereitzustellen, die Sie benötigen, ob Sie einfach, designing.NET Framework-basierte Anwendungen, eine erfahrene Entwickler, die in .NET Framework, die von einer anderen Plattform, durchführbar Architekt benötigen Sie spezielle Informationen und Ratschläge, Verschieben beginnen / s oder einfach interessiert lernen mehr über die umfassende Szenarien und Verkaufschancen, die von .NET Framework zur Verfügung gestellt.

Umgang mit vorhanden

Um Vorgehensweisen der Industrie zu veranschaulichen, listet die Führungslinie allgemeine Prinzipien, die Sie beim Entwerfen von fast jede Art von Anwendung gelten soll.Diese Prinzipien zählen Trennung der Probleme, die Verwendung von Abstraktionsschicht zur Implementierung von lose Kupplung zwischen Ebenen und Komponenten, -Speicherort Dienstfunktionen Implementieren und Verwalten von crosscutting bedenken, wie die Protokollierung und Sicherheit verwalten.Obwohl diese möglicherweise wünschenswert sein, aber Absichten zu sein scheint, kann eine Technik Ihnen mehrere Entwurfsprinzipien problemlos anwenden helfen.Das Prinzip Abhängigkeit Inversion impliziert Trennung von Bedenken über Abstraktionen statt konkrete Implementierungen.Hinsichtlich der Entwurfsmuster können Sie dies erzielen, indem Sie das Muster Inversion von der (IoC) und die zugehörigen Muster, Dependency Injection (DI) anwenden.

Die theoretisch ist einfach genug.Anstatt zur Entwurfszeit den tatsächlichen konkreten Typ, den jeder Klasse oder eine Komponente verwendet werden einige Aktivitäten oder Vorgang ausführen, ordnen Sie Sie für diese Klassen oder Komponenten, die das entsprechende-Objekt aus einem container abrufen, dass Sie zuvor mit dem Typ Karten konfiguriert und Typen registriert.Beispielsweise kann wie in der einfachen Anwendung in Abbildung 1 dargestellt, die Zugriffskomponente für Ihre Daten die Dienste für eine Protokollierungskomponente erforderlich.Wie Sie Ihr crosscutting-code aus dem code aufgabenspezifischen sowie anwendungsspezifische ordnungsgemäß abstrahiert, haben möglicherweise mehrere Protokollierung Komponenten zur Auswahl.Vielleicht eine wurde entwickelt für die Verwendung beim Debuggen von der Anwendung, eine für die Verwendung bei der die Anwendung intern in Ihrem eigenen Netzwerk ausgeführt und eine dritte am Ausführen in einem Unternehmensebene-system, der eine Überwachung Umgebung, z. B. Microsoft System Center verwendet geeignet.

Abbildung 1 eine einfache Anwendung, bietet die Verwendung von Anordnung und eine getrennte Komponente Protokollierung

Es konnten auch der Fall sein, dass Sie mehrere Zugriff Datenkomponenten, jede entworfene für die Verwendung in einer bestimmten Umgebung oder mit einem anderen Typ von Datenspeicher haben.Daher müssen die Geschäftsschicht Wählen Sie die entsprechenden Daten layer Komponente je nach der aktuellen Bereitstellung oder der Laufzeitumgebung.Ähnlich können Sie Dienste haben, die Ihre Anwendung wiederholt, z. B. eine e-mail-Nachricht senden Dienst oder einen Datendienst-transformation verwendet.Abhängigkeit injection kann als einer Dienst Speicherort Fertigungseinrichtung zu Ihrer Anwendung eine Instanz (entweder eine neue Instanz oder einer vorhandenen Instanz) des Diensts zur Laufzeit abgerufen fungieren.

Alle diese Beispiele Beschreibt effektiv eine Abhängigkeit von einem Teil der Anwendung auf einem anderen und Auflösen von diese Abhängigkeiten in einer Weise, die die Objekte nicht eng couple ist das Ziel des Prinzips Abhängigkeit Inversion ist.

Ein kurze Verlauf der Abhängigkeiten bei Microsoft

Sind features, die Implementierung in Anwendungen auf der Microsoft-Plattform Entwicklern dabei helfen relativ kürzlich, obwohl die Prinzipien der Abhängigkeit Inversion um über einen langen Zeitraum wurden.Tatsächlich ist eine Geschichte, dass ein renowned Entwickler in der Java-Welt beim Besuch der Microsoft-campus, remarked, dass die allgemeine belief war, dass niemand bei Microsoft Dependency Injection. buchstabieren konnte Während also ohne sicher ein Rhea myth, es ist der Fall, dass tools, die Entwickler, die viele der gängige Muster implementieren unterstützen eine Priorität in den meisten Bereichen des Unternehmens wurden.

Jedoch steht der patterns & practices-Gruppe bei Microsoft, über unsere eindeutige position der innerhalb des Unternehmens jedoch außerhalb der die wichtigsten Produkt Entwicklungsteams und Abteilungen.Ziel des p & p, wie durch unsere Slogan "bewährte Methoden für die vorhersagbare Ergebnisse" dargestellt ist, damit Entwickler Anleitungen, tools, Bibliotheken, frameworks und eine Vielzahl von anderen Funktionen zum Entwerfen und bessere Anwendungen auf der Microsoft-Plattform erstellen.Einen schnellen Blick auf unsereMSDN-Homepagewird die Breite Palette an Anlagen veranschaulichen, die wir bereitstellen.

Auf diese Ressourcen sind verschiedene Produkte, die dem Dependency Injection-Muster, einschließlich Enterprise Library, Verbundanwendung frameworks und Softwarefactorys verwenden.Während der Entwicklung von diese Anlagen, insbesondere die ursprünglichen Composite Application Block (CAB), es war klar, dass ein wiederverwendbare und sehr konfigurierbare Abhängigkeit injection-Mechanismus erforderlich war, und das team die ursprüngliche version der Object Builder erstellt.

Objekt-Generator ist fast vollständig konfigurierbar, und es wird in der in einer Vielzahl von Produkte in der gesamten p & p und an anderer Stelle innerhalb von Microsoft jetzt verwendet.Es ist jedoch sehr schwer verwenden.Es erfordert, dass eine hervorragende viele Parameter, die komplexe Objekte nutzen und es macht einen Bereich der Ereignisse, die Sie behandeln müssen, um die Konfiguration anzuwenden, die Sie benötigen verfügbar.Erste möchte Dokument Object Builder als Teil der CAB-Projekt zugänglich bald, dass dies ein uphill Aufgabe sein sollte.Zusätzlich Object Builder wurde stattdessen mehr, als ein Abhängigkeit injection-container, und es schien overkill hinsichtlich der allgemeinen Anforderungen für die DI und IoC-Muster implementieren.

Während der Entwicklung von Enterprise Library Version 4.0, Object Builder wurde aktualisiert, nicht ", um es zu vereinfachen, sondern Sie schneller und effizienter machen.Es wurde auch für die Verwendung in der ersten wichtigen Abhängigkeit injection-Mechanismus von Microsoft Optimierung, die squarely an Entwickler für ist, die die DI und IoC-Muster implementieren möchten.Objekt-Generator ist es sich um die Grundlage für einheitliche, ein leichtes, erweiterbare Abhängigkeit injection container, der Konstruktor injection, injection der Eigenschaft und Methode Aufruf injection unterstützt.

Einheitliche bietet Funktionen für vereinfachte Objekterstellung, insbesondere für hierarchische Objekt Strukturen und Abhängigkeiten, Abstraktion der Anforderungen bei Laufzeit oder durch Konfiguration; vereinfachte Verwaltung von crosscutting Überlegungen; und erhöhte Flexibilität durch Verzögern der Komponente-Konfiguration auf den container.Es verfügt über einen service Speicherort Funktionen, und ermöglicht clients die speichern oder den container Zwischenspeichern – sogar in ASP.NET-Webanwendungen.

Seit der Veröffentlichung der ersten version einheitliche in frühen 2008 hat es ein Haus in viele p & p-Anlagen als Standard Mechanismus zum Implementieren der Abhängigkeit Inversion gefunden.Einheitliche hat auch weiterhin während der verbleibenden abwärtskompatibel weiterentwickelt, zum Aktivieren von features in Enterprise Library sowie als einen eigenständigen DI-container verwendet werden.Bei der neuesten Version stellt er die Funktionen zum Implementieren-Instanz und Typ abfangen (über eine Plug-in-Erweiterung), die Implementierungen von Aspekt Oriented Programming Techniken wie Richtlinie injection zu ermöglichen.

Einheitliche hat auch andere DI container-Implementierungen auf bestimmte Vorgänge sollen erzeugt und Anforderungen, wie z. B. eine sehr einfache Implementierung für entwickelt in mobilen Geräten und intelligente Mobiltelefone.In der Zwischenzeit, gehören geplante zukünftige Entwicklungen im Bereich einheitliche und Enterprise Library features zum Öffnen Sie Enterprise Library zu anderen Drittanbietern container Mechanismen, wenn beim Bereitstellen von zusätzlicher Erweiterungen, die neue Funktionen für einheitliche zu aktivieren.Anwenden der Abhängigkeit Inversion

Anwenden diese historischen dazu verlassen und an die hypothetische Anwendung zurückgegeben, können wie Sie das Prinzip Abhängigkeit Inversion Absichten, die weiter oben beschrieben, der Trennung von Bedenken, Abstraktion und lose Kopplung erreichen?Die Antwort lautet konfigurieren Sie einen Abhängigkeit injection-container, z. B. die einheitliche, mit den entsprechenden Typen und geben Sie die Zuordnungen ermöglicht der Anwendung abrufen und Einfügen von Instanzen der entsprechenden Objekte zur Laufzeit.Abbildung 2 zeigt wie Sie den Anwendungsblock einheitliche verwenden können, um diesen container zu implementieren.In diesem Fall füllen Sie den container mit Typ Zuordnungen zwischen Definitionen für Schnittstellen für den Datenkomponenten und Protokollierung-Komponenten und die bestimmten konkreten Implementierungen dieser Schnittstellen, die die Anwendung für die Verwendung von werden soll.

Abbildung 2 Dependency injection auswählbaren die entsprechenden Komponenten zur Laufzeit auf Grundlage der Konfiguration des Containers.

Zur Laufzeit wird die Geschäftsschicht den container, um eine Instanz die richtigen Daten layer-Komponente, abhängig von der aktuellen Zuordnung abzurufen Abfragen.Die Daten-Schicht wird dann den container, um eine Instanz der entsprechenden Protokollierungskomponente, abhängig von der Zuordnung, die für diesen Schnittstellentyp gespeicherten abzurufen abgefragt werden.Als alternative die Daten und die Protokollierung Komponenten können von entsprechenden Basisklassen erben, und Registrierungen im container können zwischen diesen Basistypen und die erbenden konkreten Typen zuordnen.

Dieser container-bezogene Ansatz zum Lösen von Typen und Instanzen bedeutet, dass der Entwickler die Implementierungen für die Daten und die Protokollierung Komponenten, zu ändern, solange diese Implementierungen die erforderliche Funktionen bieten und die entsprechende Schnittstelle (z. B. durch die zugeordnete Schnittstelle implementieren, oder von der zugeordneten Basisklasse erben) verfügbar.Die container Konfiguration kann im code festgelegt werden, zur Laufzeit mit Methoden des Containers, die Typen, Typ Zuordnungen oder vorhandene Instanzen von Objekten zu registrieren.Alternativ können Sie den container auffüllen, indem Sie die Erfassungen aus einer Konfigurationsquelle oder einer Datei, z. B. die Datei ' Web.config ' oder app.config-Datei laden.

Wenn Sie mehr als eine Instanz eines Typs registrieren möchten, können Sie einen Namen definieren jeweils und lösen dann die verschiedenen Arten, indem Sie den Namen angeben.Die Registrierung kann auch die Gültigkeitsdauer der das Objekt, wodurch es leichter-Standort-Formatvorlage Dienstfunktionen erreichen das Dienstobjekt zu registrieren, als Singleton-Klasse oder mit der eine bestimmte Gültigkeitsdauer, wie z. B. pro thread angeben.Das folgende Codebeispiel zeigt einige Beispiele für das Registrieren von Typ Zuordnungen mit den container:

C#
// Register a mapping for the CustomerService class to the IMyService interface. 
myContainer.RegisterType<IMyService, CustomerService>();

// Register the same mapping using a mapping name. 
myContainer.RegisterType<IMyService, CustomerService>("Data");

// Register the first mapping, but as a singleton. 
myContainer.RegisterType<IMyService, CustomerService>(
                         new ContainerControlledLifetimeManager());

Hinweis: die Codebeispiele verweisen, Klassen und Typen mit nur dem Klassennamen. Alias-Typdefinitionen können in der Konfigurationsdatei an alias vollqualifizierten Typ Namen von Klassen, die container-Registrierung, vereinfacht Wenn Sie eine Konfigurationsdatei verwenden.

Um Instanz eines Objekts abzurufen, Sie einfach Abfragen den container durch Festlegen der Typ, den Schnittstellentyp an, oder der Basis Klassentyp (und den Namen), wenn Sie den Typ mit einem Namen registriert, wie in das nächste Beispiel dargestellt. Der container löst Typ, wenn er registriert ist, und erstellt oder gibt eine Instanz des entsprechenden Objekts zurück. Wenn es nicht registriert ist, wird der container einfach erstellt eine neue Instanz dieses Typs und übergibt es zurück. Warum würden Sie Artikel durch den container auflösen, bei keine Registrierung für diesen Typ? Die Idee ist die zusätzliche und nützliche features, das einheitliche und viele andere DI container Mechanismen, bietet von nutzen, die Möglichkeit zum Einfügen von Objekten mithilfe der Konstruktor, Eigenschaft Setters und Aufruf-injection-Methode.

C#
// Retrieve an instance of the mapped IMyService concrete class. 
IMyService result = myContainer.Resolve<IMyService>();
// Retrieve an instance by specifying the mapping name. 
IMyService result = myContainer.Resolve<IMyService>("Data");

Angenommen, wenn Sie eine Instanz eines Objekts durch den container erstellen, einheitliche untersucht die Konstruktoren und Instanzen der entsprechenden Typs wird automatisch in den Konstruktor Parametern einlegen. Wieder das unsere früheren Beispiel für einfache Anwendung, verfügen die Zugriffskomponente für Daten einen Konstruktor, der einen Verweis auf ein Protokollierungskomponente als parameter annimmt. Wenn dieser Parametertyp der Schnittstelle oder Basisklasse für die Protokollierung von Komponenten, die mit dem container registriert ist, wird einheitliche den zugeordneten Typ aufgelöst, eine Instanz erstellen und an den Konstruktor der Komponente Daten (wie in Abbildung 3 gezeigt) übergeben. Sie tun nichts außer registrieren die Zuordnungen.

Abbildung 3-Objekte in der Konstruktor-Parameter einfügen

C#
// In main or startup code:
// Register a mapping for a logging component to the ILogger interface.
// Alternatively, you can specify this mapping in a configuration file. 
myContainer.RegisterType<ILogger, MyLogger>();

...

// In data access component:
// Variable to hold reference to logger.
private ILogger _logger = null;

// Class constructor. Unity will populate the ILogger type parameter.
public DataAccessRoutines(ILogger myLogger)
{
  // store reference to logger
  _logger = myLogger;
  _logger.WriteToLog("Instantiated DataAccessRoutines component");
}

Dies bedeutet, dass Sie den tatsächlichen konkreten Typ, die die Anwendung verwendet ändern können, indem Sie die Konfiguration des Containers ändern – entweder zur Entwurfszeit auf Zeit durch Bearbeiten der Konfiguration oder Ausführen dynamisch basierend auf einen Wert ein, die Ihr code aus der Umgebung sammelt und zum Erstellen oder Aktualisieren die Zuordnung in den container verwendet. Sie können die debug-Protokollierungskomponente bei Bedarf anschließen, oder eine neue "Super schnellen" Protokollierungskomponente einstecken, wenn Sie gefunden haben, dass die alten zu langsam ist. In der Zwischenzeit kann vom Systemadministrator die Konfiguration aktualisieren, nach Bedarf zu überwachen, Verwalten und Anpassen des Verhaltens der Anwendung zur Laufzeit ändern Farbe-Umgebungen und operative Probleme.

Ebenso Wenn eine Abhängigkeit zwischen zwei Objekten, wie z. B. die Abhängigkeit von einer Ansicht auf den Präsentator bei der Implementierung des Muster Model View Presenter (MVP), können Abhängigkeit injection Sie um die Bindung zwischen diesen Klassen zu ändern. Definieren Sie einfach eine Eigenschaft der Klasse anzeigen, als den Präsentator Typ oder Basisklasse Typ und markieren die Eigenschaft mit einer Abhängigkeit attribute, wie in das nächste Beispiel dargestellt:

C#
// Variable to hold reference to controller.
private IPresenter _presenter;

// Property that exposes the presenter in the view class. Unity will inject 
// this automatically because it carries the Dependency attribute.
 [Dependency]
public IPresenter MyViewPresenter
{
  get { return _presenter; }
  set { _presenter = value; }
} 

Hinweis: Attribute werden schnellste an Eigenschaften zum Einlegen.Wenn Sie nicht verwenden Sie die Attribute (, um zu vermeiden, Ihren Klassen zu dem container Kupplung) möchten stattdessen können Sie eine Konfigurationsdatei oder die einheitliche API angeben, welche Eigenschaften eingefügt werden soll.

Wenn Sie die Ansicht, Erstellen indem Sie Sie durch den container auflösen, erkennt einheitliche das Abhängigkeit-Attribut, automatisch eine Instanz der entsprechenden konkrete presenter-Klasse beheben, und diese Sprache als der Wert dieser Eigenschaft der Klasse Ansicht festgelegt.Das Beispiel direkt starten und der Dateierweiterung einheitliche enthaltene veranschaulicht diesen Ansatz in einer Windows Forms-Anwendung.Tatsächlich wird die primäre Form für die Anwendung über den container, wodurch die einheitliche Erstellen und Auffüllen verschiedene Abhängigkeiten in der gesamten Anwendung Konstruktor und Eigenschaft Setters injection aufgelöst.

Erweitern Sie

Einheitliche bietet eine Vielzahl von Funktionen des DI-verknüpft, aber es ist immer extra Sie erzielen möchten.Die Herausforderung mit einheitliche war weiterhin generische genug ist, erfüllen Sie die maximale Anzahl von Anforderungen, beim erweiterbare wird, sodass Sie es an Ihre eigenen speziellen Anforderungen anpassen können.Dies wird erreicht mithilfe des container-Erweiterungen, die Sie dazu fast alles hinsichtlich der Verwaltung Objekterstellung und abrufen können.

Als Beispiel veranschaulichen direkt starten einheitliche enthaltene eine container-Erweiterung, die einen einfachen Mechanismus für die Attribut-bezogene Publish\Subscribe implementiert.Wie einheitliche Instanzen von Objekten erstellt, wires es für diese Attribute in der Klassendateien anhand von Ereignishandlern.Ein weiteres Beispiel generiert ausführliche Protokollinformationen, als es erstellt oder jeden Typ durch den container, der unterstützt beim komplexe Anwendungen Debuggen werden abgerufen.

Dieser große Flexibilität kommt zu, da einheitliche Ihnen für die Interaktion des zugrunde liegenden Object Builder-Mechanismus, über die container-Erweiterung.Endlich, Sie können sagen, aber Object Builder ist äußerst schwierig und ist nicht vollständig dokumentiert.In der Tat die einheitliche-Dokumentation Informationen zu Object Builder hinsichtlich der es von einem container Erweiterungen Interaktion mit, und enthalten die Beispiele direkt starten bieten ausreichend Beispielcode können Sie und ändern.

Zusammenfassung

Es sind viele Ansichten für Anwendungsarchitektur und entwerfen.Der ISO/IEC standard 42010:2007/IEEE 1471 "empfohlene Methoden für Architektur Beschreibung der Software-Intensität Systems" Beschreibt Softwarearchitektur als "grundlegende Organisation eines Systems, seine Komponenten, deren Beziehungen zueinander und der Umgebung, und die Prinzipien führen Entwurf und Entwicklung verkörperten".Jedoch in seinem Buch Muster von Enterprise Application Architecture (Addison-Wesley, 2002), Martin Fowler sagt, ".. .in Ende, Architektur boils nach unten, die jeweils wichtige Inhalte, " Das ist eine viel einfacher Möglichkeit, um der Softwarearchitektur-ClipArts erfassen!

Im Microsoft Application Architecture Guide (2nd Edition) hilft Ihnen zu verstehen, was die wichtige Inhalte ist, sodass Sie besser, höhere Qualität Anwendungen schneller und effizienter erstellen können.Wie Sie in diesem Artikel einen bestimmten Bereich gesehen haben, nutzt die und Inversion der Steuerung der Dependency Injection-Muster, können Sie viele die Entwurfsziele heraufgestuft werden, indem Sie im Handbuch zu erreichen.Dies umfasst die Trennung von Bedenken, die Verwendung der Abstraktion lose Kopplung zwischen Ebenen, Dienstidentifizierung und Implementierung von Funktionen für verbesserte Verwaltung Bedenken crosscutting implementieren.

Alex Homer ist eine Dokumentation-engineer, die mit dem Microsoft patterns & practices-team arbeiten.Seine zufällige ravings zu Leben, Technologie und der Welt im Allgemeinen finden Sie unter  https://blogs.msdn.com/b/alexhomer/