博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC Spring.NET NHibernate 整合
阅读量:6802 次
发布时间:2019-06-26

本文共 5712 字,大约阅读时间需要 19 分钟。

请注明转载地址:http://www.cnblogs.com/arhat

在整合这三个技术之前,首先得说明一下整合的步骤,俗话说汗要一口一口吃,事要一件一件做。同理这个三个技术也是。那么在整合之前,需要对

ASP.NET,Spring.NET,NHibernate有所了解,最好是有一些经验,因为平白无故的就把3个技术融合到一起,会闹些小别扭,其实就像配置化学药品一样,如果3中原料有一点出路,那么整个实验也就失败了。

在网上有很多高人都写过类似的文章,可能是鄙人不才,看了很多文章都没有把我的问题解决了,同时我在整合的过程中走了不少的弯路。今天做一下记录,防止自己忘掉。好了,言归正传。

整合原理:

我们在初中,高中都学过化学,知道有些物质是不能很好的反应,需要通过催化剂来促使两者之间更改好的反应。那么我们就把ASP.NET MVC看成是物质A,NHibernate看成是物质C。本身A+C=应用。但是由于A和C之间结合会带来开发上的一些难题(比如事务的控制),那么怎么办呢,我们可以加入催化剂Spring.NET(物质B)。这样通过B这个催化剂很好的解决了A+C之间的问题。于是公式就出来了A+B+C=应用。

当然,我们这里是程序设计而不是化学反应,所以在结合的过程中我们遵循下面的步骤。

1. ASP.NET MVC + Spring.NET

2. ASP.NET MVC + NHibernate

3. ASP.NET MVC + Spring.NET +NHibernate

本章是ASP.NET,Spring.NET,NHibernate相结合的综合篇章,看过前两篇的朋友知道,前两篇文章只是ASP.NET MVC 和 Spring.NET,ASP.NET MVC 和 NHibernate的单独结合。本章是三者结合的最后一篇《 ASP.NET MVC + Spring.NET +NHibernate》。好了,开始本章的内容。
本次使用的是Spring.NET 1.3.2,NHibernate3.2.0,ASP.NET MVC3。开发环境是VS2012

一、创建一个解决方案“ASH”

在解决方案中创建4个项目:
”Com.Symjie.Web”
”Com.Symjie.Model”
”Com.symjie.BLL”
”Com.Symjie.DAL”
并添加他们之间的相互引用(三层知识,这里不再介绍)。如图:
并在每个项目中都添加一个“Config”文件夹,这个文件夹用来存放Spring.NET和NHibernate的配置文件。

二、从Model入手,配置NHibernate的映射文件

这里我们使用“Entity Developer”这个软件来生成NHibernate的映射文件,当然手动写也可以。把生成的文件加入到Model项目中。如图:

然后把User.hbm.xml文件的属性更改为“嵌入的资源”。如图:

User.cs代码:

using System;using System.Collections;using System.ComponentModel;using System.Linq;using System.Text;using System.Collections.Generic;namespace Com.Symjie.Model{    public partial class User {            partial void OnCreated();                public User()        {            OnCreated();        }        public virtual int Uid        {            get;            set;        }        public virtual string Uname        {            get;            set;        }    }}

User.hbm.xml文件内容:

三、从DAL入手,先让Spring.NET 和 NHibernate相结合
之所以从DAL入手,是因为Spring.NET 和 NHibernate结合比较复杂(对于刚接触的朋友)。由于DAL是和数据库打交道的,所以在DAL项目中,我们要引入以下的几个DLL文件。
NHibernate:
NHibernnate.dll
Iesi.Collections.dll

Spring.NET
暂时不引入,当然引入核心的dll文件也可以。如果后续课程用到,我们在加上去。

创建三个文件分别为:

INHibernateSessionFactory.cs提供对ISession的管理:

public interface INHibernateSessionFactory{NHibernate.ISessionFactory SessionFactory { set; get; }}

ID_User.cs 是一个对D_User的抽象接口,定义实现的方法

public interface ID_User{IList
GetAllUsers(); }

D_User.cs 是具体的实现,要实现接口上面的两个接口,充分体现Spring.NET的Ioc。

public class D_User:ID_User,INHibernateSessionFactory{public NHibernate.ISessionFactory SessionFactory{get;set;}public IList
GetAllUsers(){NHibernate.ISession session = this.SessionFactory.GetCurrentSession(); NHibernate.IQuery query = session.CreateQuery("from User");return query.List
();} }

