首页 > 学院 > 开发设计 > 正文

设计适用于SOA的类型

2019-11-17 03:20:47
字体:
来源:转载
供稿:网友

设计适用于SOA的类型

我们经常把一个项目分层去开发,无论是通过三层来面向对象开发还是用WCF或Remoting等面向服务的方式开发,返回值只有一个,如果底层出错了我们一般写日志来记录这些错误,然后分析错误来解决问题,但用户无法知道是不是自己操作不当,因为错误内容无法返回到界面上提示,不知道各位是如何处理这个问题的。如果是面向对象的话,我们可以通过 throw Exception 在 UI 上捕捉到异常。但是如果是面向服务的话,就只会返回一个服务器内部错误,具体原因体现不出来,我们当然在方法中添加 ref ErrorCode和 ref ErrorMsg 达到返回错误信息的目的。而且比如Remoting的话,并不能传输所以的对象,所以我们需要先序列化成xml或Json来传递。鉴于这类操作,我模仿京东商城的SDK,练习着写了一下新的类。首先我先定义了一个基类 WObject
 [Serializable]    public class WObject    {        public WObject() { }        /// <summary>        /// 返回值        /// </summary>        PRivate object objRet;        #region 错误信息        private String _ErrCode = "";        /// <summary>        /// 错误码        /// </summary>        public String ErrCode        {            get { return _ErrCode; }            set { _ErrCode = value; }        }        private String _ErrMsg = "";        /// <summary>        /// 错误信息        /// </summary>        public String ErrMsg        {            get { return _ErrMsg; }            set { _ErrMsg = value; }        }        /// <summary>        /// 获取错误信息        /// </summary>        public String GetFullMsg        {            get { return string.Format("{0}|{1}", ErrCode, ErrMsg); }        }        /// <summary>        /// 响应结果是否错误        /// </summary>        public bool IsError        {            get { return (!string.IsNullOrEmpty(this.ErrCode) || !string.IsNullOrEmpty(this.ErrMsg)); }        }        #endregion        #region 序列化/反序列化        public string ToJson()        {            return JsonConvert.SerializeObject(this);        }        public static T FromJson<T>(string sJson) where T : WObject        {            return JsonConvert.DeserializeObject<T>(sJson);        }        #endregion    }
WObject

这里序列化和反序列化,我用 Json.Net。

我们最常用的就String,所以现在我们先扩展一下他,当然WObject也可以直接使用。接下来我们的WString 是继承了WObject的
 public class WString : WObject    {        /// <summary>        /// 默认构造函数        /// </summary>        public WString() { }        public WString(params string[] strs)        {            sRet = string.Concat(strs);        }        public WString(params object[] strs)        {            sRet = string.Concat(strs);        }        /// <summary>        /// 返回值        /// </summary>        public string sRet = "";    }
WString

错误信息和序列化,都是放在基类里面的,所以这里我只需要定义一个返回值。

因为经常拼接字符串,所以就在构造函数里面添加了可变参数,这样在实例化的时候就方便了一些。

下面我来用一下这货:实例化:使用错误信息:序列化:反序列化:我想把这个程序集一直扩展下去,但能力有限,求各位大神协助我完善,帮助我学习,谢谢了。Git:http://git.oschina.net/wangjunjie/WLF.git之前还想过跳槽去上海闯闯,现在想想自己还没什么能拿的出的东西,索性写这个WLF来锻炼一下自己,争取今年达到自己的目标。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表