关于AutoMapper和WCF的一些认识
现在互联网时代呈尚快速开发,快速迭代。伴随着必然产生一些好用的第三方工具,今天有幸看到了Automapper这种类似ORM的框架,但是跟ORM还不太一样,
ORM是实体和数据库表之间的映射,而此框架主要实现实体和实体间映射,两个实体可以互相转换,即便两个实体属性名称和类型不一致也可以相互赋值,可以指定规则两个实体属性名称和个数必须一致或者忽略.
公司最近做了一个新项目,就是基于restFul实现的WCF,最主要实现是服务契约接口方法要加属性WebInVoke,例如:
[WebInvoke(Method = "GET", UriTemplate = "Method/{Id}"
, RequestFormat = WebMessageFormat.Json
, ResponseFormat = WebMessageFormat.Json)]
FundClassBasicRecord Method(string Id);
客户端访问方式不能采用原来的访问WCF的方式去访问服务端,否则会提示没有配置endpoint之类的错误,因为restful是基于http协议的,也就是基于URI,所以客户端采用webClient,参考代码如下:
protected void Page_Load(object sender, EventArgs e) { GetInfoByID("F00000O593"); } private void GetInfoByID(string id) { WebClient proxy = new WebClient(); string serviceURL = string.Empty; DataContractJsonSerializer obj; if (string.IsNullOrEmpty(id)) { serviceURL = string.Format("URI/"); obj = new DataContractJsonSerializer(typeof(List<>)); } else { serviceURL = string.Format("URI/" + id); obj = new DataContractJsonSerializer(typeof(FundClassBasicRecord)); } byte[] data = proxy.DownloadData(serviceURL); Stream stream = new MemoryStream(data); var result = obj.ReadObject(stream); List<InforRecord> list = new List<InforRecord>(); if (result is InforRecord) list.Add(result as InforRecord); else if (result is List<InforRecord>) list = result as List<InforRecord>; }
作者:tuohaibei
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利.
如果您觉得文章对您有帮助,可以点击文章右下角"推荐".您的鼓励是作者坚持原创和持续写作的最大动力!