共享在WCF服务中实现的接口

时间:2010-09-02 08:11:23

标签: web-services wcf

我有wcf网络服务。 Serice当然使用ServiceContract属性实现insterface。它还实现了另一个没有ServiceContract属性的接口,并存储在外部dll中。当我生成代理时,我没有在代理对象中实现第二个接口。有没有办法让svcutil生成实现它的代理,或者我需要手动添加该代码?

此致

3 个答案:

答案 0 :(得分:0)

如果在包含代理的项目中添加对包含接口定义的程序集的引用,则代理生成工具将使用已知接口而不是生成自己的接口。

答案 1 :(得分:0)

这是不可能的。实现会是什么样的?它应该只是从原始类复制粘贴实现吗?如果要将方法公开为Web服务,则必须将它们放在具有ServiceContract属性的类或接口中。

假设原始服务类如下所示:

public class MyService : IServiceContract, IOtherInterface
{
    ...

    public ObjectFromServiceAssembly MethodFromOtherInterface()
    {
        Console.WriteLine("Create instance of some object.");
        return new ObjectFromServiceAssembly();
    }
}

MethodFromOtherInterface如何看待生成的代理端?它不能简单地从服务端复制您的实现。

答案 2 :(得分:0)

这没有意义。如果接口未标记为ServiceContract,则它不会在服务上公开,也无法从代理中调用。如果您希望代理也实现接口,您还必须在代理中编写接口的实际实现(客户端!)=从服务复制代码。最好的方法是在服务中实现接口,而是使用帮助程序类,并在客户端和服务器之间共享此类。您将只有一个实现,您将分享它。