然后才是最难的一部分,就是要写Spring.NET的配置文件,让Spring.NET来管理NHibernate。

首先在Config中创建一个SpringNHibernate.xml文件。这个文件时就是用来配置管理NHibernate的。同时设置为“嵌入的资源”。内容如下:

使用Spring.NET管理NHibernate
Com.Symjie.Model

然后在Config中在创建一个”Objects.xml”,这个文件就是Spring.NET的对象文件,用来实现IoC的。在D_User中有一个属性SessionFactory。这个属性和“MyNHibernateSessionFactory”要进行关联,换句话说在SpringNHibernate中定义的MyNHibernateSessionFactory对象就是SessionFactory的实例。那么就需要把这个对象注入到D_User的SessionFactory属性中。同时这是Objects.xml设置为“嵌入的资源”。

Objects.xml内容如下:

这就完成了Spring.NET 和 NHibernate的结合,下面就可以使用了。

四、完成BLL层的Spring管理

在使用之前,我们先完成BLL层的Spring管理。在BLL中创建两个文件:
IB_User.cs定义B_User的相关属性和方法

public interface IB_User{DAL.ID_User D_User { set; get; }IList
GetAllUsers();}

B_User.cs实现了IB_User的方法和属性

public class B_User:IB_User{public DAL.ID_User D_User{get;set;}public IList
GetAllUsers(){return this.D_User.GetAllUsers();}}

然后在Config中创建BLL.xml文件。这个文件就是Spring.NET的对象文件,用来实现IoC的。

同时要设置BLL.xml为”嵌入的资源“。好了,到此BLL和DAL都已完成了配置,那么下面就是如何使用了。

配置Web项目和Spring.NET,NHibernate

首先,在Web项目中我们加入Spring.NET的先关dll文件。
Spring.Core,Spring.Data.Spring.AOP,Spring.Data.NHibernate32
然后再Config文件夹中创建”Controllers.xml”文件,让MVC的Controller通过Spring.NET来管理,同时实现Ioc。
创建一个HomeController和对应的视图文件。内容如下:
HomeController.cs

public class HomeController : Controller{private BLL.IB_User B_User { get; set; }public ActionResult Index(){ViewBag.Data = B_User.GetAllUsers();return View();}}

Index.cshtml

@using Com.Symjie.Model;@{    Layout = null;}Index
@foreach (User user in ViewBag.Data) {@:姓名:@user.Uname
}

这一部分,主要是对Web.config的配置,其中有些地方非常重要。先看看如何配置Web.config文件。

打开Web.config文件,开始配置Spring。

最后不要忘了让Global.asax继承Spring.Web.Mvc.SpringMvcApplication

好了,到此,我们就完成了三者的结合,F5预览一下吧。

这个只是个见得结合例子,希望能够对各位朋友有一个抛砖引玉的作用。真累啊,写篇文章真是不容易啊。

转载于:https://www.cnblogs.com/arhat/p/3541046.html

你可能感兴趣的文章
《第一行代码》1day~了解全貌
查看>>
复习javaIO 之File类
查看>>
【规划】近期的规划
查看>>
How to install snmpwalk snmpget on CentOS 6.4 6.3 5.9 Redhat RHEL Fedora
查看>>
最小生成树
查看>>
Mybatis中配置Mapper的方法
查看>>
Java基础学习总结(19)——Java环境变量配置
查看>>
Mvc5+Entity Framework6 之二----在MVC中用Entity Framework实现基本的CRUD
查看>>
我的友情链接
查看>>
大型网站技术架构(四)网站的高性能架构
查看>>
linux系统修改SSH最大连接数,修改nofile,nproc参数方法
查看>>
Hadoop-2.5.2集群安装配置详解
查看>>
解决报表网页版转成excel时,首位0被清除的问题
查看>>
Mysql学习总结(3)——MySql语句大全:创建、授权、查询、修改等
查看>>
MyBatis学习总结(8)——Mybatis3.x与Spring4.x整合
查看>>
Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解...
查看>>
IIS 7.0 和 IIS 7.5 中的 HTTP 状态代码
查看>>
Dubbo学习总结(1)——Dubbo入门基础与实例讲解
查看>>
rsync搭建及管理
查看>>
JAVA垃圾回收机制
查看>>