2

WCF 経由でリモート オブジェクト モデルにアクセスする最良の方法は何ですか?

オブジェクト指向モデルを持つシステム層 (A) が 1 つあり、別の層 (B) からこのモデルにアクセスしたい

必要なオブジェクトは、オンデマンドで B によって読み込まれる必要があります。例として、クラス C1 と C2 があり、C1 が C2 のリストを保持しているとします。このリストは、アクセスされたときにのみロードする必要があります。

データ コントラクトは操作コントラクトを保持できないため、「getC1」と「getListC2(C1)」の 2 つのメソッドを持つ 1 つのサービス コントラクトでこれを実装します。

しかし、私が実際に望んでいるのは、オブジェクト指向モデルにアクセスすることです。たとえば、C1 で関数を呼び出します: C1.getListC2

オブジェクト指向の方法で WCF を操作するにはどうすればよいですか?

4

1 に答える 1

3

これにアプローチする 1 つの方法は、プロキシ オブジェクトを独自の遅延読み込み (およびその他の) ビジネス ロジックでラップすることです。つまり、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 に答える