2015-05-21 57 views
10

我正在使用Web Api和Angular JS處理單頁應用程序。我想抓住一個偉大的水療應用程序的所有最佳做法。是將WebApi作爲獨立項目託管的最佳做法

我想知道的是,將Web Api項目作爲獨立項目託管的最佳實踐,或者只包含在同一個項目中以及您的spa。

謝謝

+1

從技術上講,它甚至不需要一個項目。我更喜歡使用崇高而不是Visual Studio for Angular。 –

回答

10

我認爲最好的辦法是讓SPA成爲單獨的項目,甚至更好的不同的存儲庫,因爲這更加靈活並且支持許多不同的開發/部署方案,特別是隨着項目變得更大。

我個人開始使用混合文件方法,並在項目超出了Todos示例的大小後的幾天移至單獨的Repos方法。

有一些獨立的項目的利弊/回購是:

  • 更好地爲查找/替換或轉到文件/類搜索上下文。
  • 每個項目/解決方案的文件更少,因此visual studio不會爬到它的膝蓋上 。
  • 如果您在那裏獲得比VS更好的javascript/typescript支持(比如webstorm),那麼您可以更輕鬆地使用不同的編輯器來處理您的spa項目。
  • 文件結構是指在小型解決方案資源管理器窗口,更可讀的,因爲有較少的嵌套
  • 不同的人可以在前端/後端獨立工作
  • 您的SPA都可以有自己的版本,你可以混合和匹配FE/BE版本要求
  • 簡單的持續集成,因爲你不混合前端/後端 打造步驟
  • 您可以在部署時決定,如果他們要在
    同一主機,或者不同的機器上託管(啓用後CORS支持)
  • 最後,它使您的SPA成爲一流的公民,而不僅僅是您web api的子文件夾。

在另一方面,我想不出將SPA作爲WebApi子文件夾的好處,除非是爲了使複雜度降至最低的非常小的項目。

+4

+1。要增加一個,隨着你的發展,你的API可能會有更多的客戶,而SPA將只是其中的一個。所以,因爲你會保持iphone/android代碼來分離代碼庫,這同樣適用於你的SPA。 –

+0

我很遺憾讓他們參與同一個項目。如果你使用CI/CD來部署它開始變得混亂。告訴您的項目使用/ app文件夾作爲開發工具,然後使用根目錄進行分段/生產工作,但很快就會變得複雜。我將SPA移植到自己的項目中。我現在可以刪除所有的OWIN中間件,並讓我的WebApi項目完成它主要的目標。 – trevorc

0

我發現將SPA包含在WebAPI項目中更容易。我總是把SPA代碼放在一個單獨的文件夾中(我總稱它爲「app」),並告訴WebAPI在你點擊WebAPI網站的根URL時在該文件夾中加載「index.html」文件。爲了提供靜態文件,我使用OWIN和FileSystems和StaticFiles插件。

我知道,問題不是「如何」實現它,但如果您決定使用OWIN,這可能對您有用。這段代碼告訴OWIN(這樣的WebAPI)到哪裏找「的index.html」和靜態(CSS,JS ...)文件)

builder.UseDefaultFiles(new DefaultFilesOptions() 
{ 
    RequestPath = new PathString(), 
    DefaultFileNames = new List<string>() { "index.html" }, 
    FileSystem = new PhysicalFileSystem(@".\app") 
}); 

builder.UseStaticFiles(new StaticFileOptions() 
{ 
    RequestPath = new PathString(), 
    FileSystem = new PhysicalFileSystem(@".\app") 
}); 
相關問題