簡體   English   中英

ASP.NET Web API如何自托管?

[英]How feature complete is asp.net web api self-hosting?

我要求我必須能夠擁有應用程序的獨立版本以及在線版本。 實現此目的的一種可能方法是擁有一個WPF版本(可以滿足獨立要求)和一個MVC Web版本。

顯然,這需要兩個代碼庫(盡管公認,除了前端代碼外,它們應該是相同的)。 Web API自托管是否足夠穩定,如果需要,我可以在其中托管一個功能完善的Web應用程序?

Web API可以運行自托管,但要運行ASP.NET(MVC),則需要IIS(Express)之類的服務器。

您可以做的是在計算機上安裝IIS Express,在其中托管您的Web應用程序,並在需要時自行托管Web API。 當然,如果您已經安裝了IIS Express,則可能只想選擇運行其中的所有內容:Web應用程序和Web API。

如果您可以使用相同的數據庫/服務使用內部/外部應用程序,則可以在IIS中托管單個版本的WebAPI服務器,並將其簡單地用於API控制器。

然后,您可以使用兩個相同的ASP.Net MVC站點(而不是Desktop&Web站點)來調用您的WebAPI服務。 一台托管在Intranet上,一台托管在Internet上-兩者都可以通過WebAPI實現業務功能和數據持久性。

這里的目標是減少所維護的代碼量。 本質上,這是兩個項目-您的WebAPI項目和一個ASP.Net MVC站點。

我使用Web API來自動托管生產中的許多項目。 網站http://www.hypermediaapi.com是一個自托管的Web API。

對於這種情況,不需要兩個或多個代碼庫。 您需要一個為應用程序提供API的庫。 該庫可以直接在獨立應用程序中使用,我認為這是桌面應用程序。

然后,您可以創建WCF或Web API,甚至可以在這兩個層上創建,而不僅僅是圍繞同一庫的包裝。 WCF / Web API合同可以與您的DTO相同,因此WCF服務實現將如下所示:

SomeObject IMyService.DoStuff(string param)
{
  var myLibrary = new MyLibrary();
  var someObject = myLibrary.DoStuff(param);
  return someObject;
}

唯一的開銷是,當庫中的接口更改時,更改也必須在服務接口中重復,但是不會重復任何實際的業務邏輯。 您甚至可以共享接口,即,如果您不介意在庫接口上具有合同屬性,則API將公開與WCF服務實現的接口相同的接口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM