好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Spring.NET 1.3.2 集成 NHibernate 3.2 1 下载软件

Spring.NET 1.3.2 集成 NHibernate 3.2 1 下载软件

Spring.NET 是一个非常优秀的框架,对 DI 和 AOP 提供了强大而又方便的支持。NHibernate 是优秀的 ORM 框架,在开发中,我们希望能够集成使用这两个框架,在 Spring.NET 1.3.2 中对于当前的 NHibernate 3.2 提供了直接的支持。目前 NHibernate 已经发布了 3.3.1 ,但是在 Spring.NET 1.3.2 中没有直接的支持,所以这里还是使用 NHibernate 3.2。如果希望使用最新的 3.3.1,就需要你自己动手了。

由于 Spring.NET 和 NHibernate 都大量依赖配置文件进行管理,使得在配置过程中的各种问题影响了使用,下面我们将逐步介绍配置文件涉及的各个部分,直至完成系统的整个框架。

下载

1. Spring.NET

Sprring.NET 1.3.2的下载地址: http://www.springframework.net/download.html 

点击 here 地方进行下载,然后,你会看到一个表单需要填写,不过你可以跳过这一步,点击 take me to download page 就可以了。

然后,你就到了下载页面,注意:需要下载的是 1.3.2 的发布版,不是当前的 2.0。

点击之后,页面成为下面的样子。

Spring.NET-1.3.2-API.chm 是说明文档

Spring.NET-1.3.2.zip 是包含源文件的压缩文档,展开之后就会得到你所需要的一切。

Spring.NET-1.3.2.exe 是一个可执行的安装程序。通过安装程序来自动解压。

执行它的话,会首先看到这样一个画面。

确定后,需要指定保存的位置。

然后开始。

完成后,你会看到这样一个画面。

2. NHibernate

NHibernate 3.2 的下载地址: http://sourceforge.net/projects/nhibernate/files/NHibernate/3.2.0GA/

这里有编译完成的程序集,也有代码的源文件。

如果只是使用的话,直接下载 NHibernate-3.2.0.GA-bin.zip 就可以了。

二. 获取文件

1. Spring.NET

在 Spring.NET 文件夹中,会看到一个复杂的文件系统。

上面的 release 文件夹中是我们需要使用的程序集。

schema 中是 Xml 的架构文件,很多同学在编写 Xml 文件的时候,很头痛写错的问题,由于没有编译器的支持,写错了不会有提示。使用架构文件就可以解决这个问题。

将 schema 中的 .xsd 复制到 Visual Studio 的安装目录下的 Xml\Schemas 文件夹中,就可以有提示了。

lib 文件夹中有常用的程序集,其实,其中已经包含了 NHibernate 3.2 的程序集,不过,我们还是自己下载一个完全版的。

2. NHibernate

展开后,得到如下的文件夹。

在 Required_Bins 中是开发需要使用的程序集,主要是两个程序集:

Iesi.Collections.dll 和 NHibernate.dll

Iesi.Collections 中定义了特殊的集合,专门用于 NHibernate。

文件夹中还包含了两个 xsd 文件,这种文件是 XML 中的架构文件,放在这里是用来在编写 NHibernate 的配置文件时,可以在 VS 中提示的。

这两个文件应该保存到你的 VS 程序文件夹中的 Xml\Schemas 中,这样,以后在编写 NHibernate 的配置文件时,就可以直接提示了。

例如:Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas  

分类:  Spring.NET

我们现在 Visual Studio 中创建一个网站应用程序,为了方便检查,在网站中增加一个名为 index.aspx 的页面,并设为起始页。

首先解决 Sping.NET 在网站中的配置问题。

Spring.NET 大量使用配置文件,如果你愿意的话,也可以使用代码进行配置,不过,我们还是使用传统的配置文件方式。

一. 添加程序集引用

首先,我们需要在网站中添加对于 Spring.NET 程序集的引用,最基本的是两个程序集 Spring.Core.dll 和 Spring.Web.dll。

Spring.Core.dll 是整个 Spring.NET 的核心程序集,而 Spring.Web.dll 则对于网站开发提供支持。

二. 配置 Spring.NET

为了在启动网站的时候,能够自动创建 Spring.NET 的应用程序环境,需要在网站的配置文件 web.config 中进行设置。

1. 配置 Spring.NET 的 WebSupportModule,这个 Module 可以重建 Spring.NET 的应用程序环境,配置方式与普通的 Module 相同。

在网站的 web.config 配置文件中,增加 <httpModules> 配置节。

   <  system.web  > 
     <  compilation   debug  ="true"   targetFramework  ="4.0"   /> 
     <  httpModules  > 
       <!--   Spring 提供的 Module    --> 
       <  add   name  ="Spring"   type  ="Spring.Context.Support.WebSupportModule, Spring.Web"  /> 
     </  httpModules  > 
   </  system.web  > 

