NFramework开源AOP框架介绍

 

1          前言

在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。NFramework是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。 NFramework不仅仅管理.NET类到数据库表的映射(包括.NET 数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQLADO.NET处理数据的时间。NFramework的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的90%。但对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑, NFramework可能不是最好的解决方案,对于那些在基于.NET的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,NFramework是最有用的。不管怎样,NFramework一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象中去。

2          功能介绍

NFramework主要用于应用程序的数据访问以及O/R Mapping,以下对其功能进行简单的介绍。

2.1         代码生成器

框架的目的就是为用户提供最大的简化。利用NFramework提供的代码生成器可以生成基于NFramework架构的标准三层架构(UIBLLDAL)程序,并且生成的代码可以满足80%的用户业务。这对于减少编码工作量,加快系统开发速度有着非常重要的作用。

2.2         多数据库管理

由于当前市场上多种数据库并存,因此对不同数据库厂商的产品支持也变得相当重要。NFramework内置了多数据库的支持,使得基于NFramework的应用程序在无需更改代码的情况下,实现不同数据库之间的移植。

2.3         连接管理

数据访问程序都需要显示的定义到数据源的连接。NFramework内置了对数据源连接的管理,用户代码从数据源(不同数据库)获取数据不再需要关心如何连接到数据源,只需调用NFramework提供的获取数据方法即可,使您不必再关心如何打开连接、关闭连接等繁琐的事情,NFramework会为您处理这一切。

2.4         事务管理

事务的控制是每个数据访问程序必须具备的功能,因此如何减少用于事务处理的用户代码也成为减少开发工作量的一个重要事情。NFramework提供了用于事务处理的基类,用户的代码只要继承了事务基类,无需在程序中另加事务控制代码即可轻松实现事务,这大大减少了编码工作量,提高了工作效率,同时也使代码的稳定性得到提高。

1.1         实体关系映射(O/R Mapping

O/R Mapping的重要性不言而喻,目前多数框架采用的映射方案都是采用XML文件的形式,例如NHibernateIBatisNet。在参考了多数方案后,NFramework提出自己的映射方案,即不再采用XML做为映射配置文件,而是使用了DLL作为载体(正如NHibernate中逐渐发展的NHibernate.Mapping.Attributes类),将映射关系与实体代码内置到一个类中。下面我们来比较一下各种映射方案的优缺点:

 

比较项目

NFramework

NHibernate

速度

直接使用DLL文件,因此速度较快(当然,这里使用了反射,速度主要取决于反射的速度)

视配置文件的大小,另外有文件的IO操作,另外如果一次性读入所有xml文件,对内存也提出了比较大的要求。

易用性

简单,和操作正常的类一样

相对复杂,需要对了解每一个配置节属性,有一定的学习难度

可维护性

简单,可以直接用代码跟踪调试

相对复杂,每个XML文件都需仔细校验

可部署性

方便部署,只需复制实体的DLL,如果实体有变化在编译期就可发现错误

相对麻烦,每个XML文件都要被部署到服务器,对于遗漏的文件将产生运行时错误,无法被早期发现,并且设置xml文件的路径都是比较繁琐的事情。

映射效率性

晚期绑定,因此对于数据表字段的类型、大小等更改不影响代码。

早期绑定,对于数据表的更改要将所有相关的XML配置文件也重新修改,对于配置文件较多的情况无疑会产生巨大的工作量

灵活性

由于实体要被编译成DLL的形式,因此灵活性相对较差

非常灵活,这归功于XML文件的灵活性

1.2         数据分页管理

在基于数据访问的应用程序中,特别是WEB应用程序,分页是一项基本的功能,但也是一项繁琐的功能。常用的分页方法是每一次数据访问都用数据库本身的功能去实现,这样无论是网络带宽还是应用服务器的负担都被减少到最低(缺点是增大了数据库服务器的负担)。但这种方式对于开发人员来却是非常痛苦的事情,同时这也背离了面向对象思想,将很多的业务逻辑都转换成了SQL语句来实现,当发生业务变化时的工作量可想而知。另外不同的数据库处理分页方式的SQL语法也不尽相同,这无疑加大了开发的复杂性。针对于此,NFramework内置了数据分页的功能,用户的代码只要通过NFramework统一数据访问接口,传递页数即可获取分页后的数据。这不但提高的系统的性能,而且也减少了相当大的工作量。

1.3         SQL管理

SQL是数据访问应用程序的基础,但也是最易出错的地方。对于手工输写的SQL代码,一旦数据表发生变化则要更改相应的SQL语句,如果遗漏更改那么应用程序将产生致命的错误,而且最大的问题在于这种错误无法在编译时期被发现,因此成了应用程序的安全隐患。NFramework提供了SQL语句的生成功能。NFramework利用实体与数据表的映射生成SQL语句,从简单的查询、新增、修改、删除语句,到复杂的多表关联都可轻松生成,并且生成的SQL语句会自动缓存起来,这样一旦大量的并发情况发生的话,则可以提供最佳的性能。生成的SQL语句充分体现了O/R Mapping的思想,即一旦数据表发生变化并不影响生成的SQL语句,NFramework会自动将发生变化的SQL语句从实体映射类中重新生成,真正做到“程序代码不再依赖于数据库”,我相信这一点非常重要。

1.4         统一异常管理

良好的异常处理可以提高应用程序的稳定性,同时对用户来说“友好”的出错提示也减轻了用户心中对系统的顾虑。另外对于开发人员来讲,如何快速的定位产生问题的原因也变得相当重要。NFramework提供的异常处理机制可以完全解决上面的问题,使编码人员在开发应用程序时不再需要明确的处理繁琐的“异常”,一切“异常”都可交由NFramework自动为您处理。

1.5         日志管理

应用程序产生错误是再所难免的,关键是产生错误后如何快速的分析、定位出具体原因,这是日志产生的初衷。NFramework提供了日志记录功能,并可以记录于多种载体,如文件、数据库、操作系统日志。同样,用户代码也无须关心如何记录日志,所有操作都由NFramework自动提供。

1.6         通用的校验类功能

提供了常用的正则表达式进行数据校验。以下列举了已实现的校验方法:

1.     非负整数校验

2.     正整数校验

3.     非正整数校验

4.     负整数校验

5.     整数校验

6.     非负浮点数校验

7.     正浮点数校验

8.     非正浮点数校验

9.     负浮点数校验

10. 浮点数校验

11. 由26个英文字母组成的字符串校验

12. 由26个英文字母的大写组成的字符串校验

13. 由26个英文字母的小写组成的字符串校验

14. 由数字和26个英文字母组成的字符串校验

15. 由数字、26个英文字母或者下划线组成的字符串校验

16. email地址校验

17. url校验

18. 日期校验

1.7         通用的对话框功能

主要封装了Javascript脚本的对话框显示功能,为编码人员提供方便。

1.8         通用的导入导出功能

主要实现了Excel的导入、导出功能。

1.9         短信功能

当前版本暂未提供。

1.10     扫描功能

当前版本暂未提供。

1.11     条码功能

当前版本暂未提供。

1.12     通用报表功能

开发B/S结构的应用程序最头疼的问题可能就是报表打印了,由于只能采用浏览器与用户界面进行交互,所以不能精确控制客户端的打印机。而很多B/S结构的应用程序常常需要完成非常复杂的报表打印任务。而靠IE自带的页面打印功能一般不能满足需要。因此提供通用的报表支持就显得尤为重要。目前此功能的正在编码中,详细设计文档也将稍后完成。

1.13     AJAX框架支持

当前版本暂未提供。

1.14     组织机构管理

应用程序中必不可少的功能模块。具体内容包括组织管理、部门管理、人员管理、角色管理。

1.15     权限管理

应用程序中必不可少的功能模块。可以进行角色授权、部门授权、人员授权。

1.16     菜单管理

应用程序中必不可少的功能模块。实现可配置的应用程序菜单,并且与权限挂接,实现动态的菜单权限管理。

你可能感兴趣的:(framework)