2017-01-24 2 views
0

api dllを使用してWEBフォーム内のwep apiサービスを呼び出すと問題ありません。同じサーバー上にapiとアプリケーションの両方をホスティングし、内部呼び出しを必要とします。API dllを参照してWebフォームでweb apiを呼び出してください

+0

少し明確にできますか? HTTP経由でエンドポイントを呼び出すことについて話していますか、またはdllのオブジェクトの1つをインスタンス化して1つ以上のメソッドを呼び出すことについて話していますか? – MichaelDotKnox

+0

WebフォームからWeb APIへの別個のHTTPリクエストを持ちたくない –

答えて

0

あなたの後ろのことはあまり明確ではありません。

まず何らかの種類のAPIを作成する場合は、それを呼び出す必要があります。ここに中間地点はありません。何も呼びたくない場合は、APIは必要ありません。 APIの目的は、一部のデータストレージとやりとりする方法を提供することです。コントローラの背後には、たとえばデータベースとやりとりするレイヤーや、さらに別のAPIがあります。

コールをしたくない場合は、APIを使用するのはどうしてですか?クラスライブラリを1つまたは複数作成し、必要な処理を行い、このようにデータベースとやり取りします。

私は幾分似たような状況の前にプロジェクトで働き、UIプロジェクトとWebApiプロジェクトで共有されたクラスライブラリを作成してしまったので、いずれかの方法で作業することができました。これは実際にはかなりうまくいった。あなたが似たようなものを探しているなら、それは私が一緒に行くものです。関心のあるものは別にして、API呼び出しや直接のdll参照で公開することができます。

0

だからあなたのコントローラのメソッドは、このような何かを見ていると仮定:

public interface IService 
{ 
    Task<Value> GetValueAsync(int id); 
} 

public class Service : IService 
{ 
    public Task<Value> GetValueAsync(int id) 
    { 
    //... 
    // Code to return a value 
    //... 
    } 
} 

public class ValueController : ApiController 
{ 
    private IService _service; 

    public ValueController(IService service) 
    { 
     _service = service 
    } 

    public Task<IHttpActionResult> GetValueAsync(int id) 
    { 
     return Ok(await _service.GetValueAsync(id)); 
    } 
} 

そして、サービスクラスのメソッドを呼び出すことは完全に大丈夫です。コントローラでメソッドを呼び出さないでください。これはおそらく対処したいよりも多くの問題を引き起こします。

関連する問題