2011-08-14 120 views

回答

2

如果你的意思是這樣的:

Service1 
Service2 
Service3 
. 
. 
. 
Service n 

而且所有的服務都在一個端點,說http://localhost/MyServices/Services,那麼我相信答案是否定的。地址,綁定和契約(ABC)組成端點,每個端點必須有唯一的地址。

所以,即使你想是這樣:

端點1:

地址:http://localhost/MyServices/Services
綁定:WsHttpBinding的
合同:客服1

端點2:

地址:http://localhost/MyServices/Services
綁定:的wsHttpBinding
合同:客服2

你會碰到與端點2的問題,因爲它具有相同的地址作爲端點1

Specifying an Endpoint Address

Hosting Multiple Services

1

每個服務/綁定/合同組合必須使用離散地址,因此必須是單獨的端點

但是,就您的客戶而言,只要您使用相同的傳輸協議,就可以使用WCF 4路由服務提供單個可尋址端點,然後使用其他條件(例如操作或其他SOAP標頭)來路由到正確的服務

0

你可以做的是創建一個新的接口,公開你想要公開的所有接口,然後有一個類將請求委託給正確的類。

1

一個解決方法是實現部分類,它允許您在保留單個接口和端點的情況下將單個cs文件中的內容分開。這不是最理想的方式,因爲在一天結束時它仍然是由部分類組成的單個類,但至少看起來你有單獨的服務,因爲每個服務都有一個類文件。

示例結構:

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

public partial class MyService 
{ 
    public string GetUsers(int companyId) 
    { 
     return ""; 
    } 
} 

MessagingService.cs

public partial class MyService 
{ 
     public string GetMessages(int userId) 
     { 
      return ""; 
     } 
} 
相關問題