![WCF REST架构简单网站_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9006435c-3dc4-42ac-8f1d-5873e6c9190f/9006435c-3dc4-42ac-8f1d-5873e6c9190f1.gif)
![WCF REST架构简单网站_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9006435c-3dc4-42ac-8f1d-5873e6c9190f/9006435c-3dc4-42ac-8f1d-5873e6c9190f2.gif)
![WCF REST架构简单网站_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9006435c-3dc4-42ac-8f1d-5873e6c9190f/9006435c-3dc4-42ac-8f1d-5873e6c9190f3.gif)
![WCF REST架构简单网站_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9006435c-3dc4-42ac-8f1d-5873e6c9190f/9006435c-3dc4-42ac-8f1d-5873e6c9190f4.gif)
![WCF REST架构简单网站_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-6/18/9006435c-3dc4-42ac-8f1d-5873e6c9190f/9006435c-3dc4-42ac-8f1d-5873e6c9190f5.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WCF REST架构简单网站 最近更新: 2011-04-03 14:33 浏览次数: 197 次 转帖到: 以前在微软的平台,架构一个网站,需要传统的数据库处理代码,业务逻辑层代码,前端的页面处理,还有交互程序处理这几部分的紧密结合,可以说解耦比较困难。网站开发的难度高,更新成本的难度也就高了。就我经验来说,一个简单的网站必须是一个可扩展,易跨平台数据复用,易维护的架构。我在这里抛砖引玉的说说我使用的架构:数据库 +REST Server+WEB(MVC?) 在下面的文字我尽量少做细节描述,把我目前的做法和大家分享一下就是了。工具/原料 在MS平台上的,数据库是MS SQL2008 .NET
2、3.5+VS2008,首先建立数据模型,然后生成DataContext(数据库处理层),然后使用WCF生成REST风格的Web Service,然后再在网站使用Web Service做页面的处理,对应的网站动态数据交互,以后可以考虑使用MSMQ做消息,然后异步的关心Web Service的Cache等,这是后话,以后有机会再和大家交流。 步骤/方法1. 数据库的操作前我经常用工厂模式去做,后来发现在大中网站基本用不了那么复杂的逻辑,因为数据库的架构基本上是万古不变的,所以我直接使用C#3.5的Dlinq ,在效率,维护成本上都要高出c#2.0的传统做法的实现。OK,用VS2008 创建一个项目
3、 DbDomain,然后新建一个Linq To Sql类,然后在服务器资源管理器链接数据库,找到表,拖过来。就OK了。具体的代码在附件有。数据库的结构是:如上,是两张简单的表,会员表和文章表。直接修改数据库后,然后再如上步骤即可,对应的*DataContext文件都基本上是固定的格式,有兴趣的自己去深入研究。 2. 生成RSET 风格的Web Service为什么需要Web Service,主要是考虑复用,缓存,数据之间的EVENT通知,还有调试维护等,至于为什么要生成REST风格的,不明白的请自觉GG之,当然,不是每个方法的实现都用REST风格的,对于安全级别比较高的,我还是会使用传统的生成
4、的wsdl web service去安排设计。这里这些暂时不会考虑。新建一个wcf 应用程序WcfService,创建一个wcf服务Member.svc,范例中只实现了对会员的简单查询和录入:先看看IMember的实现:namespace WcfService/ 注意: 如果更改此处的接口名称 IMember,也必须更新 Web.config 中对 IMember 的引用。ServiceContractpublic interface IMemberOperationContractWebGet(UriTemplate = User/id, ResponseFormat = WebMessag
5、eFormat.Json)User GetUser(string id);OperationContractWebInvoke(UriTemplate = User/name/password, ResponseFormat = WebMessageFormat.Xml,Method = POST)int AddUser(string name,string password);注意第一行标注ServiceContract这是一个可转换的Service,3.5大部分是这种模式,接下来是OperationContract操作方法,相当于asmx的类似于webmethod的这种标注,然后WebGe
6、t(UriTemplate = User/id, ResponseFormat = WebMessageFormat.Json)这就是表示访问路径与相应的格式。我们期望在应用程序访问http:/localhost/member.svc/User/1,能相应Json格式的User数据。这里的User我并没有数据的Member,因为敏感数据控制,缓存等考虑,中间做了一层,专用跨平台交互:DataContractpublic class UserDataMemberpublic int Id get; set; DataMemberpublic string Name get; set; 在dlin
7、q查询是非常的方便的,例如看看具体的实现:AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)public class Member : IMemberpublic User GetUser(string id)DbDomain.TestDbHandlerDataContext dc=new DbDomain.TestDbHandlerDataContext();return (from x in dc.Member where x.Id.ToString(
8、).Equals(id) select new User Id = x.Id, Name = x.Name ).FirstOrDefault();public int AddUser(string name, string password)if (string.IsNullOrEmpty(name) | string.IsNullOrEmpty(password) return -1;DbDomain.TestDbHandlerDataContext dc = new DbDomain.TestDbHandlerDataContext();DbDomain.Member clsMember
9、= new DbDomain.Member();clsMember.Name = name;clsMember.Password = password;dc.Member.InsertOnSubmit(clsMember);dc.SubmitChanges();return clsMember.Id;etCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)标注,是指明在IIS里访问该service。这里我没有做cache等,是直接操作数据库的,dlinq操作数据之前,都
10、会建立一个 DbDomain.TestDbHandlerDataContext dc = new DbDomain.TestDbHandlerDataContext();查询类。查询和更新都需要,语法也是很规范的linq,完全不会出现native sql或者dataset这些东西,全部是模型对象的处理,话外DataContext注意每次使用new的,不要使用static的。 注意,如果要让你的svc是REST风格的,除了上面的UriTemplate以外,还要修改svc的标注,加上这句:Factory=System.ServiceModel.Activation.WebServiceHostFa
11、ctory修改web.Config,注意节点上加这句:在注意加红变粗的地方。差不多就注意这几个地方,具体看我范例的配置吧。然后再http:/localhost:3274/Member.svc/User/1 这样的去访问,就会返回json格式的数据:添加数据库的方法就是用POST的方式:var usern = client.UploadString(http:/localhost:3274/Member.svc/User/admin/admin, POST,String.Empty);Console.WriteLine(usern);可以成功的POST数据,然后返回新用户的ID。3. 使用web service开发网站网站的与数据的交互开发就是使用上面的web service,注意,这里的rest风格的web service就是没有wsdl,需要post数据,然后自己序列化,一般都是公开数据字典,直接序列化,3.5已经自带序列化System.ServiceModel.Web(在 System.ServiceModel.Web.dll 中),所以不再用等第三方的类折腾了:我在范例网站抽取了我常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效节能环保设备采购与推广合同
- 经销商合同协议
- 健康家居环境布置考核试卷
- 批发市场的客户服务与支持体系考核试卷
- 公路工程混凝土结构与耐久性考核试卷
- 户外装备维修与保养考核试卷
- 印刷设备操作培训体系的科技发展趋势考核试卷
- 食品安全检测服务平台开发合同
- 2025年中国木纹豪华门行业市场发展前景及发展趋势与投资战略研究报告
- 跨海电影项目投资联合制作合同
- 大客户销售这样说这样做
- 精装修样板房房屋使用说明
- 乔迁新居结婚典礼主持词
- 小学四年级数学竞赛试题(附答案)
- 鲁科版高中化学必修2全册教案
- 《病理学基础》知识考核试题题库与答案
- 人口分布 高一地理下学期人教版 必修第二册
- 部编版六年级下册语文第3单元习作例文+习作PPT
- 四年级上册英语试题-Module 9 Unit 1 What happened to your head--外研社(一起)(含答案)
- 子宫内膜异位症诊疗指南
- 《高级计量经济学》-上课讲义课件
评论
0/150
提交评论