簡體   English   中英

ASP.Net MVC網站和Web API作為單一實施

[英]ASP.Net MVC Website & Web API As Single Implementation

我有一個用ASP.Net MVC 4編寫的客戶端儀表板應用程序(不限於此版本,很樂意升級)。 該網站托管在Windows Azure中。

我們的客戶希望通過API以編程方式訪問此儀表板。

情感上,他們希望能夠使用HTTP Restful Service通過代碼以編程方式執行通常在儀表板網站上執行的所有相同功能。

....我的立即反應是簡單地構建一個ASP.net Web API項目,並從現有的MVC項目中分離出共享服務/庫/組件,以便API和MVC網站都可以調用相同的代碼庫。

問題

  1. 是否可以在現有的MVC網站項目中簡單地創建Web API控制器,然后通過HTTP公開它們?
  2. 如果不可能執行“ 1”,如果我擁有MVC解決方案,單獨的Web API解決方案以及具有常見服務和模型的共享庫項目,Azure會很好地發揮作用嗎? 當我分別部署MVC解決方案和Web API解決方案時,如何確保Azure將共享庫組件復制到雲中?

更新

根據評論,以下兩個獨立控制器(MVC項目中的原始MVC控制器和同一項目中的其他Web API控制器)的實現實際上可以正常工作。 請注意,根據以下鏈接文章 ,以下實現將是“ MVC 6之前”實現。 MVC 6本身提供了在單個控制器中實現API調用和通常的MVC View調用的功能(與繼承自不同基類的單獨控制器相反)。

public class ProductsController : Controller
{
    //Products/Index
    public ActionResult Index()
    {
        return View();
    }
}

public class ProductsAPIController : ApiController
{
    // GET api/productsapi/getall
    public IEnumerable<string> GetAll()
    {
        return new string[] { "value1", "value2" };
    }
}

最新版本的MVC(6)現在已將兩種技術集成到一個解決方案中。 http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6

如果可以啟動新項目,這將是理想的選擇。

問題1:是的,請看一下上面的文章。

問題2:如果您既有MVC解決方案又有WebApi解決方案,Azure會很好,但是我認為您需要在不同的網站上運行它們(我對此不是100%)。

公平地說-就您的消費客戶而言,MVC或WebAPI無關緊要。

MVC和WebAPI都可以創建JSON或XML輸出-只是使它變得更簡單(WebAPI根據客戶端序列化相關響應)。

但是您可以很容易地將兩者混合在一起,就像其他人所說的那樣,就像Add New Item一樣簡單

  1. 是的,它將正常工作。 唯一的陷阱是,您必須將WebAPI路由與MVC路由明確分開(例如,所有的WebAPI路由都在/api/...前綴下,這是默認設置)。

  2. 如果您確實出於任何原因決定做兩個單獨的項目,並且想擁有一個共享庫,最好的解決方案是將該庫保存在私有提要的NuGet包中。 TeamCity開箱即用地支持此功能,並提供其他出色功能(持續集成/部署)。

暫無
暫無

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

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