(一)、对此篇博文还是从简单的架构入手:
简单的作几点说明--
1.Silverlight的数据访问采用Wcf提供数据源
2.Wcf的数据层采用NHibernate、SqlServer2005(同样适用于Oracle等其他的关系型数据库)
3.理解Wcf对实例上下文的管理,引用N人写IglooCommons类库对NHibernate作为WCF数据层的支持,
我自己对其对WcfNHibernate进行了抽取,编译为类库文件WcfNHibernate.dll
(后面会提供IglooCommons类库及其源码的下载)
附架构图:
(二)、简要说明结构的各个类库中的内容:
1. Domain类库中主要是对NHibernate持久层的编写
2. DataAccess类库文件对数据访问层的编写(这里引入了一个关键的类库WcfNHibernate.dll)
3. WcfService服务部分(此部分是我介绍的核心部分)
附结构图:
3.1:需要引入WcfNHibernate.dll类库文件,并且在Global.asax文件中的Application_Start中添加NHibernateFactory.Initialize();
代码来初始化NHibernate作为ORM对数据库的访问.
3.2:在AuthorService.svc.cs文件中的class类的上面添加属性引用NHibernateContext与ServiceBehavior
(InstanceContextMode = InstanceContextMode.PerCall),注意:这里的上下文实例必须设置为单调模式
3.3:hibernate.cfg.xml文件是对NHibernate的一些配置,注意:必要把属性"始终复制"改为"始终复制"
3.4:ClientAccessPolicy.xml与CrossDomain.xml是Silverlight解决跨域访问Wcf
4.解析类库文件WcfNhibernate.dll中源码的作用----
附源代码图:
4.1:NHibernateFactory文件是对NHibernate的初始化与Session的管理类
4.2:NHibernateContextInitializer文件是对Wcf实例上下文初始化扩展对NHibernate的支持
4.3:NHibernateContextExtension文件是对Wcf支持NHibernate中Session管理的扩展
4.4:NHibernateContext文件是对Wcf操作上下文对NHibernate的Session的调用
4.5:NHibernateContextAttribute文件是Wcf属性标记的,与契约行为,NHibernate的Session的管理
5.IglooCommons类库文件的完整展示:
附图说明:
作几点简要的说明:
5.1:提供了对AOP的支持(AOP--Aspect-Oriented Programming及面向方面编程)
5.2:提供了日志的接入点
5.3:提供了对事件的支持
5.4:提供了对WcfNHibernate的支持
(三)、NHibernate类库文件引入
(四)、感谢各位博友,有幸自己成为一名年轻的程序员
(五)、源代码提供下载:
1.WcfNHibernate类库下载
地址: