| 

.NET C# Java Javascript Exception

4
Hallo zusammen

Hoffe ich kann mein Anliegen einigermassen verständlich darstellen.

Als Beispiel soll eine Anwendung XY dienen, welche aus den Komponenten BusinesLogic XY.L.dll und den Datenadaptern XY.Ds.dll für SQL-Server und XY.Do.dll für Oracle besteht.

Ich habe lange nicht verstanden wie ich die Anwendung für Kunde A mit SQL-Server und für Kunde B mit Oracle herausgeben kann, ohne XY.L zweimal zu kompilieren, einmal mit Verweis auf XY.Ds und einmal mit Verweis auf XY.Do. Nun, die Antwort habe ich bei Ralf Westphal mit Contract First gefunden.
Es wird eine weitere Komponente mit den Contracts XY.C.dll erstellt auf welche alle drei vorhergehenden verweisen und somit gibt es keine direkte Verbindung mehr zwischen XY.L und XY.Ds bzw. XY.Do. Die Bindung übernimmt ein Kernel und die Datenadapter XY.D? können beliebig ausgetauscht werden.

Wie ist das nun, wenn ich FlowDesign mit EBC umsetzen möchte? Die Contracts spielen hier, soweit ich verstanden habe, nur noch eine Untergeordnete Rolle. Die „Verdrahtung“ ist in irgendeiner Form in einer Datei abgelegt, bezieht sich aber, was ich gesehen habe, auf die Klassen und nicht auf die Interfaces. Bis jetzt habe ich noch kein Bespiel gefunden, welches das obige Szenario umsetzt.

Kann mir jemand sagen, wie das anzugehen ist?

Vielen Dank und Gruss
Andreas
News:
06.03.2012
Andreas Schädler 117 1 6
1 Antwort
1
Hi Andreas,

wir haben zur Zeit ein EBC Projekt am Laufen (das hat sich aufgrund des offensichtlichen Datenflusses quasi als solches aufgedrängt) und sind bislang guter Dinge. Auch wenn ich designtechnisch immer wieder daran beteiligt bin, bin ich sicher kein EBC Spezialist - ich habe lediglich meine eigene Perspektive auf diesen Ansatz. Ob wir das nun "schulbuchmäßig" durchziehen oder lediglich von Ideen profitieren, sei dahingestellt. Alles braucht seine Zeit...

Aus meiner Sicht der Dinge würde ich sagen, das ein EBC Baustein sein Interface nicht syntaktisch mit 'interface' definiert, sondern über seine In- und Output-Pins. Ich kann mir vorstellen, dass man die Pins in ein Interface gießt, allerdings ist der Nutzen fraglich, da die Verdrahtung eh extern passiert. Ob ich polymorphe Funktionalität (z.b mit IoC Containern) verdrahte oder aber delegates "umbiege" (in den Platinen) hat prinzipiell dieselbe Motivation. Nur die Granularität ist eine andere.

Bezogen auf Dein Beispiel sehe ich keinen Widerspruch zwischen EBC und ContractFirst. Der EBC Baustein, der schlussendlich einen DB Zugriff macht, benutzt dafür ein Interface. Dieses kannst Du auf welchem Weg auch immer in deiner Anwendung verdrahten (Singleton, static access, factory, DI, ... - was davon wirklich sinnvoll und zweckmäßig ist, soll hier nicht näher beleuchtet werden). Also eigentlich alles beim Alten... ;-) Außer dass die Implementierungen dieses Interfaces dann vlt. Platinen (oder Adapter dafür) sind...

Soweit meine Sicht der Dinge...
Florian
06.03.2012
ffordermaier 8,4k 3 9
Hallo Florian

Danke für Deine Antwort.
Ich verstehe Deine Ausführungen nicht zu 100%.
Wenn ich in der Logic typisiert mit den Klassen des Datenzugriff arbeiten will, muss ein Verweis auf dieslebe vorhanden sein, auch wenn die Verdratung dann wieder an einem andern Ort statt findet, oder?
Wie Du gesagt hast schliessen sich EBC und ContractFirst nicht aus, aber was macht sinn und was nicht? Diese Frage muss ich wohl für mich in einem Testprojekt angehen um mich an die Materie heran zu tasten.

Gruss
Andreas
Andreas Schädler 08.03.2012
1
Hi Andreas,
du solltest in der Logic nicht typisiert mit den Klassen des Datenzugriffs arbeiten, sondern nur Abstraktionen verwenden. Wenn Du Deine Logic gegen Interfaces des Datenzugriffs entwickelst, kannst Du den Datenzugriff (also die Implementierung dieser Abstraktionen) austauschen, ohne Deine Logic neu schreiben bzw. kompilieren zu müssen.
Da EBC ja noch in den Kinderschuhen steckt, ist es sicher auch sinnvoll, für Dich selbst in einem kleinen Testprojekt ContractFirst und EBC einzuordnen. EBC Beispiele gibts einige im Netz für einen ersten Einstieg...
ffordermaier 12.03.2012
1
Hi, hier ein Beispiel Projekt mit EBC http://www.konstantinopoulos.de/?e=9 sowie http://www.konstantinopoulos.de/?e=12 Vielleicht hilft dir das.
KCT 06.06.2012
Hallo zusammen
wir haben inzwischen einen Weg gefunden, welcher mindestens im Testprojekt funktioniert und kommen jetzt an die erste konkrete Anwendung.
Vielen Dank für Eure Hinweise.
Andreas Schädler 07.06.2012

Stelle deine Visual-studio-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH