如何在WCF中创建修剪服务

时间:2009-05-02 02:57:58

标签: wcf

我有一个包含大量方法和DataContracts的WCF服务。它通常由大型应用程序“A”使用。我想创建一个小应用程序“B”,它将使用相同的服务器,但只使用该服务中的几个方法。我想减少XAP的大小,并且由于客户端使用服务公开的所有方法的一小部分,我希望有一个小于Visual Studio自动创建的服务引用文件。我可以删除未手动使用的方法,但我不能真正使用更新服务命令。

任何解决方案?

非常感谢, 卡罗尔

1 个答案:

答案 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操作所需的一切。

这可行吗?

马克