天堂向右,我依然向左

天下之大,虽离家千里,何处不可往!何事不可为!
生活之路,纵坎坷曲折,当奋斗不息,则精彩纷呈!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  187 随笔 :: 63 文章 :: 113 评论 :: 25万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

                     (文/馒头)
      笔者已采用此框架开发一套企业管理系统,在开发速度和运行速度上已得到证实,其开发模型适应于中小型的系统开发。大型的系统需要再加入分布式缓存,负载均衡等技术。
      以下将详细阐述开发框架的功能,应用项目架构的设计以及实际项目的应用。

一,基于ORM的快速开发框架:

框架分为四个项目:
1.Common: 公用函数
      比如Cahce操作,cookie操作,文件操作等,另外简繁转换,网页压缩,多语言等功能

2.Controls:公用控件(具体细节,请点此查看<基础框架之Controls控件说明>)
      主要有四个控件,数据控件LReapter,分页控件AspNetPage,页面顶部信息菜单控件HeadMenuControl,页面切换页控件WebTabControl;

3.Database:数据操作控件 (具体细节,请点此查看<基础框架之Database控件(ORM架构)说明>)
      基于ORM框架,仿照iBatis.Net的风格,整合了几个codeplex开源代码,数据库操作类直接封装了ADO.NET操作,所以在处理速度上非常快,并且避免了开发时忘了关闭数据库而造成数据库连接池溢出。同时在易用性上超越了iBatis.Net,并且弥补了几个iBatis.Net的缺陷。

4.Licence:许可证

此四个为框架的根本,所有的应用系统都基于此开发,其中Controls共用控件和Database数据库操作控件可以分开使用。


二,实际应用项目
1.Model:实体类
      可用工具自动生成,主要应用于ORM的参数的传递。并分离了手工修改和自动生成,可避免更新时带来的混淆。

2.BUControls:常用业务封装控件
      将常用的业务块提取出来,封装成控件,比如数据字典的封装。

3.WebForm:Web应用项目
      在Web应用中,引用框架的Controls公用控件,在此基础上实现快速开发。

4.WinForm / Console: Desktop应用项目
      无论在Web应用还是Desktop应用,Database数据操作控件都可以采用。


 

三,应用项目架构设计:

1.WEB应用程序的快速开发:
(1)开发模式,分为两种:
      第一种,基本上采用.ascx的用户控件。把控件的路径维护到SysTemplet表中,调用时基本上采用LoadUI.aspx?g=***的方式(url重写方式后续在考虑)。
      第二种,基于MasterPage母板的.aspx页面开发,同样把文件相对路径维护到SysTemplet基表中。
      建议采用第二种,笔者用第一种方式开发时,碰到了很多奇怪的问题(虽然都已解决)。

(2)多皮肤实现
      利用模板统一进行皮肤更换,这点实现起来也非常简单,须确保所有的.aspx都采用母板。

(3)多样式实现
      在设计初把多样式考虑进去,通过动态加载不同的CSS来实现多样式。

(4)多语言实现
      采用框架自带的方式,将多语言维护到指定的文件夹下面,采用xml格式(目前不支持数据库的方式),同时在网页里可以直接用{username}这种语言标签来显示。
      您也可以采用其他的方式,这里就不在累赘。

(5)多数据库实现
      采用已封装好的ORM架构,目前只提供Access数据库和SqlServer两种,后续会把Oracle,Mysql,Sqlite等封装进来,您也可以继承框架进行其他数据库的封装。sql配置文件的写法与iBatis.Net相似,不同的数据库sql配置文件放置到不同的文件夹下面,比如SqlServer数据库的sql配置文件放到DB\SqlServer里面,。
示例如下:

复制代码
<SqlMap>
  
<sql id="InsertTemplet">
      INSERT INTO SysTemplet  WITH (ROWLOCK)  
      ([TempletId],[FunctionId],[Type]) VALUES 
      (#TempletId#,#FunctionId#,#Type#)
  
</sql>
  
  
<!--使用存储过程-->
   
<sql id="SP_InsertTemplet">
      SP_InsertTemplet #TempletId#,#FunctionId#,#Type#
  
</sql>
</SqlMap>
复制代码


四,基于框架的具体使用方法: (待续)

posted on   老舟  阅读(1330)  评论(9编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示