myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » SOA Design, Provider hängen von anderen Providern ab
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

SOA Design, Provider hängen von anderen Providern ab

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Tarion Tarion ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-91.gif


Dabei seit: 23.03.2009
Beiträge: 380
Entwicklungsumgebung: VS2010 Ultimate


Tarion ist offline

SOA Design, Provider hängen von anderen Providern ab

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hab schon einiges über SOA gehört und gelernt, das meiste bezieht sich auf Services. Jetzt habe ich mehrere Provider die von anderen Providern abhängen.

Beispiel:
Ein TimeProvider gibt die aktuelle Zeit
Ein PlayerStateProvider nutzt intern jede Sekunde den TimeProvider, um festzuhalten, wann sich der Zustand des Spielers geändert hat.

Aktuell hängt der PlayerStateProvider (und andere Provider) direkt vom TimeProvider ab.

Ist das nun schlechtes Design? Und warum?

Wenn ich dass in einem Service implementieren würde, müsse der Service:
Von PlayerStateProvider und TimeProvider abhängen und den PlayerStateProvider regelmäßig aktiv nach dem Zustand des Spielers fragen. Denn wird der PlayerStateProvider mal nicht gefragt, bekommt er die Zeit, wann sich der Zustand geändert hat nicht mit.

Wie designe ich das ganze am besten Serviceorientiert?
Neuer Beitrag 17.06.2012 11:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Cat
myCSharp.de-Mitglied

images/avatars/avatar-3070.jpg


Dabei seit: 25.10.2009
Beiträge: 453


Cat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die Abhängigkeit per se ist ja dort kein Problem. Du solltest die Abhängigkeiten aber zwingend über Interfaces darstellen, so dass du dann diese Klassen separat testen kannst (z.B. per Mocking). Und wenn du dann noch per Dependency Injection (DI) die Schnittstellen übergibst, dann hast du die lose Kopplung sichergestellt.

Ein anderer Ansatz wäre die Daten per Event anzubieten und eine äußere Server-Instanz verbindet die Provider miteinander (so daß diese sich direkt nicht kennen).
Neuer Beitrag 17.06.2012 12:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Tarion Tarion ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-91.gif


Dabei seit: 23.03.2009
Beiträge: 380
Entwicklungsumgebung: VS2010 Ultimate

Themenstarter Thema begonnen von Tarion

Tarion ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Den Äußeren Server will ich halt vermeiden, da der Provider darauf angewiesen ist, dass er regelmäßig den Zustand prüft. Dieses Wissen sollte ein Service, der den Provider nutzt nicht haben.

Die Provider hängen alle über Interfaces zusammen. Aktuell ist alles überschaubar und ich verbinde es direkt im Code ohne extra DI Container. Aber das lässt sich bei bedarf nachrüsten.
Neuer Beitrag 17.06.2012 12:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FZelle
myCSharp.de-Poweruser/ Experte

Dabei seit: 23.04.2004
Beiträge: 8.478


FZelle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Irgendwie verwechselst Du hier was.
SOA bedeutet nicht das alles als Windows/Web/WCS Service erstellt wird, sondern das Dienstleistungen als Services zur Verfügung stehen.
Ob das "einfach" eine Klasse ist oder ein echter Service ist nebensächlich.

Insofern ist das was Du als Provider bezeichnest schon ein Service.
Neuer Beitrag 17.06.2012 13:00 Beiträge des Benutzers | zu Buddylist hinzufügen
Tarion Tarion ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-91.gif


Dabei seit: 23.03.2009
Beiträge: 380
Entwicklungsumgebung: VS2010 Ultimate

Themenstarter Thema begonnen von Tarion

Tarion ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

FZelle, nach deiner Erklärung kann ich das ganze dann so beschreiben:
Ich habe einen TimeService und einen PlayerStateProvider sowie einen PlayerStateService. Nun hängt der PlayerStateProvider vom TimeService ab.

Dann ist die Frage: Ist es sinnvoll, dass ein Provider von einem Service abhängt? Oder sollte diese Abhängigkeit von einem Service gekapselt werden?

Warum die Unterscheidung zwischen PlayerStateService und PlayerStateProvider?
Weil der PlayerStateService Konsumerorientiert und Stateless ist, im Gegensatz zum PlayerStateProvider

Ich sehe aktuell auch keine Probleme in meinem Design, ich interessiere mich nur für Konzepte und Good Practice.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Tarion am 17.06.2012 13:09.

Neuer Beitrag 17.06.2012 13:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FZelle
myCSharp.de-Poweruser/ Experte

Dabei seit: 23.04.2004
Beiträge: 8.478


FZelle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das ist ja das schöne bei SOA.

DU entscheidest was Deine Klassen oder Services als Dienstleistung benötigen.
Wenn es diese Dienstleistung bereits in form eines Interfaces gibt, wird es benutzt.
Wenn nicht, wird ein Interface erstellt das diese Dienstleistung beschreibt und ggf der Service erstellt.

Solange du das per Interfaces entkoppelst ist es genau das wie SOA gedacht ist.
Neuer Beitrag 17.06.2012 20:47 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 11 Monate.
Der letzte Beitrag ist älter als 11 Monate.
Antwort erstellen


© Copyright 2003-2013 myCSharp.de-Team. Alle Rechte vorbehalten. 20.05.2013 10:31