在ASP.NET中使用Spring.Net等开源框架笔记
来源:互联网 发布:剑灵捏脸数据百度云 编辑:程序博客网 时间:2024/05/17 08:59
最近终于有时间研究在.NET中通过框架来实现IOC,AOP,整合ORM,MVC等技术,JavaEE的框架用久了,再回来写.NET还真是不适应,老是写工厂也不是回事。
暂时也没有时间和机会在实践中运用,先记录一些入门级使用的笔记和遇到的问题,诸如NHibernate,Castle等等会逐渐更新,不过还是希望以后有机会在实战中运用,再专门写一些专题的博客。其实这些框架的使用大同小异,熟悉JavaEE之后仅作为了解参考即可。
Spring.Net
1、这个是对Spring.Net概念性的一个基本介绍,如果没有接触过spring可以先了解一下:http://www.cnblogs.com/beniao/archive/2008/04/22/Springnet.html
2、Spring.Net的基本使用:http://www.cnblogs.com/han1982/p/4177850.html
3、这个是大牛关于Spring.NET以及结合MVC,以及很多结合实战的使用:http://www.cnblogs.com/GoodHelper/tag/Spring.NET/default.html?page=1
4、与JavaEE的Spring类似,IApplicationContext是IObjectFactory的子级接口,我们一般使用的是IApplicationContext,还有其他的xml配置,装载,构造方法的注入,属性注入等等都是大同小异。
5、亲自写了个Spring.Net的小Demo,可能对于Common.Logging.dll, Spring.Core.dll这2个核心的程序集,网上的版本太杂,会有点问题,可以打开VS的NuGet程序包管理器,直接搜索Spring.Core安装即可。
6、另外对于上文中提到<objects>节点的属性xmlns="http://www.springframework.net"是必须的,删去此属性也可以成功注入,我估计可能是由于历史版本的原因,望大家不吝赐教。
7、多说一点,现在.NET MVC已经开始全面支持IOC,用自带的配置简单,也很方便,参考:http://www.cnblogs.com/TomXu/p/4496440.html
NHibernate
关于NHibernate的学习和实战使用还是参考这个系列:http://www.cnblogs.com/GoodHelper/category/214139.html
还是写了写简单的Demo,下面是遇到的几点问题
1)首先在添加程序集时,如果是3.2以上的版本,我们只需要Iesi.Collections.dll,NHibernate.dll2个程序集,NHibernate.ByteCode.Castle.dll,NHibernate.ByteCode.LinFu.dll, NHibernate.ByteCode.Spring.dll 这3个程序集不再需要,但是注意proxyfactory.factory_class属性需要把原来的
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
改为
<property name="proxyfactory.factory_class">NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate</property>
2)如果出现 NHibernate.MappingException: No persister for....异常,考虑如下解决方法
a、配置文件后缀名写错 mapping file 必须是.hbm.xml结尾
b、Web.config配置中
<mapping assembly="程序集名"/>
c、hibernate 的mapping 配置文件是xml,属性必须设置成“嵌入的资源”,因为NH搜索配置文件不是在项目目录中寻找,而是在第2点中配置的程序集中查找,所以必须生成于程序集。
d、尝试在代码中手动载入程序集var cfg = new NHibernate.Cfg.Configuration().AddAssembly("NHibernateDemo");
3)NHibernate与EF的使用非常相似,说的简单点,ISession对象对应于EF上下文对象,NH事务的提交就对应于EF的SaveChanges方法,他们管理对象的方式,对象寄存的方式也几乎是一样,具体参考上面给的链接,系列文章的题为 " NHibernate从入门到精通系列(4)——持久对象的生命周期 " 的2篇文章,不过在第一篇文章中有一处错误:
session.Save(product);
product.SellPrice = 12M;
tran.Commit();
同EF一样,对象被ISession对象所管理时,对对象所做的更改也仅仅作用于容器中的对象,当执行tran.Commit();过后数据才提交到数据库中。
而不是作者所说被ISession对象管理的实体一旦更改,就会同步到数据库。
4)其实hibernate要学的东西还很多,仅查询方式就支持hql,criteria,类似EF的Linq+扩展方法+lambda,不过具体的详细使用还是去拜读前辈们的文章吧
Hibernate的各种查询方式:http://www.cnblogs.com/ylwn817/articles/1963528.html
5)NHibernate仍然需要像管理EF上下文一样管理Session对象,同样,我们也可以把它"缓存"在HttpContext中,但是已经帮我们完成了类似的工作。详情参见http://www.cnblogs.com/13yan/archive/2013/05/17/3083552.html。作者还给大家提供了一个NHibernateHelper,很赞。
- 在ASP.NET中使用Spring.Net等开源框架笔记
- 在asp.net中使用 log4net 笔记
- 在asp.net中使用 log4net 笔记
- 在asp.net中使用 log4net 笔记
- 在asp.net中使用 log4net 笔记
- 在asp.net中使用 log4net 笔记
- 在asp.net mvc3中使用spring.net 1.3.1
- ASP.NET中使用框架
- 在ASP.NET中使用无框架的Ajax实例
- 在ASP.NET中使用无框架的Ajax实例
- 在ASP.NET中使用.NET组件
- 在ASP.NET中使用.NET组件
- 在ASP.NET中使用.NET组件
- 在ASP.NET中使用.NET组件
- 在ASP.NET中使用.NET组件
- 在ASP.NET中使用.NET组件
- Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
- ASP.NET中框架的使用
- Java-NowCoder-字符串分隔
- 电路与Multisim基础 电容遇到交流+直流电路时,容抗与隔直通交的特性
- 只要四步即可将win10本本变成无线热点
- 行人检测论文 Integral Channel Features(上)
- leetcode---Partition List
- 在ASP.NET中使用Spring.Net等开源框架笔记
- 1069. The Black Hole of Numbers (20)-PAT甲级真题
- C++一个数组实现两个栈
- php面向对象笔记1
- Android获取安装应用所需权限
- C#用Oracle.DataAccess中连接Oracle要注意版本问题!
- 几种RMAN恢复场景
- 电路与Multisim基础 发光的白炽灯及其示例
- php面向对象笔记2 构造函数和$this