项目介绍
目前基于WCF和NHibernate进行项目开发,这两个东西我也接触不久,不过因为有了些项目的实践,所以多少有一些体会。打算分几个短文来介绍在项目中使用这些技术的一些心得。大致的思路是这样的!
使用NHibernate实现数据访问的工作,使用WCF对外提供Webservices接口。
在开发过程中,使用NUnit进行单元测试。使用WAS对发布的WCF服务进行压力测试。
所需知识
我会在文章中对 NHibernate和WCF做简单的介绍。如果您对这个两个知识点毫无了解,最好先看看下面的系列文章:
NHibernate:NHibernate之旅
WCF:WCF之旅
准备工作
创建一张用户表(UserInfo)
GO
/* ***** 对象: Table [dbo].[UserInfo] 脚本日期: 11/11/2009 09:42:17 ***** */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [ dbo ] . [ UserInfo ] (
[ id ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL ,
[ name ] [ varchar ] ( 100 ) COLLATE Chinese_PRC_CI_AS NULL ,
[ description ] [ varchar ] ( 1000 ) COLLATE Chinese_PRC_CI_AS NULL ,
[ state ] [ varchar ] ( 50 ) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [ PK_UserInfo ] PRIMARY KEY CLUSTERED
(
[ id ] ASC
) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ]
) ON [ PRIMARY ]
GO
SET ANSI_PADDING OFF
以下几篇都是围绕UserInfo进行开发,同时提供对UserInfo操作的接口。
第一篇、项目介绍与搭建;
第二篇、使用NHibername实现数据访问并进行单元测试;
第三篇、使用WCF对外提供Webservices接口并进行单元测试;
第四篇、使用WAS对Webservices接口进行压力测试。
项目搭建
采用分层的思路开发,每一层都建立的单独的项目。
1)实体层 (Model)
用于持久化类和O/R Mapping操作。
2)数据访问层(DAL)
使用HQL完成数据的读/写操作。
3)WCF契约层(Contract)
定义WCF中的Contract。
4)WCF 服务层(Services)
定义WCF中的Services。
5)WCF服务应用程序(Hosting)
本项目通过寄宿IIS对外提供接口(webservices和get访问)。
6)单元测试层
在开发的各个阶段完成相关单元测试工作。
项目代码我会在最后一篇完成后提供下载。