首页 > 代码库 > 基于Web Service的客户端框架搭建二:数据转换层(FCL)
基于Web Service的客户端框架搭建二:数据转换层(FCL)
引言
要使用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字符串之后值。
接口设计如下:
1 namespace ProjectmsMGT_FCL2 {3 public interface IDFC4 {5 string Object2Json(List<Object> models);6 7 List<Object> Json2Object(string json);8 }9 }
接口实现
在项目中,我们会设计很多的Model类,User、Order、Product、Project、Stock等等,那么针对项目的实际需求,我们可以针对不同对象实现接口IDFC。
如下是两个对象的实现类:
1 namespace ProjectmsMGT_FCL 2 { 3 public class DFC_Project : IDFC 4 { 5 public static JavaScriptSerializer js = new JavaScriptSerializer(); 6 7 #region IDFC 成员 8 9 public string Object2Json(List<Object> models)10 {11 return js.Serialize(models);12 }13 14 public List<Object> Json2Object(string json)15 {16 List<Project> objs = js.Deserialize<List<Project>>(json);17 18 List<Object> list = new List<object>();19 foreach (var item in objs)20 {21 list.Add(item);22 }23 return list;24 }25 26 #endregion27 }28 }
1 namespace ProjectmsMGT_FCL 2 { 3 public class DFC_User : IDFC 4 { 5 public static JavaScriptSerializer js = new JavaScriptSerializer(); 6 7 #region IDFC 成员 8 9 public string Object2Json(List<object> models)10 {11 return js.Serialize(models);12 }13 14 public List<object> Json2Object(string json)15 {16 List<User> objs = js.Deserialize<List<User>>(json);17 18 List<Object> list = new List<object>();19 foreach (var item in objs)20 {21 list.Add(item);22 }23 return list;24 }25 26 #endregion27 }28 }
总结
数据转换层的设计相对简单,数据转换层的主要工作是实现Json与数据对象之间的序列化与反序列化。为代理层Proxy提供辅助服务,在调用Web Service代理方法之前,将数据对象参数序列化成Json字符串,在调用之后,将Web Service返回的Json字符串反序列化成数据对象,这整个流程在功能分发层Dispatcher完成。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。