我有一個要求,我需要能夠有一個獨立版本的應用程序,以及一個在線版本。這樣做的一種可能的方式是創建一個滿足獨立的WPF版本和一個MVC Web版本。如何完成功能是asp.net web api自託管?
顯然,這將需要兩個代碼庫(但無可否認他們應該是除了前端代碼相同)。 Web API自託管是否足夠穩定,如果需要,我可以在其中託管一個完整的Web應用程序?
我有一個要求,我需要能夠有一個獨立版本的應用程序,以及一個在線版本。這樣做的一種可能的方式是創建一個滿足獨立的WPF版本和一個MVC Web版本。如何完成功能是asp.net web api自託管?
顯然,這將需要兩個代碼庫(但無可否認他們應該是除了前端代碼相同)。 Web API自託管是否足夠穩定,如果需要,我可以在其中託管一個完整的Web應用程序?
的Web API可以運行selfhosted但運行ASP.NET(MVC),你需要像IIS (Express)的服務器。
你可以做的是有一個機器上安裝IIS Express中,承載您的Web應用程序在和有如果需要的Web API自我主辦。當然,如果你已經安裝了IIS Express,你可能只想選擇運行其中的所有內容:Web應用程序和Web API。
只要你真行使用使用相同的數據庫/服務,您可以託管在IIS中的WebAPI服務器的單一版本,並簡單地將其用於API控制器內部/外部應用。
然後,您就可以使用兩個相同的ASP.Net MVC網站(而不是桌面&網絡),其撥打電話到您的WebAPI服務。一個託管在內聯網上,一個託管在互聯網上 - 兩個都會觸及WebAPI,以實現業務功能&數據持久性。
這裏的目標是減少維護的代碼量。實質上,它是兩個項目 - 您的WebAPI項目和一個ASP.Net MVC站點。
我使用Web API自託管許多正在生產的項目。網站http://www.hypermediaapi.com是一個自我託管的Web API。
這種情況下不需要有兩個或更多的代碼庫。你需要的是一個爲你的應用程序提供API的庫。該庫可以直接在獨立應用程序中使用,我認爲它是一個桌面應用程序。
然後,您可以創建一個WCF或Web API,甚至兩者層究竟是不是任何比大約在同一庫的包裝等等。在WCF /網絡API的合同可以是與您的DTO所以WCF服務的實現將是這樣的:
SomeObject IMyService.DoStuff(string param)
{
var myLibrary = new MyLibrary();
var someObject = myLibrary.DoStuff(param);
return someObject;
}
唯一的開銷將是,當庫的接口變化的變化都在重複服務接口,但是沒有實際的業務邏輯會被重複。 您甚至可以共享這些接口,即如果您不介意在庫接口上擁有合同屬性,則API將公開由WCF服務實現的相同接口。
你可以使用WCF,這是成熟的和將允許一個統一的代碼庫 –
@SimonHalsey這到底如何?如果應用程序沒有連接到網絡,我將無法使用WCF與服務器通信,除非我錯過了某些東西。 – Dan
WCF服務可以託管在應用程序,IIS或Windows服務中。該服務不需要爲3個scenerios中的任何一個進行修改,您只需要一點基礎架構,具體取決於您選擇將其託管的方式。 –