2013-04-13 52 views
4

對於誰遵循相當新ASP.NET Web API,他們知道這是建立精心設計和朝外的HTTP服務的一個很好的框架,可以在使用標準的許多不同的客戶涉及的人XML或JSON內容類型。的ASP.NET Web API:設計實踐客戶

我最近設計一個大型API與既有網絡和移動客戶端使用。我注意到,在通過微軟提供的用於Web API的NuGet包提供的ASP.NET Web API模板中,它們採用了一個非常簡單的視圖方法,並且有一個漂亮的主頁。

這讓我反感。主要是因爲我認爲Web API是專門爲Web API設計的,沒有別的。

在其他的意見,是標準制定的Web客戶端(與你的API接口)

  • 裏面的Web API項目?

    或者

  • 外的Web API項目的Web客戶端分離,就像你您的手機或桌面客戶端?

第二個選擇似乎是合乎邏輯我可維護性和代碼潔淨度的方式,但也有可能是其他角度設計中的ASP.NET Web API時可能是有益的。你怎麼看?

+0

看看https://github.com/alisabzevari/LiteApi。它可以幫助您瞭解如何正確設計apis。 – alisabzevari

回答

2

很高興看到你使用Web API!

關於你的第一個問題,你是對的,它在概念上有意義的意見,從單獨的Web的API。我建議在MVC新項目對話框中使用「Empty」項目類型,然後添加API控制器。或者將NuGet包自己添加到一個空的Web項目中。軟件包不應該添加任何視圖到您的項目。

關於客戶,我強烈推薦客戶端庫中分離出來,爲維護一個單獨的項目。儘管可以在客戶端和Web API之間共享公共數據類型,但這很好。在這種情況下,將模型移動到單獨的dll是一種常見模式,並且客戶端和Web API都會引用該庫中的類型。

你想要的客戶端和Web API是獨立的一對夫婦的原因(還有許多更多):

  • 如果您分發庫,要分發客戶端代碼,而不是網絡API代碼
  • 你要創建的客戶端和服務器之間的乾淨合同,避免客戶端依賴於在服務器上執行,反之亦然。
+0

Youssef, 您能否提供您提到的設計模式樣本?是否有可能在一個單獨的項目中構建默認的客戶端界面(視圖或表示層)並將其作爲視圖DLL進行分發?這樣所有用戶都可以使用,而無需構建自定義視圖 – user266909