wcf客户端本地功能

时间:2010-09-04 17:15:58

标签: wcf client

我有以下课程

[DataContract]
public class A
{
    private List<B> b= new List<B>();

    public float getSum()
    {
        float sum= 0;

        foreach (B b1 in b)
        {
            sum+= b1.sum;
        }

        return sum;
    }

    [DataMember]
    public int B
    {
        get { return b; }
        set { b = value; }
    }

函数getSum()是特定于域的函数 我在IIS和wcf客户端托管了wcf服务。

在客户端我喜欢使用A类并调用函数getSum() 该功能需要本地呼叫,而不是远程。

我喜欢这样使用它:

A a = proxy.getA(101);

var1 = a.getSum();

A a1 = new A();
a1.setSomething
proxy.Insert(a1);

如何使用wcf执行此操作?

1 个答案:

答案 0 :(得分:2)

实现此目的的唯一方法是在客户端上使用包含此类的相同程序集,而不是生成代理。因此,将此类放入一个单独的程序集中,您将在客户端和服务器之间共享。显然,如果您的客户端不是.NET,那么这是不可能的。


要重用给定程序集中的类型,您可以在生成代理类时使用/reference:<file path>开关,而不是从Web服务的WSDL导入它们,从而丢失getSum()(顺便说一句)应该以大写字母开头,以遵循良好的编码习惯):

svcutil.exe /reference:AssemblyThatContainsTheClassA.dll http://example.com/test.svc?wsdl

或者如果您在Visual Studio中使用Add Service Reference...对话框:

alt text