2010-03-17 3 views
6

Ich biete derzeit einen Service mit vielen Methoden über WCF an. Ich würde gerne umgestalten, damit der einzelne Dienst in mehrere Klassen aufgeteilt wird, von denen jede eine andere Funktionalität bietet. Allerdings hätte ich lieber eine einzige Verbindung zum Client. Ist das möglich?Gibt es eine Möglichkeit, mehrere WCF-Dienste über einen einzelnen Endpunkt verfügbar zu machen?

Ich denke, die Antwort ist Nein, also wie soll ich dieses Problem lösen? Gibt es eine Problemumgehung? Oder ist meine Idee völlig dumm und ich sollte das Design der Anwendung ändern?

+0

Gute Frage, ähnliches Problem hier - beachten thouh, dass dies nicht der Klasse ist aber mehr Schnittstelle basiert (Dienste-Schnittstellen). – TomTom

Antwort

4

Merken E = ABC (Endpunkt = Adresse, Bindung, Vertrag). Mit einem anderen Vertrag, selbst wenn alles gleich ist, haben Sie immer noch einen anderen Endpunkt.

Allerdings kann ein einzelner Service mehrere Serviceverträge implementieren. Dadurch könnte eine einzelne .svc-Datei das Ziel mehrerer verschiedener Serviceverträge sein, die alle als URLs relativ zur .svc konfiguriert sind.

0

Sie könnten Teilklassen implementieren, mit denen Sie Ihren Inhalt in einzelne CS-Dateien unter Beibehaltung einer einzelnen Schnittstelle und eines Endpunkts aufteilen können. Dies ist nicht der idealste Weg, denn am Ende des Tages ist es immer noch eine einzelne Klasse, die aus Teilklassen besteht, aber zumindest sieht es in Ihrer Dateistruktur so aus, was eher zu einer Trennung als zu einer massiven Klassendatei führt .

Beispiel Struktur:

IMyService.cs

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] 
    string GenericMethod() 

    [OperationContract] 
    string GetUsers(int companyId) 

    [OperationContract] 
    string GetMessages(int userId) 

} 

MyService.cs

//Put any attributes for your service in this class file 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public partial class MyService : IMyService 
{ 
    public string GenericMethod() 
    { 
    return ""; 
    } 
} 

UserService.cs

MessagingService.cs

public partial class MyService 
{ 
     public string GetMessages(int userId) 
     { 
      return ""; 
     } 
} 
Verwandte Themen