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.项目截图

为Linux重新开发MVC,有图有真相

            <%=Html.TextBoxFor(m => m.Name) %><br />
            <%=Html.TextBoxFor(m => m.Password) %><br />
            <%=Html.TextBoxFor(m => m.PID) %><br />
            <%=Html.TextBoxFor(m => m.Birth) %><br />
            <%=Html.TextBoxFor(m => m.Fa.Name) %><br />
            <%=Html.TextBoxFor(m => m.Fa.Mother.Name) %><br />
            <%=Html.TextBoxFor(m => m.Fa.Mother.Age) %><br />

 

 

 

为Linux重新开发MVC,有图有真相

为Linux重新开发MVC,有图有真相

 

4.配置过程.

从dll包里面引用

1.引用Moon.Web,(Moon.Orm,FluentValidation 可以不引用)

2.配置web.config的page节点.

为Linux重新开发MVC,有图有真相

<pages pageParserFilterType="Moon.Web.ViewTypeParserFilter, Moon.Web" 
              pageBaseType="Moon.Web.MViewPage,Moon.Web"  enableViewState="false" enableViewStateMac="false"
                 autoEventWireup="false"
           >
        <namespaces>
          <add namespace="Moon.Web" />
        </namespaces>
      </pages>
View Code

相关文章:

  • 2022-01-22
  • 2021-04-09
  • 2021-07-08
  • 2021-09-01
  • 2021-09-04
  • 2021-03-04
  • 2021-05-29
  • 2021-05-08
猜你喜欢
  • 2021-04-04
  • 2021-12-01
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2021-05-25
  • 2021-09-14
相关资源
相似解决方案