如果这个时候,运行网站,应该会看到如下的页面。

再刷新一下,又成为下面的样子。

错误的原因是没有在 web.config 中找到需要的 Spring.NET 配置信息。

解决这个问题,需要在 web.config 增加一个新的配置节,这个配置节由 Spring.NET 定义,需要添加在 web.config 的 configuration 的头部。

 <  configuration  > 
  
   <  configSections  > 
     <!--   Spring 的配置   --> 
     <  sectionGroup   name  ="spring"  > 
       <  section   name  ="context"   type  ="Spring.Context.Support.WebContextHandler, Spring.Web"  /> 
     </  sectionGroup  > 
   </  configSections  > 
   <  spring  > 
     <  context  > 
     </  context  > 
   </  spring  > 

现在运行程序,应该可以正常看到页面内容了。

为了能够为页面对象进行注入,需要将创建页面对象的工作从默认的 ASP.NET 网站中替换到 Spring.NET 中,这需要配置一系列处理程序。

     <  httpHandlers  > 
       <!--   Spring 提供的处理程序   --> 
       <  add   verb  ="*"   path  ="*.aspx"   type  ="Spring.Web.Support.PageHandlerFactory, Spring.Web"  /> 
       <!--   取消 Spring.NET 对于 Web 服务的处理   --> 
       <!--  <add verb="*" path="*.asmx" type="Spring.Web.Services.WebServiceHandlerFactory, Spring.Web"/>  --> 
       <  add   verb  ="*"   path  ="ContextMonitor.ashx"   type  ="Spring.Web.Support.ContextMonitor, Spring.Web"  /> 
       <  add   verb  ="*"   path  ="*.ashx"   type  ="Spring.Web.Support.DefaultHandlerFactory, Spring.Web"  /> 
     </  httpHandlers  > 

现在,页面应该可以正常浏览了。从此以后的页面将通过 Spring.NET 创建与管理。

三. 定义对象

首先,我们定义一个类,表示框架的信息。

     public   class   Framework
    {
          public   string  Name {  set ;  get  ; }
    } 

在页面上定义一个 Label ,显示框架的名称。

     <  div  > 
         <  h1  ><  asp:Label   runat  ="server"   ID  ="lblFramework"  ></  asp:Label  ></  h1  > 
     </  div  > 

然后,在 index.aspx 中定义一个注入点,准备使用这个对象。

     public   partial   class   index : System.Web.UI.Page
    {
          //   定义一个注入点 
         public  Framework Framework {  set ;  get  ; }

          protected   void  Page_Load( object   sender, EventArgs e)
        {
              this .lblFramework.Text =  this  .Framework.Name;
        }
    } 

下面在 Spring.NET 的配置使用。

定义对象主要有两种方式,直接定义在 web.config 中,或者定义在外部的配置文件中。

1. 直接定义在 web.config 中,使用 Spring.Context.Support.DefaultSectionHandler。这样可以在配置文件中直接定义。

 <  configSections  > 
     <!--   Spring 的配置   --> 
     <  sectionGroup   name  ="spring"  > 
       <  section   name  ="context"   type  ="Spring.Context.Support.WebContextHandler, Spring.Web"  /> 
       <!--   支持在 web.config 中定义对象   --> 
       <  section   name  ="objects"   type  ="Spring.Context.Support.DefaultSectionHandler, Spring.Core"   /> 
     </  sectionGroup  > 
   </  configSections  > 
   <  spring  > 
     <  context  > 
       <  resource   uri  ="config://spring/objects"  /> 
     </  context  > 
     <!--   直接定义在 web.config 中的对象   --> 
     <  objects  > 
       <  object   id  ="framework"   type  ="Spring_Web_1.Framework"  > 
         <  property   name  ="Name"   value  ="Spring.NET"  /> 
       </  object  > 
      
       <!--   页面对象   --> 
       <  object   type  ="~/index.aspx"  > 
         <!--   ref 表示引用的对象   --> 
         <  property   name  ="Framework"   ref  ="framework"  /> 
       </  object  > 
     </  objects  > 
   </  spring  > 

注意上面的 resource 配置元素,说明 Spring.NET 的应用程序上下文中需要使用定义在配置文件的 spring 配置节中的 objects 配置元素来定义对象。

在 objects 配置节中,我们定义了两个对象 corporation 和 一个页面。

对于 corporation 我们对 Name 属性直接使用值进行注入,使用的属性为 value 方式。

而对于页面,我们使用引用方式,使用的配置属性为 ref,值设置为另一个对象的 id。

现在,运行程序,我们应该可以看到这样的页面。

2. 在单独的配置文件中配置对象。

在网站中创建一个名为 Config 的文件夹,以保存独立的配置文件。

