为Linux我们将MVC重写,有图有真相

原创
2015/09/14 15:49
阅读数 261

1.写在前面

      就连我们自己开始时也在问自己:我们为什么要开发一套MVC,微软的难道不可用用吗?

一开始的理由很简单.为了更好地跨平台部署;在Linux部署过.NET的人们应该知道,

部署起来是有点繁琐的.自己试试就知道了:

文件名问题、版本问题、兼容问题................

但当我们仔细思考后发现了有些东西势在必行.

2.我们的原因

1)我们需要更好的跨平台框架

      正如概述里提到的,微软的MVC不能够直接提供支持..从开发的角度来看你的开发环境需要重新配置一番,你的服务器运行环境同样需要

繁琐的配置.而我们需要的效果很直接:一套代码无论是在IDE中还是在IIS或Linux Web服务器上都能无缝运行.

简单来讲,代码搬过去搬过来都能很好调试、运行、无需繁琐的配置.

      而微软的MVC始终在为其Windows Server考虑.

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

 

大侠如果喜欢,请推荐一下吧

                                                                  

展开阅读全文
打赏
1
0 收藏
分享
加载中
学习了,不过楼主好可怜,都没然来评论一下
2015/10/26 11:30
回复
举报
郁闷
2015/09/14 15:56
回复
举报
下班了...........
2015/09/14 15:55
回复
举报
都去哪里了
2015/09/14 15:55
回复
举报
开源中国的兄弟们
2015/09/14 15:55
回复
举报
人都去哪里了?
2015/09/14 15:55
回复
举报
来人啊
2015/09/14 15:55
回复
举报
更多评论
打赏
7 评论
0 收藏
1
分享
返回顶部
顶部