WCF系列之.net(3.0/3.5)Rest使用示例
2013-02-25 13:18
453 查看
上面我介绍了在.NET(3.0/3.5)开发WCF的使用示例。
这篇,我将讲解Rest 这个炙手可热的新的开发方式,至于rest 是什么,请大家百度下。
我们还是以下面的方式做示例:
服务接口-》服务-》客户端
1.服务接口:数据接口
数据成员:
2.服务:config配置
实现服务类
开启服务类 :
3.客户端:config配置
客户端调用
好了,代码到此就结束了,大家发现没有这个比传统的SOAP代码省多了 而且还很简单 太棒了!
大家在开发Rest的时候,尽量多注意.net版本,我就因为一个返回数组的问题,折腾2天!
下一篇,我将讲解.net 4.0 开发WCF 的开发方式 和以往更不同哦!
示例代码:WcfDemo(.net3.5)REST.zip
这篇,我将讲解Rest 这个炙手可热的新的开发方式,至于rest 是什么,请大家百度下。
我们还是以下面的方式做示例:
服务接口-》服务-》客户端
1.服务接口:数据接口
using System.ServiceModel; using System.ServiceModel.Web; //这里就是REST 要关键引用的类 using System.Runtime.Serialization; namespace Wcf.IProductService { [ServiceContract] public interface IProduct { //REST 四个 GET POST PUT DELETE [OperationContract] //注意.NET3.5必须要带这个 4.0 开始就可以取消了 [WebGet(UriTemplate = "all", ResponseFormat = WebMessageFormat.Xml)] List<Product> GetAll(); /*IEnumerable<Product> GetAll(); 在.NET3.5不可以 4.0就可以 很郁闷 找了2天 问题依旧 后来把 IEnumerable改成List 问题解决 原因.NET4.0 对IEnumerable增加了新特性 */ [OperationContract] [WebGet(UriTemplate = "{id}")] Product Get(string id); //添加 其中路径为/ [OperationContract] [WebInvoke(UriTemplate = "/", Method = "POST")] void Create(Product product); //更新 [OperationContract] [WebInvoke(UriTemplate = "/", Method = "PUT")] void Update(Product product); //删除 [OperationContract] [WebInvoke(UriTemplate = "{id}", Method = "DELETE")] void Delete(string id); } }
数据成员:
using System.Runtime.Serialization; //序列化 namespace Wcf.IProductService { [DataContract(Namespace = "http://yuhao.com")] public class Product { [DataMember] public string Id { get; set; } [DataMember] public string ProductName { get; set; } [DataMember] public string Price { get; set; } } }
2.服务:config配置
<system.serviceModel> <!--注意这里传统的WCF区别--> <services> <service name="Server.ProductService"> <!--这里只有服务名称 没有行为--> <endpoint address="http://127.0.0.1:1808/ProductService" binding="webHttpBinding" contract="Wcf.IProductService.IProduct" /> <!--Address(地址) 提高访问地址 可以自己设置--> <!--Binding(绑定) 提供访问的模式 --> <!--Contract(契约) 表示的是提高的接口 带命名空间--> <!--大家看到了没有 多简单没有 那个复杂的元数据--> </service> </services> </system.serviceModel>
实现服务类
using Wcf.IProductService; using System.ServiceModel.Web; namespace Server { public class ProductService:IProduct { public static List<Product> products = new List<Product>() { new Product{Id="1",ProductName="Iphone4s",Price="3788"}, new Product{Id="2",ProductName="Ipad3",Price="3288"} }; #region IProduct 成员 //public IEnumerable<Product> GetAll() .net 3.5 不支持 害我调试半天 public List<Product> GetAll() { return products; } public Product Get(string id) { Product product = products.FirstOrDefault(p => p.Id == id); if (null == product) { return null; } return product; } public void Create(Product product) { products.Add(product); } public void Update(Product product) { this.Delete(product.Id); products.Add(product); } public void Delete(string id) { Product product = this.Get(id); if (null != product) { products.Remove(product); } } #endregion } }
开启服务类 :
using System.ServiceModel; using System.ServiceModel.Web;//这个类是关键 using Wcf.IProductService; namespace Server { class Program { static void Main(string[] args) { using (WebServiceHost host = new WebServiceHost(typeof(ProductService))) { host.Open(); Console.WriteLine("服务已启动"); Console.Read(); } } } }
3.客户端:config配置
<system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="webBehavior"> <webHttp/> </behavior> </endpointBehaviors> </behaviors> <client> <endpoint name="Server.ProductService" address="http://127.0.0.1:1808/ProductService" behaviorConfiguration="webBehavior" binding="webHttpBinding" contract="Wcf.IProductService.IProduct"/> </client> </system.serviceModel>
客户端调用
ChannelFactory<IProduct> ChannelFactory = new ChannelFactory<IProduct>("Server.ProductService"); IProduct proxy = ChannelFactory.CreateChannel(); //Response.Write(proxy.Get("1").ProductName); Array.ForEach<Product>(proxy.GetAll().ToArray(), product => Response.Write(product.ProductName));
好了,代码到此就结束了,大家发现没有这个比传统的SOAP代码省多了 而且还很简单 太棒了!
大家在开发Rest的时候,尽量多注意.net版本,我就因为一个返回数组的问题,折腾2天!
下一篇,我将讲解.net 4.0 开发WCF 的开发方式 和以往更不同哦!
示例代码:WcfDemo(.net3.5)REST.zip
相关文章推荐
- WCF系列之.net(3.0/3.5)使用示例
- WCF系列之.net(4.0)使用示例
- WCF系列之.net(4.0) 在网站使用Wcf 代替传统的WebService
- 【转】 在 ASP.NET 3.5 中使用同时支持 Ajax Json 和 .NET 客户端的 WCF 服务
- .NET基础示例系列之十八:使用C++调用MySql C Api
- SOS使用详解(.NET 2.0/3.0/3.5)
- .Net中WebService和WCF的使用示例
- WCF系列之.net(4.0) 在网站使用Js调用Wcf Rest
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(2):设计基于WCF的服务.zip(8.29 MB)
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(2):设计基于WCF的服务.zip(8.29 MB)
- WCF系列之.net(4.0) 在网站使用Js调用Wcf
- Silverlight_Rest_WCF系列之五:RestInvoker的使用
- 书精通C# 3.0与.NET 3.5高级编程——LINQ、WCF、WPF、WF(随书附赠的评论
- C#2008与.NET 3.5 高级程序设计读书笔记(25)-- WCF
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)
- Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
- Windows Azure入门教学系列 (七):使用REST API访问Storage Service
- Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例
- WCF热门问题编程示例(3):WCF是否使用或者支持IOCP完成端口(整理补充)
- XSLT语法 在.net中使用XSLT转换xml文档示例