当前位置: 首页 > 编程语言 > C# > 正文

C#及.NET:从细节出发 设计良好的分布式框架(一)通用接口aop dto相关

时间:2014-10-13 cnblogs 熬夜的虫子

背景

随着信息化的普及,信息系统越来越多,通常不同系统是采用不同的技术基于不同平台开发的,缺乏统一规划、统一数据标准、统一调用接口,因此系统之间的交互变得很困难.通常大家在需要一个现有系统提供某方面功能的话就会让开发人员提供个接口,webservice接口也好,标准http接口也好。然后需求不停的变更,代码不停的迭代。随着应用端量的增多,对于类似业务逻辑提供的数据格式,内容的特殊处理,dto的设计等等都在变化。用.Net的同学会了解多一些,用webservice的话,应用端会生成代理类。服务端每次更新对应应用端都要同步更新。至此,我们引出第一个细节问题,解决服务端与应用端的强依赖,设计通用的接口规范。

技术点

1. AOP(切面)

2. JavaScriptSerializer (json序列化)

3. DTO设计

实现

先设计一个通用的接口类  

/// <summary>
/// 对象处理返回的结果接口
/// </summary>
/// <remarks>
/// 建议在代码调用返回值中都采用此类实例为返回值<br  />
/// 一般ResultNo小于0表示异常,0表示成功,大于0表示其它一般提示信息
/// </remarks>
public interface IAOPResult
{
    /// <summary>
    /// 返回代码
    /// </summary>
    int ResultNo { get; }
     
    /// <summary>
    /// 对应的描述信息
    /// </summary>
    string ResultDescription { get; }
     
    /// <summary>
    /// 相应的附加信息
    /// </summary>
    object ResultAttachObject { get; }
     
    /// <summary>
    /// 内部AOPResult
    /// </summary>
    IAOPResult InnerAOPResult { get; }
     
    /// <summary>
    /// 处理结果是否成功(ResultNo == 0)
    /// </summary>
    bool IsSuccess { get; }
     
    /// <summary>
    /// 处理结果是否失败(ResultNo != 0 )
	/// URL:http://www.bianceng.cn/Programming/csharp/201410/45786.htm
    /// </summary>
    bool IsNotSuccess { get; }
     
    /// <summary>
    /// 处理结果是否失败(ResultNo < 0 )
    /// </summary>
    bool IsFailed { get; }
     
    /// <summary>
    /// 已处理,但有不致命的错误(ResultNo > 0)
    /// </summary>
    bool IsPassedButFailed { get; }
     
    /// <summary>
    /// 如果处理失败,则抛出异常
    /// </summary>
    /// <returns>返回本身</returns>
    IAOPResult ThrowErrorOnFailed();
}