2017-01-24 158 views
0

是確定的,如果我們使用API​​ DLL調用Web表單中的WEP API服務。我們將在同一臺服務器上同時託管api和應用程序,並要求內部呼叫。調用Web API,通過引用API DLL

+0

你能澄清一點嗎?你是在談論通過HTTP調用端點還是在談論實例化dll中的一個對象並調用一個或多個方法? – MichaelDotKnox

+0

我們不希望從web表單到web api有單獨的http請求 –

回答

0

這不是很清楚你是什麼之後。

的一切,如果你寫某種類型的API首先,你必須把它與它進行交互。這裏沒有中間地帶。如果你不想調用任何東西,那麼你不需要API。 API的目的是提供一種與某些數據存儲交互的方式,所以在控制器後面有一個與數據庫交談的層,或者甚至是另一個API。

如果你不想做任何調用,那麼爲什麼使用API​​的所有煩惱呢?寫一個類庫,一個或幾個,做你需要他們做的事情,並用這種方式與你的數據庫進行交互。

,我曾在那裏我有一個有點類似的情況之前的項目,並結束了其然後由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)); 
    } 
} 

然後,它是完全可以調用在服務類中的方法。我不會在控制器中調用該方法,因爲這會導致比您想要處理的更多問題。