是否可以以及如何在WCF服务应用程序中为多个服务配置一个端点?
谢谢
答案 0 :(得分:3)
如果你的意思是:
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具有相同的地址。
答案 1 :(得分:1)
每个服务/绑定/合同组合必须使用离散地址,因此必须是单独的端点
但是,就您的客户而言,只要您使用相同的传输协议,您就可以使用WCF 4路由服务来提供单个可寻址端点,然后使用其他条件(比如操作或其他SOAP标头)来路由到正确的服务
答案 2 :(得分: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 "";
}
}
答案 3 :(得分:0)
你可以做的是创建一个新的接口,公开你想要公开的所有接口,然后让一个类将请求委托给正确的类。