Frage

Wir erstellen eine Enterprise-Anwendung, in der wir mehrere Plattformen für Benutzeroberflächen (dh ASP.NET WebApp, Windows-Anwendung und eines Tages, mobile Apps) und mehrere Plattformen für Back-End-Datenbanken (IE SQL Server, XML, Oracle) einbeziehen. Eine zusätzliche Nezität besteht darin, dass diese Back-End-DBs entweder zentralisiert und über das Web auf den Client-Computer lokalisiert werden und gelegentlich mit dem zentralen Server synchronisiert sind.

Kann jemand Ratschläge geben, wie wir die Benutzeroberflächenschicht und die Datenschicht abstrahieren können, damit wir einfacher die Anpassungsfähigkeit der Plug-and-Play zwischen den verschiedenen Benutzeroberflächen und den verschiedenen Auswahlmöglichkeiten für DBS erstellen können? Zum Beispiel: In einem Fall werden möglicherweise eine Web-App über das Internet auf einem zentralisierten Server ausgeführt, und möglicherweise führen Remote-Maschinen über eine Windows-App lokalisierte Kopien aus. In geplanten Intervallen möchten wir, dass alle Maschinen synchronisiert sind, damit sie alle nahezu realen Daten haben können.

Wir benötigen auch Ratschläge zum Umgang mit den verschiedenen beteiligten Verbindungszeichenfolgen, damit die einzige Einstellung, die eine App ändern muss, "lokal" oder "Remote" wäre, die dann die erforderliche Verbindungszeichenfolge bestimmen würde.

War es hilfreich?

Lösung

Das Abstracing der Präsentationsschicht ist ein ziemlich einfaches Konzept, sobald Sie den Drehpunkt der N-Tier-Architektur haben. Konzentrieren Sie sich einfach auf die Differenzierung der "Domänenlogik" von "Anwendungslogik". Die Domänenlogik ist auf Ihren verschiedenen Plattformen üblich, und die Anwendungslogik ist plattformspezifisch. Zum Beispiel ist die Datenvalidierung die Domänenlogik (obwohl es schön ist, wenn Sie dies auf dem Front-End tun können, was die Dinge komplexer macht, aber hier zusammenarbeiten ...) und entscheiden, welche URL nach einer Aktion nachgeleitet werden soll, ist die Anwendung Logik. Stellen Sie sicher, dass Sie Ihre Domain -Logik auf eine Ebene, die von jeder Plattform verwendet werden kann, nicht mehr als Anwendungslogik in Ihre Domänenebene einfügen.

Die andere Hälfte Ihrer Frage scheint Ihr größerer Fokus zu sein, aber ich würde hier nach etwas Klarstellung bitten, da ich zwei verschiedene wesentliche Fragen erkennen kann.

  1. Ich hoffe, Sie wählen nicht den "heiligen Gral" der Datenbankunabhängigkeit. Dies ist immer ein hohes Ziel, das während der Designphase trumptiert ist, dass fast immer, so ziemlich jedes Mal nicht benötigt wird.

    Wenn das nicht das ist, was Sie wollen, würde ich vorschlagen, dass Sie wissen sollten, welche Objekte gespeichert sind wie möglich. Dh keine zusätzlichen Sachen in eine Business -Klasse codieren, die seine Daten in Oracle speichert, damit Sie es irgendwann in der Zukunft in SQL Server einsetzen können. (Ich bin Round-Robin zurück zur Datenbankunabhängigkeit gekommen, nicht wahr?)

  2. Die Frage, Daten vor Ort zu zwischengespeichert, um die Leistung für bestimmte Plattformen zu verbessern, ist spezifisch für diese Plattformen, und ich würde vorschlagen, dass Sie sich mit intelligenten Clients und dem Caching -Framework/der Leitlinien des MS P & P -Teams befassen. Ich habe in den letzten paar Jahren ziemlich exklusiv an Web -Sachen gearbeitet, aber am 05.05. Es war ziemlich gut und sie haben in der Zwischenzeit viel an ihren intelligenten Kunden -Sachen gearbeitet.

Andere Tipps

Ich würde versuchen, das Anbietermodell zu verwenden, um die Datenbankverbindungen in Ihrer Anwendung herzustellen.

Ich würde zunächst die Beispiele und Details im Microsoft Data Application Block ansehen. Ich denke, es hilft Ihnen dabei, einen Teil des Weges dorthin zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top