一次多层架构实战后记--资料工具参考

  前段时间得到一个项目实战的机会,虽然做的东西说白了还是多层架构那回事,但是个人感觉还是有很多收获的,所以这里通过Blog整理一下。

 

  有很多收获的一个重要原因就是因为项目的规模和自己以前做的相比大了许多,项目的规模大了,随之而来的就是代码量的增多,各层之间的逻辑关系也会变得复杂,而且对于自己不了解的技术和没有使用过的工具,又不可避免的要自学,通过一段时间的“现炒现卖”,无形中自己感觉也提高了不少阅读文档资料的能力。

 

  先说一下项目的概况吧,名字就不随便说了,主要是项目的总体规模,总共包括80+多张表,50+个类库项目,还有几十个视图和存储过程等,我知道和很多园子里的大牛比,这样的东西实在不算一提,但对俺已经足够折腾的了。

 

  项目中主要的技术有C#、Nhibernate、Spring.NET,开发平台VS2008+SQLServre2005,开发设计主要是多层架构的思想,使用到的其他工具包括Visual SourceSafe、Sandcastle、Sandcastle Builder、CodeSmith、FastReport,还有自己无意中发现的GhostDoc,都非常不错,可以提高在大型项目开发中的效率。

 

  写了一些做为分享:

 

  Visual SourceSafe的使用

  GhostDoc的使用

  Sandcastle的使用

  FastReport报表控件的使用  

 

  都是些简单实用的东西,希望大家能受用。

     

  项目中数据库操作层主要使用了Spring.NET框架,Nhibrenate框架用于数据持久化,而DBHelp是自己编写的相关数据操作类。说实话NHibernate和Spring.NET虽然以前听说过,但一直没有实际用过,都说人是被逼出来的,一点都不假,这不就被逼着了解了。

 

      摘一些放着,作个参考好了。

 

  NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库,来源于Java中的Hibernate非常优秀的ORM框架,ORM是对象关系映射(Object Relational Mapping)的简称,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术 通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中,从而达到简化数据处理,提高数据操作效率的目的。

 

  NHibernate中主要有四个接口:

  ISession

    ISession是面向用户的主要接口,主要用于对象持久化,数据加载等操作,支持数据库事务,它隐藏了NHB内部复杂的实现细节,

  ISessionFactory

    ISessionFactory是NHB内部的核心类,它维护到持久机制(数据库)的连接并对它们进行管理,同时还会保存所有持久对象的映射信息。

  ITransaction

    ITransaction是NHB的事务处理接口,它只是简单的封装了底层的数据库事务

  IQuery

    IQuery是HQL数据加载接口,HQL(Hibernate Query Language)是NHB专用的面向对象的数据查询语言,它与LINQ有些许类似的地方

 

  这次项目里使用NHibernate操作数据大致经过了以下几步:

      1、建表(貌似是废话)

  2、使用CodeSmith生成模板,即创建对应表的在.Net类持久化类,注意要将生成的*.hbm.xml映射文件的生成属性改为嵌入的资源(Embedded Resource)

  3、进入https://www.hibernate.org 下载Nhibernate包,在需要使用的项目中引入NHibernate的相关DLL

  4、配置映射文件,主要配置的内容包括数据库类型、版本及连接字段等。

  5、使用NHibernate中的接口方法进行数据对相关操作。

 

  Spring提供了依赖注入、面向方面编程(AOP)、数据访问抽象, 以及ASP.NET集成。

  Spring.Core 库是框架的基础, 提供依赖注入功能。Spring.NET中大多数类库依赖或扩展了Spring.Core的功能。

IObjectFactory接口提供了一个简单而优雅的工厂模式,移除了对单例和一些服务定位stub写程序的必要。允许你将真正的程序逻辑的配置和依赖的详细情况解耦。作为对IObjectFactory的扩展

    IApplicationContext接口也在Spring.Core库中,并且添加了许多企业应用为中心的功能,例如利用资源文件进行文本本地化、事件传播、资源加载等等。

  Spring.Aop 库提供对业务对象的面向方面编程(AOP) 的支持,可为声明性地建立企业应用和为业务对象提供服务奠定坚实的基础。

  Spring.Web 库扩展了ASP.NET,添加了一些功能,如对ASP.NET页面的依赖注入,双向数据绑定,针对 ASP.NET 1.1的Master pages以及改进的本地化支持。

  Spring.Services库可让你将任何“一般”对象(即没有从其他特殊的服务基类继承的对象)暴露为企业服务或远程对象,使得.NET Web services 获得依赖注入的支持,并覆盖属性元数据。此外还提供了对Windows Service的集成。

  Spring.Data 库提供了数据访问层的抽象,可以被多个数据访问提供者(从ADO.NET 到多个ORM 提供者)应用。它还包含一个对ADO.NET的抽象层,移除了为ADO.NET编写可怕的编码和声明性的事务管理的必要。

  Spring.ORM库提供了对常见对象关系映射库的的集成,提供了一些功能,比如对声明性事务管理的支持。

 

  

posted @ 2010-05-21 15:24  RockyXiang  阅读(340)  评论(0编辑  收藏  举报