爲Linux咱們將MVC重寫,有圖有真相

1.寫在前面

      就連咱們本身開始時也在問本身:咱們爲何要開發一套MVC,微軟的難道不可用用嗎? web

一開始的理由很簡單.爲了更好地跨平臺部署;在Linux部署過.NET的人們應該知道, 編程

部署起來是有點繁瑣的.本身試試就知道了: 服務器

文件名問題、版本問題、兼容問題................ 框架

但當咱們仔細思考後發現了有些東西勢在必行. 測試

2.咱們的緣由

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.項目截圖

 

4.配置過程.

從dll包裏面引用

1.引用Moon.Web,(Moon.Orm,FluentValidation 能夠不引用)

2.配置web.config的page節點.

  View Code

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

 

大俠若是喜歡,請推薦一下吧

相關文章
相關標籤/搜索