就連咱們本身開始時也在問本身:咱們爲何要開發一套MVC,微軟的難道不可用用嗎? web
一開始的理由很簡單.爲了更好地跨平臺部署;在Linux部署過.NET的人們應該知道, 編程
部署起來是有點繁瑣的.本身試試就知道了: 服務器
文件名問題、版本問題、兼容問題................ 框架
但當咱們仔細思考後發現了有些東西勢在必行. 測試
1)咱們須要更好的跨平臺框架 spa
正如概述裏提到的,微軟的MVC不可以直接提供支持..從開發的角度來看你的開發環境須要從新配置一番,你的服務器運行環境一樣須要 3d
繁瑣的配置.而咱們須要的效果很直接:一套代碼不管是在IDE中仍是在IIS或Linux Web服務器上都能無縫運行. 調試
簡單來說,代碼搬過去搬過來都能很好調試、運行、無需繁瑣的配置. code
而微軟的MVC始終在爲其Windows Server考慮. htm
2)咱們須要更優秀的MVC編程理念及測試環境.
咱們先看一段MVC的代碼
public ActionResult GetStudent(int id) { Student st = new Student(); st.Email = "q@q.com"; st.Name = "秦時明月" + DateTime.Now.ToShortDateString(); st.Password = "pwd"; st.PID = 23; st.Birth = DateTime.Now.AddYears(-10); st.Fa = new Father(); st.Fa.Age = 90; st.Fa.Name = "Father1"; st.Fa.Mother = new Mother() { Name = "mm", Age = 1002 }; return View(st); }
如今咱們提出兩個疑問:
1. 若是上面的業務功能我須要在其餘代碼中使用怎麼辦?好比:我有一個查詢功能就是這樣的模式.----代碼重用率
2.若是我要對這段代碼進行自動化測試怎麼辦?或許你有好方法----但這是一個問題.
假如,MVC的Action 爲如下代碼,那麼全部的問題就不是問題了.
public Student GetStudent(int id) { Student st = new Student(); st.Email = "q@q.com"; st.Name = "秦時明月<>" + DateTime.Now.ToShortDateString(); st.Password = "pwd"; st.PID = 23; st.Birth = DateTime.Now.AddYears(-10); st.Fa = new Father(); st.Fa.Age = 90; st.Fa.Name = "Father1"; st.Fa.Mother = new Mother() { Name = "mm", Age = 1002 }; return st; }
以上僅僅是一個引子.還有不少其餘相似問題,咱們之後再討論.
3)咱們要更好的Debug環境
固然你說你能夠把微軟的MVC源代碼拿進來作調試,
但我也能夠問你:你在一刻鐘以內可以將其集成到你的項目中進行調試嗎?
3.項目截圖
從dll包裏面引用
1.引用Moon.Web,(Moon.Orm,FluentValidation 能夠不引用)
2.配置web.config的page節點.
3.配置handler
1)若集成模式.(如今WINDOWS SERVER基本上都用集成模式) configuration節點下直接使用以下配置
<system.webServer> <handlers> <add name="RequestHandler" path="*.htm" verb="*" type="Moon.Web.RequestHandler, Moon.Web" /> </handlers> </system.webServer>
2)若經典模式(老版本IIS,包括xsp4 mono)
<configuration>
<system.web> 下配置.
<httpHandlers> <add path="*.htm" verb="*" type="Moon.Web.RequestHandler, Moon.Web" /> </httpHandlers>
4.添加文件夾
在項目根目錄下添加
Controllers文件夾(非必須)
Views文件夾
如上面項目結構圖所示.
5.建立Controller
以下所示,繼承BaseController便可.
而後在global文件中註冊路由
6.建立視圖
實例項目源代碼下載:
http://share.weiyun.com/c4fed40c2760d21c3dab748980c8a98d