[转]另类的MVC架构JVPL架构

简介:

 

第一部分 另类的MVC架构JVPL架构

(JVPL模式的系统结构图)

1.JVPL模式(JSON+视图+处理器+加载器)

    1)定义:

    JVPL和mvc设计模式类似,一个变种的MVC设计模式.

    2)MVC的优弱点:

    MVC让开发从原来的 webform中解脱出来,解决了层次清晰逻辑与UI的隔离以及服务端控件的一些瑕疵等诸多问题,但是MVC的弱点同时也存在.在MVC中我们的Model时常变动,我们必须手动创建Model类和Model的变动修改.同时对于Model的Action控制操作也需要一定程度上的变动.(由实体框架等生成的实体(Model)是无法满足现行逻辑需求的).

    其次因为实际开发中没有银弹,只有平衡点.V,C之间的逻辑紧密,然而实际的前台实现和效果需求是变化莫测的,更加导致美工决定VC的局面,从而VC的重用性很低很低.如果一个页面存在多个视图,那么其逻辑就相对不易(我们需要维护多个VC组,我们需要处理VC组 的一定逻辑次序,构造不同的Model).

    3)JVPL设计模式的优势 

    1)JVPL(json-视图-处理器--加载器),如上图所示.如果我要视图重用我只要载入所需视图和加载器即可.var 新的视图=get("加载器","视图"); 且Moon.net架构会接着脚本引擎帮助我们生成后台所需代码.

    2)整个JVPL模式建立建立在Ajax的机制上,它具有Ajax所有的优缺点.(但我认为Ajax的优点>>缺点,且我们可以 通过手段解决这些缺点).正如有人说Ajax不安全,因为暴露了系统服务接口,这完全废话,难道纯的form提交就没有暴露?这些都是门外汉说的话,因为 根本的权限机制都没有建立.接着说,正如前面文章提到的视图数据的加载.如果我前台的逻辑变动系统的逻辑变动,这是Moon.Web会辅助我们生产新的后台代码. 如果一个页面存在多个视图,那么这多个视图的加载,我们通过加载器直接调度即可.因为脚本引擎的存在,它会帮助我们生成后台代码和数据分配及数据转 发.Moon.NET中最为精华的部分就是脚本引擎.它也是我们提高开发效率的关键.

    3)在我们的开发中,前端展现的标准是由策划及美工定的,所以作为一个开发者还是架构师必须紧密结合实际进行架构或开发.这样才能提高开发效率. Moon.Web主要对复杂的UI控件诸如:编辑器,分页,异步文件上传...等控件进行了封装且提供了美工可控制接口.因为MVC的控件方法也是一样 的.

    2.JVPL设计模式的demo实例

    说明:JVPL设计模式与传统的ASP.NET开发完全兼容,且符合MVC的设计理念.

    实例一:程序配置

    -------------------------------------配置文件设置-------------------------------------- 

     

    <appSettings>
    <add key="DLL" value="Web.dll" />--------------->数据处理器和数据加载器所在的类库名(放在Bin里面)
    <add key="dbType" value="PostgreSql" />----------->数据库的类型
    <add key="linkString" value="Server=localhost;Database=MoonDB;User ID=postgres;Password=mingyue;"/>--->连接字符串
    <add key="HTTP_ROOT_PATH" value="http://localhost:8080/Web"/>--->程序运行的根目录
    </appSettings>

    //--------------------------------------库文件引用---------------------- 

     

    引用Moon.Orm和Moon.Web库

     

    //-------------------------------------加入脚本库到根目录

     

    //-----------------------------------页面开发

     

    html结构

    View Code

    两处黄色部分,表示的数据的加载和数据提交.

     

    [ Log()]//加载的代码
    public  static  void  GetUserInfo()

    PersonSet data= DBFactory.GetEntity<PersonSet>(PersonSetTable.ID. Equal( 1));
    CustomData cus= new  CustomData();
    cus.A= 1;
    ReturnJSONString(data,cus);
    }


     

     

    [ Log()]//更新部分的代码(代码生成器会自动生成)
    public  static  void  AjaxUpdateUserInfo()
    {
    PersonSet data= new  PersonSet();

    string UserName=Request[ "UserName"];
    string Sex=Request[ "Sex"];
    string Age=Request[ "Age"];
    string IsBeiJing=Request[ "IsBeiJing"];
    string AgePeriod=Request[ "AgePeriod"];
    string otherData=Request[ "otherData"];
    string PrimaryKey=Request[ "PrimaryKey"];
    data. Set(PersonSetTable.UserName,UserName);
    data. Set(PersonSetTable.Sex,Sex);
    data. Set(PersonSetTable.Age,Age);
    data. Set(PersonSetTable.IsBeiJing,IsBeiJing);
    data. Set(PersonSetTable.AgePeriod,AgePeriod);
    data. SetOnlyMark(PersonSetTable.ID. Equal( long. Parse(PrimaryKey)));
    DBFactory. Update(data);
    ReturnTextString(PrimaryKey);
    }

     

    //-----------------------页面效果及代码生成效果

     

     

    第二部分 高效便捷的ORM架构Moon.net

    1.背景

    针对Qin.Data的架构设计反应出的一些问题进行了全新的架构设计,弥补了多数据源使用不便、同道反应不过ORM、自身架构的瑕疵等问题.

    2.介绍

    Moon .ORM是一个通用数据库处理框架(可以包含MSSQL POSTGRESQL,SQLITE EXCEL MYSQL DB2 ORACLE...只要你愿意实现接口就可以).很便捷地进行常用数据库操作(增删改查).其性能是几近纯ADO.NET.对于实体的查询采用emit实 现,如果您还不满意可用此框架的代码生成器直接生成纯ADO.NET SQL形式.其主要特色就是性能和便捷的操作.

    3.特色

    1.高性能(该框架采用纯的ADO.NET进行框架,避免Linq以及反射带来的性能损失);

    2.易用性强(配置简单,智能感知,代码生成器的辅助,会sql就可(可以自我性能优化)) ;

    3.多数据库支持(如果需要可自我扩增,热烈欢迎同道加入团队开发中(联系qq:564064202))

    4.强大查询语法糖功能

    5.多数据源支持

    6..net framework 2.0原生支持

    4.配置简单

     <appSettings> 
    <add key="dbType" value="MSSQL" />
    <!--数据库的类型 还可以写MYSQL,SQLITE,ACCESS等....—>
    <add key="linkString" value="Server=mainserver;database=HD01SystemDB;Uid=sa;Pwd=123" />
    </appSettings>

    代码功能演示

    using System;
    using System.Collections.Generic;

    using Moon.Orm;
    using MoonDB;

    namespace r
    {



    class Program
    {
    public  static  void Main( string[] args)
    {

    // 数据添加
    PersonSet person= new PersonSet();
    person.Age= 133;
    person.AgePeriod= 1;
    person.IsBeiJing= true;
    person.Sex= true;
    person.UserName= " 秦仕川 ";

    DBFactory.Add(person);
    Console.WriteLine( " 新的数据唯一识别标志: "+person.GetOnlyMark());

    // 另类数据添加
    person.Set(PersonSetTable.UserName, " 另类 ");
    person.Set(PersonSetTable.Age, 12);
    person.Set(PersonSetTable.AgePeriod, 11);
    person.Set(PersonSetTable.IsBeiJing, false);
    person.Set(PersonSetTable.Sex, true);
    DBFactory.Add(person);
    Console.WriteLine( " 新的数据11唯一识别标志: "+person.GetOnlyMark());

    // 数据删除
    long ret= DBFactory.DeleteWhen(PersonSetTable.IsBeiJing.Equal( 1).And(PersonSetTable.Age.BiggerThan( 12)));
    Console.WriteLine( " 被删除的条数: "+ret);

    // 改数据


    person.UserName= " 另类修改后 ";
    person.SetOnlyMark(PersonSetTable.UserName.Equal( " 另类 "));
    DBFactory.Update(person);

    // 查询
    PersonSet p=DBFactory.GetEntity<PersonSet>(
    PersonSetTable.UserName.Equal( " 另类修改后 "));
    Console.WriteLine(p.Age);

    // 查询一个字段
    int age=DBFactory.GetOneField< int>(PersonSetTable.Age, PersonSetTable.ID.Equal( 5));
    Console.WriteLine(age);
    Console.Write( " Press any key to continue . . .  ");
    Console.ReadKey( true);



    }
    }
    }



    实体代码生成器

    QQ截图未命名3

    数据库升级问题(我们常常面临数据库表的变动问题)

    Moon.ORM中不必担心这些东西,因为实体全由代码生成器生成,更新一次数据库,你重新生成一次DLL(代码生成器带有编译功能)

     

     


    本文转自火地晋博客园博客,原文链接:http://www.cnblogs.com/yelaiju/archive/2012/02/27/2369427.html,如需转载请自行联系原作者

    目录
    相关文章
    |
    7月前
    |
    设计模式 存储 前端开发
    MVVM、MVC、MVP三种常见软件架构设计模式的区别
    MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
    154 12
    |
    2月前
    |
    存储 前端开发 调度
    Flux 与传统的 MVC 架构模式区别
    Flux是一种用于构建用户界面的架构模式,与传统的MVC架构不同,它采用单向数据流,通过Dispatcher统一管理数据的分发,Store负责存储数据和业务逻辑,View只负责展示数据,使得应用状态更加可预测和易于维护。
    |
    5月前
    |
    设计模式 前端开发 数据库
    哇塞!Rails 的 MVC 架构也太牛了吧!快来看看这令人惊叹的编程魔法,开启新世界大门!
    【8月更文挑战第31天】《Rails中的MVC架构解析》介绍了Ruby on Rails框架核心的MVC设计模式,通过模型(Model)、视图(View)和控制器(Controller)三部分分离应用逻辑,利用Active Record进行数据库操作,ERB模板渲染视图,以及控制器处理用户请求与业务逻辑,使代码更易维护和扩展,提升团队开发效率。
    89 0
    |
    2月前
    |
    存储 前端开发 数据可视化
    在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
    在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
    |
    4月前
    |
    设计模式 前端开发 数据库
    理解mvc架构
    mvc架构
    44 4
    |
    5月前
    |
    设计模式 存储 前端开发
    MVC革命:如何用一个设计模式重塑你的应用架构,让代码重构变得戏剧性地简单!
    【8月更文挑战第22天】自定义MVC(Model-View-Controller)设计模式将应用分为模型、视图和控制器三个核心组件,实现关注点分离,提升代码可维护性和扩展性。模型管理数据和业务逻辑,视图负责数据显示与用户交互,控制器处理用户输入并协调模型与视图。通过示例代码展示了基本的MVC框架实现,可根据需求扩展定制。MVC模式灵活性强,支持单元测试与多人协作,但需注意避免控制器过度复杂化。
    52 1
    |
    5月前
    |
    开发者 前端开发 Java
    架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
    【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
    53 0
    |
    5月前
    |
    存储 前端开发 数据库
    神秘编程世界惊现强大架构!Web2py 的 MVC 究竟隐藏着怎样的神奇魔力?带你探索实际应用之谜!
    【8月更文挑战第31天】在现代 Web 开发中,MVC(Model-View-Controller)架构被广泛应用,将应用程序分为模型、视图和控制器三个部分,有助于提高代码的可维护性、可扩展性和可测试性。Web2py 是一个采用 MVC 架构的 Python Web 框架,其中模型处理数据和业务逻辑,视图负责呈现数据给用户,控制器则协调模型和视图之间的交互。
    48 0
    |
    6月前
    |
    存储 前端开发 算法
    MVC(Model-View-Controller)架构
    MVC架构帮助开发者构建清晰、可维护和可扩展的Web应用程序。
    52 2
    |
    7月前
    |
    设计模式 前端开发 Java
    【Spring MVC】快速学习使用Spring MVC的注解及三层架构
    【Spring MVC】快速学习使用Spring MVC的注解及三层架构
    133 1

    热门文章

    最新文章