知识大全 另类的ASP.NET快速开发架构体系

Posted 视图

篇首语:坚强的意志,是不会被假设所谓的命运击败的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 另类的ASP.NET快速开发架构体系相关的知识,希望对你有一定的参考价值。

另类的ASP.NET快速开发架构体系  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  JVPL和mvc设计模式类似 一个变种的MVC设计模式 下面我们将详细介绍JVPL模式以及JVPL设计模式的demo实例  第一部分 另类的MVC架构JVPL架构

   (JVPL模式的系统结构图)

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

   )定义:

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

   )MVC的优弱点:

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

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

   )JVPL设计模式的优势

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

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

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

   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=//localhost: /Web /> >程序运行的根目录  </appSettings> 

  // 库文件引用

  引用Moon Orm和Moon Web库

  // 加入脚本库到根目录

  

  // 页面开发

  结构

  

    <%@ Page Language= C#  AutoEventWireup= true  CodeBehind= WebForm aspx cs  Inherits= Web WebForm  %>    <!DOCTYPE  PUBLIC  //W C//DTD XHTML   Transitional//EN   transitional dtd > < xmlns= >     <head>         <title>model加载和数据更新</title>         <meta  equiv= content type  content= text/; charset=utf  />          <script type= text/javascript  src= Scripts/jquery min js ></script>             <script type= text/javascript  src= Scripts/Qin Engine js ></script          <script>               var pID= ;               $(function ()                    Qin_LoadDataToDom ( Web UserInfoAction   GetUserInfo     form_UserInfo function(data)                       alert(data A);                       pID=data A;                   );                                  );               function AjaxUpdateUserInfo()                    var ID =pID;                      _TableName= PersonSet ;                   Qin_AjaxUpdate( Web UserInfoAction   AjaxUpdateUserInfo   form_UserInfo   ID  ID      function (data)                        alert( 主键为 +data+  update success );                   );                          </script>     </head>     <body>           <form id= form_UserInfo   >                 <input id= keyID  class= Key  field= ID  type= hidden  />                        <table style= width:  %; >                 <tr>                     <td>                         姓名:                      </td>                     <td>                           <input field= UserName  type= text  />                     </td>                 </tr>                 <tr>                     <td>                         性别                      </td>                     <td>                         <input name= Sex  field= Sex  value= true  type= radio  />男<input name= Sex  field= Sex                              value= false  type= radio  />女                      </td>                 </tr>                 <tr>                     <td>                         年龄                      </td>                     <td>                         <input field= Age  type= text  />                     </td>                 </tr>                  <tr>                     <td>                         北京户口                      </td>                     <td>                         <input field= IsBeiJing  type= checkbox    />                     </td>                 </tr>                  <tr>                     <td>                         年龄段                      </td>                     <td>                          <select field= AgePeriod ><option value= >老年人</option><option value= >中年人</option><option value= >年轻人</option></select>                     </td>                 </tr>              </table>     <input type= button  onclick= AjaxUpdateUserInfo();  value= 更新用户数据  />     </form>     </body> </> 

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

  

    [Log()]//加载的代码          public static void GetUserInfo()                             PersonSet data=    DBFactory GetEntity<PersonSet>(PersonSetTable ID Equal( ));              CustomData cus=new CustomData();              cus A= ;              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架构

   背景

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

   介绍

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

   特色

    高性能(该框架采用纯的ADO NET进行框架 避免Linq以及反射带来的性能损失) 易用性强(配置简单 智能感知 代码生成器的辅助 会sql就可(可以自我性能优化)) 多数据库支持(如果需要可自我扩增 热烈欢迎同道加入团队开发中(联系qq: )) 强大查询语法糖功能 多数据源支持 < framework 2.0原生支持。tW.winGWit

  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);                                                              

  

  实体代码生成器

  

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

cha138/Article/program/net/201311/12132

相关参考

知识大全 ASP.NET项目开发指南:系统架构

ASP.NET项目开发指南:系统架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Asp.net多频道网站开发架构浅析

Asp.net多频道网站开发架构浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们打开门户

知识大全 ASP.NET项目开发指南:Blog系统架构

ASP.NET项目开发指南:Blog系统架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &n

知识大全 ASP.NET项目开发指南:网络书店系统架构

ASP.NET项目开发指南:网络书店系统架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &n

知识大全 ASP.NET项目开发指南:企业信息管理系统架构

ASP.NET项目开发指南:企业信息管理系统架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET MVC架构下的测试驱动开发

ASP.NETMVC架构下的测试驱动开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一引言 

知识大全 建立ASP.NET开发平台

建立ASP.NET开发平台  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  了解整个NET架构后接

知识大全 ASP.NET底层架构探索之进入ASP.NET

ASP.NET底层架构探索之进入ASP.NET  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  A

知识大全 ASP.NET底层架构之从浏览器到ASP.NET

ASP.NET底层架构之从浏览器到ASP.NET  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 ASP.NET多频道网站架构实现方法[1]

ASP.NET多频道网站架构实现方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!主体架构