.net框架学习 自动化就是让人越来越懒

    这几天在学习框架,主要是基于NHibernate框架,以来为核心来做扩展学习,遇到什么问题找相应的解释。写下自己的心得,本人比较懒,这是第一篇日志,呵呵。

扯蛋了这么久,说说这几天学习的框架。基于NHibernate,扩展到对其他框架的学习,学得不深,可能有些地方不对,还请指教。涉及所用技术aop(面向方面编程(动态代理)),IOC(注射依赖或者叫反转控制,都不好听),IOC容器(Castlesping.net),数据库缓存。

1. 什么是NHibernate

从JAVA移植来的开源项目,java里有Hibernate,通过xml文件到数据库的映射来固化关系数据库底层,从而摆脱对数据库底层的直接操作,按照我的理解通过映射摆脱偶合就像通过一书结婚证书证明我们结婚以后都不用怕警察来茶房。。哈哈。

NHibernate是个非常强大的工具,懒人喜欢的,它可以通过自动生成表和持久层映射文件或者通过codesmith来动态生成持久化操作类和持久层映射文件,不过要自己先建立数据库,codesmith生成的代码太多了,自己要做删除,在有一对多,多对一等复杂关系时要注意自己数据库表的建立,另外不知道能不能生成继承关系等,没时间搞那个。

2. 利用NHibernate动态生成数据库表

引用库NHibernate.Tool.hbm2ddl,new SchemaExport(cfg).Create(true, true);第2个参数得为true。利用持久层映射文件反射获得创建表的信息,然后用SQL脚本实现,如果原来该表存在,则删除该表中数据和表并重新生成该表。

3. 利用NHibernate动态生成持久层映射文件

引用库NHibernate.Mapping.Attributes; 利用反射获得相应对象上的标签,然后通过标签序列化相应的映射文件,其中通过标签可设置数据库表的关系,得到这个映射文件也是能动态生成数据库表的前提。

4. 利用codesmith生成持久化操作类和持久层映射文件

选择codesmith explore->c#->NHibernate.cst,输入连接字,选择数据库即可输出。缺点前面以说。Codesmith也是功能强大,可惜没时间看。

HQL:面向对象查询语言。

5. NHibernate缺点

多表查询,复杂逻辑还是得用SQL,我没找到好办法。。。优点 上很多,也没其他体会,不说了。

6.NHibernate与Ibatisnet比较

都是从java移植过来的,Ibatis.net是轻量级的,NHibernate当然是重量级,哈哈。Ibatisnet半自动产品,貌似功能还有缺陷,不过它封装了数据访问层(事务,缓存,异常,日志),做了部分的对象关系映射,也就是我们要自己写SQL语句。不过在数据库设计不怎么好或者业务逻辑复杂的时候自己写比自动生成效率要高,毕竟还没那么自动化。同时因为它的小巧半自动也为在开发过程中或者在已有产品的改造中更容易被接受。另外NHibernate自动生成的SQL语句可能会有多余比之自己写查询语句。

7. 其他的几个框架

IOC容器:Castlesping.net

Castle.net自己发展来的,sping.net也是从java移植过来的。Castle针对性更强,

框架之间也是相互吸收好的地方,不断改善的。某些大软件公司也是一样,无可厚非,呵呵。

8 架构选择

NHibernate的核心库NHibernate中的ISession缓存数据库对象,加快了查询速度。IbatisNet CastleCastle.DynamicProxy也是NHibernate用到的库,用来反转控制,就是在某个对象某个事件发生的时候就在那一刹那前后我插入其他活,有点像钩子,不知道理解对不对,呵呵。

9.测试工具

VS2005自带的单元测试工具需要安装Team Edition for Testers,功能强大,除了单元测试还有其他测试功能,而且还会生成测试 告。只要把鼠标移到要进行测试的类的函数上点右键选择进行测试即可。Nunit是单元测试工具,引用库NUnit.Framework。进行测试的程序为类库,进行测试的类必须申明为Public,且加标签[TestFixture],进行测试的函数也必须加Public,切加标签[Test],并在外部启动程序中加入nunit.exe的安装后的绝对路径。然后启动,将类库程序dll加入nunit程序中点运行即可,两个测试工具都可加断点调试。

没用过JAVA的人的理解,原来JAVA还是蛮好的,哈哈。

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成32038 人正在系统学习中 相关资源:maestro:面向惰软件开发人员的智能部署系统-其它代码类资源…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2009年7月22日
下一篇 2009年7月22日

相关推荐