我有一个包含大量方法和DataContracts的WCF服务。它通常由大型应用程序“A”使用。我想创建一个小应用程序“B”,它将使用相同的服务器,但只使用该服务中的几个方法。我想减少XAP的大小,并且由于客户端使用服务公开的所有方法的一小部分,我希望有一个小于Visual Studio自动创建的服务引用文件。我可以删除未手动使用的方法,但我不能真正使用更新服务命令。
任何解决方案?
非常感谢, 卡罗尔
答案 0 :(得分:2)
好的,所以你有一个完整的IGreatService接口,其中包含很多方法,这些方法是在MyGreatService类上实现的。
这个怎么样:你创建了一个新的第二个接口IMyServiceB,它只有那些你想要暴露给第二组用户的方法。你这样做,所以你的服务实现了IGreatService和IMyServiceB(绝对可能,没问题):
public class MyGreatService : IGreatService, IMyServiceB
{
..
}
服务B基本上只是调用你要公开的服务实现中的那几个方法 - 比方说,你在IGreatService上有你想要在IMyServiceB上公开的MethodA(作为MethodB) - 像这样实现它: / p>
public class MyGreatService : IGreatService, IMyServiceB
{
....
// as defined on IGreatService
public void MethodA (....)
{
}
....
public void MethodB (.....) // as defined on IMyServiceB
{
MethodA();
}
}
这样,你得到两个独立的接口(=服务),但基本上你只编写一次代码。
然后,您可以在一个独立且独立的端点上公开IMyServiceB,这样只能看到IMyServiceB的用户才能连接到那个单独的端点,他们只能获得使用您的服务B操作所需的一切。
这可行吗?
马克