知识大全 另类的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项目开发指南:系统架构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Asp.net多频道网站开发架构浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们打开门户
ASP.NET项目开发指南:Blog系统架构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
ASP.NET项目开发指南:网络书店系统架构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
ASP.NET项目开发指南:企业信息管理系统架构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NETMVC架构下的测试驱动开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一引言
建立ASP.NET开发平台 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 了解整个NET架构后接
ASP.NET底层架构探索之进入ASP.NET 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! A
ASP.NET底层架构之从浏览器到ASP.NET 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n
ASP.NET多频道网站架构实现方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!主体架构