Sprung in die N-Tier-Architektur mit WCF?

Ich arbeite für eine große staatliche Behörde, die ein bisschen hinter der Zeit ist. Unsere Fähigkeiten sind veraltet und Haushaltsstopps verhindern jede Ausbildung oder Einstellung neuer Mitarbeiter/Berater (es ist auch unmöglich, Leute zu entlassen). Das Entwerfen von Geschäftsobjekten, das Implementieren von Entwurfsmustern, das Einrichten von Codebibliotheken und -diensten, Komponententests, Quellcodeverwaltung usw. sind alles Dinge, die Hier nicht erledigt werden. Wir sind so viel von einem 0 auf dem Joel-Test, wie Sie nur bekommen können. Die gute Nachricht ist, dass wir nur von hier nach oben gehen können!

Wir entwickeln Desktop-CRUD-Anwendungen (in C++, C- oder Java), die direkt über eine ODBC-Verbindung auf die Oracle-Datenbank treffen. Wir haben im Grunde GUI ist mit SQL-Anweisungen und Patchwork-Code übersät. Uns wurde gesagt, dass wir uns auf eine serviceorientierte n-Tier-Architektur zubewegen sollen, um den direkten Zugriff auf die Datenbank zu verhindern und die Oracle Client-Anforderungen auf Benutzercomputern zu beseitigen.

Ist WCF der Weg, den wir einschlagen sollten? Wir haben einige der n-tier-Anwendungs-Walkthroughs (wie this one) and they seem easy to implement, but we just don't know enough to understand if we are even considering the right technologies. Utilizing the .NET generated typed DataSets seems like a nice stopgap to save us month/years of work (as opposed to creating new business objects from the ground up for numerous projects). Is this canned approach viable for a first step? ) durchgeführt und sie scheinen einfach zu implementieren, aber wir wissen einfach nicht genug, um zu verstehen, ob wir überhaupt die richtigen Technologien in Betracht ziehen. Die Verwendung der .NET generierten typisierten DataSets scheint eine nette Lücke zu sein, um uns Monate/Jahre Arbeit zu ersparen (im Gegensatz zum Erstellen neuer Geschäftsobjekte von Grund auf für zahlreiche Projekte). Ist dieser Konservenansatz für einen ersten Schritt praktikabel?

Antwort auf "Sprung in die N-Tier-Architektur mit WCF? " 5 von antworten

Ich habe vor kurzem begonnen, WCF-Dienste für meine Datenschicht in einigen Webanwendungen zu verwenden, und ich muss sagen, es ist frustrierend am Anfang (die erste Woche oder so), aber es lohnt sich absolut, sobald der Code bereitgestellt wird.

Sie sollten es zuerst mit einer kleinen vorhandenen App ausprobieren, oder vielleicht mit einem Proof of Concept, um sicherzustellen, dass es Ihren Bedürfnissen entspricht.

Aus der Beschreibung der Umgebung, in der Sie sich befinden, bin ich sicher, dass Sie den Nutzen fast sofort erkennen werden.

Das letzte Unternehmen, für das ich gearbeitet habe, wählte WCF fast aus dem genauen Grund, den Sie oben beschreiben. Es gibt viele gute Dokumentationen und Bücher für WCF, seine relativ einfach zu arbeiten, und WCF unterstützt eine Menge Von Konfigurationsoptionen.

Es kann einige Kopfschmerzen geben, wenn Sie versuchen, WCF zu biegen, um in einer Weise zu arbeiten, die nicht speziell aus dem Kasten heraus entwickelt wurde. Dies sind im Allgemeinen Konfigurationsprobleme. Aber Websites wie diese oder IDesign can help you through those. können Ihnen dabei helfen.

Zunächst einmal würde ich auf jeden Fall nicht (sorry für die Betonung) über die Zeit, die Sie sparen mit eingegebenen DataSet's versus creating your own business objects. That is usually not where you will spend most of your development time. I prefer using business objects myself. im Vergleich zum Erstellen Ihrer eigenen Geschäftsobjekte sorgen. Das ist in der Regel nicht, wo Sie den größten Teil Ihrer Entwicklungszeit verbringen. Ich ziehe es vor, Geschäftsobjekte selbst zu verwenden.

In ihrer Situation möchte ich zuerst einen Proof-of-Concept implementieren. Eines, das alle Probleme behandelt, die auftreten können. Dieser Proof-of-Concept sollte einen gesamten Anwendungsfall implementieren, beginnend auf dem Client, das Abrufen von Daten aus der Datenbank und die Rückgabe an den Client. Sie sollten sich über Ihre Implementierung sicher fühlen, bevor Sie fortfahren.

Dann über die Wahl der Technologie. WCF ist definitiv eine gute Wahl für die Kommunikation zwischen Ihren Clientanwendungen und der Service-Schicht. Ich nehme an, dass sowohl Ihre Clients als auch Ihre Dienstschicht zu C-Anwendungen werden? Das macht die Dinge viel einfacher, da die Interoperabilität zwischen verschiedenen Plattformen (z. B. Java/C) immer noch nicht trivial ist, obwohl es in den meisten Fällen funktionieren sollte.

Werfen Sie einen Blick auf Entity Framework (da es bereits einige Oracle-Anbieter gibt) in Verbindung mit .NET 3.5 SP1, das die integrierte WCF-Serialisierung Ihrer EF-generierten Klassen ermöglicht.

Hier ist ein guter Blog zum Einstieg: http://blogs.msdn.com/dsimmons

CSLA might be a good fit for your N-Tier desktop apps. It supports WCF, has a large dev community, and is well documented. It is very object oriented. passt möglicherweise gut zu Ihren N-Tier-Desktop-Apps. Es unterstützt WCF, hat eine große Entwickler-Community und ist gut dokumentiert. Es ist sehr objektorientiert.