首先說明一下測試環(huán)境。如下圖所示瘪板,解決方案中有三個項目吴趴。
其中,MainWeb項目時一個空的MVC項目侮攀,沒有模型锣枝、控制器和視圖。
解決方案中的其他兩個項目是類庫項目兰英,與一般的類庫不同的是撇叁,F(xiàn)irstArea和SecondArea需要依賴System.Web和ASP.NET MVC蓬豁,前者在.NET框架程序集中引用牵辣,后者可以通過NuGet安裝。
FirstArea和SecondArea項目中各自有一個控制器聘芜,都沒有過多的代碼薄坏。這兩個項目代表兩個不同的程序員開發(fā)的不同的后端服務(wù)趋厉。
using System.Web.Mvc;
namespace FirstArea.Controllers
{
public class DefaultController : Controller
{
public ActionResult Index()
{
ViewBag.Text = "First";
return View();
}
}
}
using System.Web.Mvc;
namespace SecondArea.Controllers
{
public class DefaultController : Controller
{
public ActionResult Index()
{
ViewBag.Text = "Second";
return View();
}
}
}
FirstArea和SecondArea項目除了控制器以外,還各自都有一個用來注冊區(qū)域的類颤殴。
using System.Web;
using System.Web.Mvc;
namespace FirstArea
{
public class FirstAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "FirstArea";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"FirstArea_default",
"FirstArea/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
}
using System.Web;
using System.Web.Mvc;
namespace SecondArea
{
public class SecondAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "SecondArea";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"SecondArea_default",
"SecondArea/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
}
最后觅廓,將FirstArea和SecondArea項目的生成路徑全都改成生成到MainWeb的bin目錄中。值得注意的是涵但,MainWeb不需要引用FirstArea和SecondArea杈绸,只要這樣生成到MainWeb的bin目錄中帖蔓,然后將MainWeb部署到IIS上,即可實現(xiàn)集中部署的效果瞳脓。
當(dāng)然塑娇,事情還沒完,我們還需要驗證這樣的集中部署是否有效劫侧,下面我們在MainWeb中開發(fā)前端頁面埋酬。
首先,在MainWeb項目中添加FirstArea和SecondArea區(qū)域烧栋,注意写妥,如果添加的區(qū)域有注冊區(qū)域的類,是需要刪掉的审姓,因為這兩個區(qū)域的注冊類已經(jīng)在另外兩個項目中定義了珍特。
建好區(qū)域之后,按照ASP.NET MVC的約定魔吐,在Views文件夾中新建與控制器一樣名稱的文件夾扎筒,再新建與Action名稱一樣的cshtml文件。
View的內(nèi)容很簡單酬姆,就是輸出在action中賦值的ViewBag嗜桌。
@{
ViewBag.Title = "Index";
}
<h2>我是 @ViewBag.Text 的View</h2>
最終的代碼結(jié)構(gòu)是下圖這樣的:
然后運行,運行結(jié)果如下:
總結(jié)一下辞色,通過注冊區(qū)域的方式骨宠,兩個程序員就能獨立的開發(fā)后端的服務(wù),然后把編譯好的dll丟到網(wǎng)站的bin目錄中淫僻,只要在網(wǎng)站中按約定建立好視圖诱篷,這樣后端即實現(xiàn)了服務(wù)獨立,又能滿足集中部署的需求雳灵。