WCF-如何以更面向对象的方式定义服务



通过WCF访问远程对象模型的最佳方式是什么?

我有一个具有面向对象模型的系统层(A),并希望从另一层(B)访问该模型

所需的对象应由B按需加载。举个例子,假设我有类C1和C2,其中C1持有C2的列表。此列表应仅在访问时加载。

由于数据契约不能包含操作契约,我将使用一个服务契约来实现这一点,该服务契约具有两种方法"getC1"one_answers"getListC2(C1)"

但是,我实际上想要的是访问一个面向对象的模型,例如调用C1:C1.getListC2上的函数

如何以更面向对象的方式使用WCF?

实现这一点的一种方法是用您自己的惰性加载(和其他)业务逻辑包装代理对象。换句话说,假设您有一个名为Order的WCF代理和一个服务方法GetOrderLineItems()。

public class Order
{
    private Proxies.Order _order;
    private List<OrderLineItem> _lineItems;
    public string Name 
    {
        get { return _order.Name; }
    }
    public List<OrderLineItem> LineItems
    { 
        if (_lineItems == null)
        {
             _lineItems = //Make the service call to get these objects
        }
    }
}

综合这一点的另一种方法是向代理对象添加扩展方法:

public static List<Proxies.OrderLineItem> GetLineItems(this Proxies.Order order)
{
     //Make the service call to get the line items
}

这将允许你做:

var lineItems = order.GetLineItems();

最新更新