在 Config 文件夹中,创建一个名为 objects.xml 的 Xml 配置文件。添加名为 objects 的根元素,添加默认命名空间  xmlns ="http://www.springframework.net" ,还记得在上一篇文件中,将架构文件添加到 Visual Studio 中吗?现在有用了。

 <?  xml version="1.0" encoding="utf-8"   ?> 
 <  objects   xmlns  ="http://www.springframework.net"  > 
  
 </  objects  > 

添加原来对象定义到这里。

 <?  xml version="1.0" encoding="utf-8"   ?> 
 <  objects   xmlns  ="http://www.springframework.net"  > 
  
   <  object   id  ="framework"   type  ="Spring_Web_1.Framework"  > 
     <  property   name  ="Name"   value  ="Spring.NET"  /> 
   </  object  > 

   <!--   页面对象   --> 
   <  object   type  ="~/index.aspx"  > 
     <!--   ref 表示引用的对象   --> 
     <  property   name  ="Framework"   ref  ="framework"  /> 
   </  object  > 

 </  objects  > 

将原来在 Web.config 中配置的 objects 配置节删除,将原来 context 配置节中的配置替换为如下的内容。

     <  context  > 
       <  resource   uri  ="~/Config/objects.xml"  /> 
       <!--  <resource uri="config://spring/objects"/>  --> 
     </  context  > 

现在的 uri 中是外部配置文件的路径了。

重新运行网站,你会看到网站依然在正常运行了。

四. 完整的配置文件

web.config 文件内容

 <?  xml version="1.0" encoding="utf-8"  ?> 

 <!--  
  有关如何配置 ASP.NET 应用程序的详细消息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
    --> 

 <  configuration  > 
  
   <  configSections  > 
     <!--   Spring 的配置   --> 
     <  sectionGroup   name  ="spring"  > 
       <  section   name  ="context"   type  ="Spring.Context.Support.WebContextHandler, Spring.Web"  /> 
       <!--   支持在 web.config 中定义对象   --> 
       <  section   name  ="objects"   type  ="Spring.Context.Support.DefaultSectionHandler, Spring.Core"   /> 
     </  sectionGroup  > 
   </  configSections  > 
   <  spring  > 
     <  context  > 
       <  resource   uri  ="~/Config/objects.xml"  /> 
       <!--  <resource uri="config://spring/objects"/>  --> 
     </  context  > 
     <!--   直接定义在 web.config 中的对象   --> 
     <!--  <objects>
      <object id="framework" type="Spring_Web_1.Framework">
        <property name="Name" value="Spring.NET"/>
      </object>
      
        --><!--   页面对象   --><!--  
      <object type="~/index.aspx">
          --><!--   ref 表示引用的对象   --><!--  
        <property name="Framework" ref="framework"/>
      </object>
    </objects>  --> 
   </  spring  > 

  
   <  system.web  > 
     <  compilation   debug  ="true"   targetFramework  ="4.0"   /> 
     <  httpModules  > 
       <!--   Spring 提供的 Module    --> 
       <  add   name  ="Spring"   type  ="Spring.Context.Support.WebSupportModule, Spring.Web"  /> 
     </  httpModules  > 
     <  httpHandlers  > 
       <!--   Spring 提供的处理程序   --> 
       <  add   verb  ="*"   path  ="*.aspx"   type  ="Spring.Web.Support.PageHandlerFactory, Spring.Web"  /> 
       <!--   取消 Spring.NET 对于 Web 服务的处理   --> 
       <!--  <add verb="*" path="*.asmx" type="Spring.Web.Services.WebServiceHandlerFactory, Spring.Web"/>  --> 
       <  add   verb  ="*"   path  ="ContextMonitor.ashx"   type  ="Spring.Web.Support.ContextMonitor, Spring.Web"  /> 
       <  add   verb  ="*"   path  ="*.ashx"   type  ="Spring.Web.Support.DefaultHandlerFactory, Spring.Web"  /> 
     </  httpHandlers  > 
   </  system.web  > 

 </  configuration  > 

objects.xml 文件的内容

 <?  xml version="1.0" encoding="utf-8"   ?> 
 <  objects   xmlns  ="http://www.springframework.net"  > 
  
   <  object   id  ="framework"   type  ="Spring_Web_1.Framework"  > 
     <  property   name  ="Name"   value  ="Spring.NET"  /> 
   </  object  > 

   <!--   页面对象   --> 
   <  object   type  ="~/index.aspx"  > 
     <!--   ref 表示引用的对象   --> 
     <  property   name  ="Framework"   ref  ="framework"  /> 
   </  object  > 

 </  objects  > 

五. 整个项目的下载

狠狠地点击这里下载 。

分类:  Spring.NET

标签:  spring.net nhibernate

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Spring.NET 1.3.2 集成 NHibernate 3.2 1 下载软件的详细内容...

  阅读:42次