基于Web Service的客户端框架搭建二:数据转换层(FCL)
2014-08-14 09:51
441 查看
引言
要使用WebService来分离客户端与服务端,必定要使用约定好两者之间的数据契约。Json数据以其完全独立于语言的优势,成为开发者的首选。C# JavaScriptSerializer为Json与Object对象之间的序列化与反序列化提供了良好的方法。接口设计
数据转换包含Json反序列化成Object对象和Object序列化成Json数据。在项目中,会有很多实例对象,都需要使用Serialize和Deserialize方法来实现数据转换,我们可以抽象出一个接口IDFC(数据格式转换接口)。因为我们不确定每次从服务端获取的数据对象是单个Object还是List<Object>,因此约定WebService返回的Json字符串中被序列化的对象是List<Object>,客户端Post到WebService的参数也是将List<Object>序列化成Json字符串之后值。接口设计如下:
namespace ProjectmsMGT_FCL { public interface IDFC { string Object2Json(List<Object> models); List<Object> Json2Object(string json); } }
接口实现
在项目中,我们会设计很多的Model类,User、Order、Product、Project、Stock等等,那么针对项目的实际需求,我们可以针对不同对象实现接口IDFC。如下是两个对象的实现类:
namespace ProjectmsMGT_FCL { public class DFC_Project : IDFC { public static JavaScriptSerializer js = new JavaScriptSerializer(); #region IDFC 成员 public string Object2Json(List<Object> models) { return js.Serialize(models); } public List<Object> Json2Object(string json) { List<Project> objs = js.Deserialize<List<Project>>(json); List<Object> list = new List<object>(); foreach (var item in objs) { list.Add(item); } return list; } #endregion } }
namespace ProjectmsMGT_FCL { public class DFC_User : IDFC { public static JavaScriptSerializer js = new JavaScriptSerializer(); #region IDFC 成员 public string Object2Json(List<object> models) { return js.Serialize(models); } public List<object> Json2Object(string json) { List<User> objs = js.Deserialize<List<User>>(json); List<Object> list = new List<object>(); foreach (var item in objs) { list.Add(item); } return list; } #endregion } }
总结
数据转换层的设计相对简单,数据转换层的主要工作是实现Json与数据对象之间的序列化与反序列化。为代理层Proxy提供辅助服务,在调用Web Service代理方法之前,将数据对象参数序列化成Json字符串,在调用之后,将Web Service返回的Json字符串反序列化成数据对象,这整个流程在功能分发层Dispatcher完成。相关文章推荐
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- 基于Web Service的客户端框架搭建三:代理层(Proxy)
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- 基于Web Service的客户端框架搭建四:终结篇
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- 异步消息总线hornetq学习-01基于maven的客户端程序框架搭建
- 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(2:开始搭建模块化的程序框架)
- 实战搭建Gearman 分布式处理框架 + python客户端
- 基于MFC的OPENGL绘图框架搭建
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(三)——搭建Android开发环境,用Hibernate生成Android项目的Model层
- 基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
- 基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
- Struts2+Spring2.5+ibatis+ExtJS3.1 基于注解框架搭建
- 基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
- 采用CakePHP框架为Android应用快速搭建Web Service服务器及API接口的PHP代码实例
- xfire框架,搭建web service实例
- C++的gsoap客户端与基于WCF的C#服务端Web Service交互的问题
- 基于.net平台的web框架搭建
- 基于CAS搭建JavaEE单点登录框架(客户端)(取消https证书验证)