2

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

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

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

由于数据合同不能保存操作合同,我将使用一个服务合同来实现这一点,其中有两种方法“getC1”和“getListC2(C1)”

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

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

4

1 回答 1

3

解决此问题的一种方法是使用您自己的延迟加载(和其他)业务逻辑包装代理对象。换句话说,假设您有一个名为 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();
于 2012-03-26T13:55:19.063 回答