Laden...

WCF + Repositories + Proxymethoden automatisch erzeugen

Erstellt von Campy vor 13 Jahren Letzter Beitrag vor 12 Jahren 1.697 Views
C
Campy Themenstarter:in
439 Beiträge seit 2008
vor 13 Jahren
WCF + Repositories + Proxymethoden automatisch erzeugen

Hallo zusammen,

ich habe einige Repositories und einen WCF Service.
Bei mir sieht das momentan wie im Bild (Anhang) aus. Nun denke ich mir aber, dass das auch einfacher gehen muss. Kann ich nicht einfach alle Public Methoden eines Repositories bereitstellen?

Evtl. gibt es auch noch andere Möglichkeiten?
Vielen Dank!

A programmer is just a tool, which converts coffeine into code! 🙂

16.806 Beiträge seit 2008
vor 13 Jahren

Hi,

Du kannst einen T-basiertes Base-Repository machen, und dieses dann ebenfalls T-basiert über den WCF schicken ( wenn ich mich richtig erinner ).

Sieht in so aus:


public interface IRepository<T> where T : class
{
	void Add( T entity );
	void Delete( T entity );
}
 
public abstract class RepositoryBase<T> where T : class
{
	private readonly MyDbContext m_dataContext;

	protected RepositoryBase( MyDbContext dbContext )
	{
		m_dataContext = dbContext;
		m_dbset = DataContext.Set<T>( );
	}
	public virtual void Add( T entity )
	{
		m_dbset.Add( entity );
	}
	public virtual void Delete( T entity )
	{
		m_dbset.Remove( entity );
	}
}

Und dann Dein jeweiliges Repository abteilen und mit spezifischen Methoden erweitern.

public class UserRepository : RepositoryBase<User>, IUserRepository
{
	public UserRepository( MyDbContext dbContext )
		: base( dbContext )
	{
	}
}

public interface IUserRepository : IRepository<User>
{
}

damit sparst Du Dir bei den Reps ne Menge Tipparbeit und kannst ggfl. gewisse Funktionen / Operationen anhand des Typs auch im WCF zusammenfassen.

Gruß

C
Campy Themenstarter:in
439 Beiträge seit 2008
vor 12 Jahren

Hallo abt,

ich bin gerade wieder auf diesen Thread aufmerksam geworden.
Die Grundidee finde ich hammer gut, nur brauche ich noch eine Schicht, die meine EF Objekte in Domain Objekte umwandelt und umgekehrt.. wo zieh ich die am besten ein?

Danke und viele Grüße
Matthias

A programmer is just a tool, which converts coffeine into code! 🙂

A
350 Beiträge seit 2010
vor 12 Jahren

Hi,

das würde ich persl in der Businesschicht machen.
Du kannst für das Mappen zB den Automapper für das mappen der Objekte nutzen

C
Campy Themenstarter:in
439 Beiträge seit 2008
vor 12 Jahren

Hallo,

hab das gerade so umgesetzt. Mit Automapper bin ich bereits vertraut 😉
Hab in der RepositoryBase - Klasse noch die EF Objekte drin und im IRepository dann die Domain-Objekte. Sprich in den Repositories wird gemappt und dann die base-Methode aufgerufen 😃

A programmer is just a tool, which converts coffeine into code! 🙂

3.728 Beiträge seit 2005
vor 12 Jahren
Wcf?

Hallo Campy,

muss es denn zwingend WCF sein?
Muss die Kommunikation bestimmten Standards (z.B. SOAP) genügen?
Must Du Silverlight Clients bedienen können?

Falls nicht, gibt es Alternativen zu WCF, die können, was Du willst.

WCF folgt dem Dogma der Serviceorientierung. Dies beinhaltet auch die Regel, dass Dienste explizite Schnittstellen haben müssen. Das hat zwar in heterogenen System absolut seine Berechtigung, ist aber in reinen .NET-Anwendungen absolut unnötig.

Wie es aussieht stört Dich diese Regel (wie mich übrigens auch). Du versuchst das irgendwie "aufzuweichen". Falls WCF als Kommunikationsframework für Dein Projekt nicht in Stein gehauen feststeht, könnte ich Dir Alternativen vorstellen.

Gruß
Rainbird