代码之家  ›  专栏  ›  技术社区  ›  Karol Kolenda

如何在WCF中创建修剪服务

wcf
  •  1
  • Karol Kolenda  · 技术社区  · 17 年前

    我有一个WCF服务,它有很多方法和DataContract。它通常由大型应用程序“A”使用。我想创建一个小型应用程序“B”,它将使用相同的服务器,但只使用服务中的几种方法。我想减小XAP的大小,并且由于客户端使用的是服务公开的所有方法中的一小部分,我希望有一个比Visual Studio自动创建的服务引用文件更小的文件。我可以删除不手动使用的方法,但这样我就不能真正使用update service命令。

    有什么解决方案吗?

    1 回复  |  直到 17 年前
        1
  •  2
  •   marc_s MisterSmith    17 年前

    好的,您有一个完整的IGreatService接口,其中包含许多方法,这些方法是在MyGreatService类上实现的。

    这样怎么样:您创建一个新的第二个接口IMyServiceB,它只有您想向第二组用户公开的少数方法。您可以使您的服务同时实现IGreatService和IMyServiceB(这是绝对可能的,没有问题):

    public class MyGreatService : IGreatService, IMyServiceB
    {
     .. 
    }
    

    服务B基本上只是调用服务实现中你想要公开的那几个方法——比如说,你在IGreatService上有MethodA,你也想在IMyServiceB上公开(还有MethodB)——这样实现它:

    public class MyGreatService : IGreatService, IMyServiceB
    {
       ....
       // as defined on IGreatService
       public void MethodA (....)  
       {
       }
    
       ....
       public void MethodB (.....)   // as defined on IMyServiceB
       {
            MethodA();
       } 
    }
    

    然后,您可以在一个不同的单独端点上公开IMyServiceB,这样那些应该只看到IMyServiceB的用户就可以连接到那个单独的端点,他们只会得到使用您的service-B操作所需的任何东西。

    马克

    推荐文章