2015-06-22 19 views
0

我是編程新手,大部分時間都在使用Phonegap進行移動應用程序開發,我一直在學習如何對ASP.NET Web API進行編碼,並且我知道它是如何在代碼打開我,但--- ---ASP.NET Web API在使用MSBUILD構建後如何工作?

我今天被問了一個問題,我做了一個體面的傻瓜試圖回答它。假設您有一個由多個項目組成的ASP.NET Web API,其中一個用於核心API及其控制器,一個用於存儲庫,另一個用於正在使用的數據結構。路由設置好後,他們會查找myServer.com/api/myController/giveMeSomeData。當MSBUILD完成它並構建API時,它會生成一長串包含myApi.dll,myRepositories.dll,myDataStructures.dll和引用庫的dll列表。一旦這一切都被推送到Azure雲服務或任何IIS實例來承載它,服務器如何找到/ api/myController以及它實際駐留在構建文件中的位置?

+1

我認爲你讓路由與文件路徑混淆。這兩者並不捆綁在一起。 – mason

回答

1

WebApi是一個Web項目,並在編譯它創建一個DLL。它不是消費和使用它的類庫或nuget包。 我已經在實際應用中實際實現了這一點,下面是我對你理解的想法。

你的問題是

一旦做到這一切被推到Azure的雲服務或任何IIS 實例來承載它,如何做服務器查找/ API/myController的何 它實際上駐留在構建的文件中?

  • 如一切順利的託管代碼的形式,我們無法預測的dll的行爲。問你這個問題的人試圖問你關於部署自動化的問題,但是他/她自己並沒有完全意識到這一點。構建工件是解決方案的dll集合(.sln)。我認爲向您提出這個問題的人會剛剛在服務器中看到這些dll,卻不知道使用MSBUILD的實際概念是什麼。確切的問題應該是你將如何部署web api的dll以及服務器,azure等中的dll依賴(存儲庫,控制器和其他項目)..?

    要回答這個問題,我們需要了解Web項目的部署。使用MSBUILD討論部署自動化是一個非常有趣的話題。

MSBUILD是一種基於XML的腳本語言,可以幫助您編譯和 構建.NET應用程序和構建自動化一個非常有趣的語言。

ASP.NET Web API也是一種沒有網頁或視圖(如果是MVC)的ASP.NET應用程序,它應該像我們部署我們的mvc應用程序一樣部署。當然,我們有很多項目,如存儲庫,控制器在一個解決方案文件(.sln)下。 By compiling the solution using MSBUILD we create build artifacts.

  1. 所有的web項目需要build artifacts可以直接導入爲IIS管理器/ Azure和等下的網站或應用程序。我們將用Web API創建一個.zip文件並將它們導入到inetmgr中。你可以帶上這個.zip文件並將它們導入到任何你想要的地方(也可以在不同的機器上說)。

  2. 通過編譯應用程序使用MSBUILD腳本來執行aspnet_compiler exe來創建構建工件。這link將幫助你。無論我們設置的信息,路線,控制器等如何預先編譯並創建預編譯的dll。一旦預編譯完成,一切都以二進制的形式出現,問問你將如何行事是不好的。

  3. 完整的過程稱爲deployment automation。在link中查看使用MSBUILD部分的命令行部署,閱讀關於部署自動化的知識將幫助您進一步瞭解這一點。

如果您需要更多的答案,請回復我會幫你再或者你可以google一下部署自動化。希望這可以幫助你選擇這個答案。

+0

非常感謝您的回答!我一直在使用CD和Azure一段時間,並知道它將代碼編譯爲DLL,但我想我從未理解構建工件的概念。 – PhilWolf91

+0

非常感謝你:) – staticvoidmain

0

從來沒有嘗試過部署Web API,以蔚藍的,但我一直在部署Web API來AWS和我假定這將是相同的..

一旦你在AWS你置備一個Windows服務器實例(EC2)將會獲得一個公共IP地址。爲了說服你的公共IP地址是55.77.321.10,那麼你的api將可以從以下地址訪問:http://55.77.321.10/api/values

如果服務器駐留在場地上,則需要將域名服務器配置到服務器本身。

無論在雲端還是在本地,您的web api都將託管在IIS服務器中。

假設你有Windows服務器上自己的域名,並安裝了IIS,在你需要的步驟做:

打開DNS管理控制檯。要打開DNS,請單擊開始,單擊控制面板,雙擊管理工具,然後雙擊DNS。

找到www.domain.com正向查找區域。

創建新的CNAME記錄

點CNAME - > A記錄www.domain.com

在IIS中,您只需設置第二個網站的結合是IP地址:同樣,端口:80 ,主機:www.domain.com

+0

感謝您的回答!這與我在問題中的位置有點不同,但對於本地安裝仍然有幫助。 – PhilWolf91

相關問題