本篇主要介绍一下asp.net项目开发的基础知识。要想独立开发一款基于NHibernate的项目,你需要掌握以下知识:C#语言及其编写、搭建项目架构、引用Spring和NHibernate文件、掌握NHibernate的三种数据库语句编写、配置NHibernate和Spring文件,以及Html、Css和Script( 可掌握easyUI、JQuery、angularJS和bootStrap )语言。
1、项目架构
项目一般包含以下部分:
Views:存放用于页面展示的文件,例如.aspx、.cshtml等为后缀的文件。
Configs:存放NHibernate的配置文件。
Controls:存放控制器。
IBLL:业务逻辑层接口。
BLL:业务逻辑层,处理业务上的逻辑判断等。
IDAO:数据访问层接口。
DAO:数据访问层,与数据库直接打交道。
Model:存放数据结构模型和模型映射文件。
Content:存放一些CSS文件和图片。
Scripts:存放JS脚本文件。
当然,根据需求不同,项目的架构也会随之改变。
2、配置文件
NHibernate的配置文件一般存放于Configs项目下。配置文件包括以下
Controls.xml:存放控制层的配置的文件。
Business.xml:存放BLL层的配置的文件。
DAO.xml:存放DAO层的配置的文件。
CommonDAO.xml。
实例:
Controls.xml:配置控制器层
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
<object id="HomeController" type="Web.Controllers.HomeController,Web">
<property name="UserBLL" ref="UserBLL" />
</object>
</objects>
Business.xml:配置BLL层
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
<object id="UserBLL" type="BLL.UserBLL,BLL">
<property name="UserDAO" ref="UserDAO" />
</object>
</objects>
DAO.xml:配置DAO层
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
<object id="UserDAO" type="DAO.UserDAO,DAO">
<property name="SessionFactory" ref="SessionFactory" />
</object>
</objects>
CommonDAO.xml
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database">
<description>
Definitions for the NHibernate Objects.
</description>
<!-- 数据访问对象替换位置 -->
<object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
<property name="ConfigSections" value="databaseSettings"/>
</object>
<!-- Database and NHibernate Configuration 配置使用Nhibernate -->
<db:provider id="DbProvider"
provider="${db.provider}"
connectionString="${db.connectionString}"/>
<!--provider="SqlServer-2.0" connectionString="database=BookDB;uid=sa;pwd=123456;server=.;"-->
<object id="SessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate32">
<property name="DbProvider" ref="DbProvider" />
<property name="MappingAssemblies">
<list>
<!--这是配置嵌入资源 对应的xx.hbm.xml文件所在的项目名称-->
<value>${nhibernate.domain}</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<entry key="hibernate.current_session_context_class"
value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate32"/>
<!-- session管道 -->
<entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<!--数据库方言-->
<entry key="dialect" value="${nhibernate.dialect}"/>
<!--数据库驱动-->
<entry key="connection.driver_class" value="${nhibernate.driverclass}"/>
<!-- 外连接 -->
<entry key="use_outer_join" value="true"/>
<!-- 是否显示SQL语句 -->
<entry key="show_sql" value="${nhibernate.show_sql}"/>
</dictionary>
</property>
</object>
<object id="HibernateTransactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate32">
<property name="DbProvider" ref="DbProvider" />
<property name="sessionFactory" ref="SessionFactory" />
</object>
<object id="TransactionInterceptor" type="Spring.Transaction.Interceptor.TransactionInterceptor, Spring.Data">
<property name="TransactionManager" ref="HibernateTransactionManager" />
<property name="TransactionAttributeSource">
<object type="Spring.Transaction.Interceptor.AttributesTransactionAttributeSource, Spring.Data" />
</property>
</object>
</objects>
最后,别忘了给xml文件的属性设置为“嵌入的资源”。
控制器里要写上用到的IBLL层对象的申请。
BLL层要写上用到的IDAO层对象的申请。
3、Spring和NHibernate引用文件(版本必须要对应,否则会报错,以下是其中一种)
文件名 版本
Common.Logging 2.0.0.0
Common.Logging.Log4Net 2.0.0.0
Iesi.Collections 1.0.1.0(DAO)
log4net 1.2.10.0
NHibernate 3.2.0.4000(DAO)
Spring.Aop 1.3.2.40943(DAO)
Spring.Core 1.3.2.40943(DAO)
Spring.Data 1.3.2.40943(DAO)
Spring.Data.NHibernate32 1.3.2.40943(DAO)
Spring.Web.Mvc 1.3.2.40943
Spring.Web 1.3.2.40943
DotNetOpenAuth版本都要4.0.0.0
最后,你需要熟悉框架的流程以及数据传送( 如json等 )。
当用户浏览一个页面时,页面会将请求发送给控制层,然后通过业务逻辑层和数据访问层将相应的数据取出,通过Model回传给控制层,再由控制层决定该用哪个View来显示页面呈现给用户。