2017-03-13 12 views
1

Web API 2のコントローラー間のコミュニケーション経験者がいますか? Webゾーンで作業しているとします。Web API 2 - コントローラー間の通信

リトル例:

public class ClassB : ApiController 
{ 
    public HttpResponseMessage Get(string id) 
    { 
     // return some data 
    } 
} 

public class ClassA : ApiController 
{ 
    public HttpResponseMessage Post(string id) 
    { 
     // call ClassB - method Get 
     // consume data from ClassB 

     return Request.CreateResponse(); 
    } 
} 

どれ例、クラス、パターン、キーワード - コントローラが同じアプリケーションドメインの一部または分離されている場合は何も開始

+0

同じプロジェクト内に2つのWebコントローラがあり、コードを再利用したいですか?または、2つの異なる場所に2つのWebコントローラを展開しましたか? – Igor

+0

2番目のケースが私にとって重要です。問題は、コントローラを通信する方法、つまりキューのようなレイヤーが有用であるか、データを制御するための何か他のものである可能性があります。とにかく、コントローラ間でデータを交換することは依然として大きな問題です。 – riwex

答えて

0

のために良いだろうが異なります。これらが個別にデプロイされている場合は、httpClientを使用してClassB.Getコントローラを呼び出す必要があります。

Httpクライアント

using (var client = new HttpClient(handler)) 
     {            
      var response = await client.GetAsync("http://contoso.com/products/product1"); 
      var product= await response.Content.ReadAsAsync<Product>(new [] { new JsonMediaTypeFormatter() }); 

      // Add your logic here         
     } 

    return this.Request.CreateResponse(HttpStatusCode.OK, data); 

コードの再利用

以下EX-彼らは同じアプリケーションドメインの一部である場合、あなたはそれを別のクラスを抽出することにより、コードを再利用することができます。ソリューションの設計方法によっては、さまざまな設計アプローチがあります。例として、DDD(domain driven design)を使用することができます。ドメインエンティティまたはサービス(ドメインに基づいてより適したロジック)を抽出し、ロジックを再利用します。

これが役に立ちます。

+0

私はこのライブラリも便利かもしれないと思います:http://restsharp.org/。すぐに返事をいただきありがとうございます。 – riwex

0

コントローラはお互いを呼び出すべきではありません。基本的にコントローラは入力を検証し、他のサービスクラスまたはドメインクラスに呼び出しを委譲し、呼び出し側に出力を送信します。 2つのコントローラ間に共有機能がある場合は、別のクラスにあり、両方のコントローラが同じメソッドを呼び出す

+0

"Order"(OrderController)サービスと "Store"(StoreController)というサービスがあるとします。情報の入手方法:注文後に店舗にいくつの商品があるかを確認してください。あなたが注文を完了する前に、あなたは製品の量について "店"に尋ねなければなりません。どんなデザインパターン?可能な限りすべての依存関係を削除したい。多分私の思考は間違っているか、あるいは多分どんなパターンやより良い方法を出現させるでしょうか? – riwex

+0

このようなケースを処理するドメイン駆動型のデザインを見ることができます。使用しない場合は、Store用のドメインサービスとOrder用の別のサービスとこれらのサービスは互いに通信できます。最後に、コントローラはそのうちの1つを呼び出し、サービスは残りの部分を処理します –

関連する問題