• WSSF的改造,让它更适合项目开发.


    WSSF 是 MS 实践与模式小组开发的一套分布式架构.相关内容见:http://www.cnblogs.com/LiYunQi/archive/2009/02/06/1385618.html

    我想在项目中应用它,所以先实践一下.

     如果用WSSF 。则要用以下调用:

    1.客户端调用:public string Hello(string Msg);

    2.代理类方法:public ResponseMessage Hello(RequestMessage Request);

    3.服务实现:

    protected MyService.BusinessLogic.MyServiceBusinessLogic busLogic = new BusinessLogic.MyServiceBusinessLogic();

    publicoverride MessageContracts.Response GetList(MessageContracts.Request request)
    {
    Responseres
    = new Response();
    res.ProductList
    = new DataContracts.ProductInfoList();
    //拆包,转换.
    res.ProductList.AddRange(busLogic.GetList(request.Msg).ConvertAll(TranslateBetweenProductInfoItemAndProductInfoItem.TranslateProductInfoItemToProductInfoItem));
    //包装返回 
    return res;
    }

    4.业务逻辑:

    public string GetList(stringrequest)

    {

      return "hello"+ request + "!";

    }

     

    1.去除MessageContract

     直接用实体替代。对于简单类型:stringInt。 直接调用更好。如下:

    1.客户端调用:public string Hello(string Msg);

    2.代理类方法:public string Hello(string Request);

    3.服务实现:

    protected MyService.BusinessLogic.MyServiceBusinessLogicbusLogic = new BusinessLogic.MyServiceBusinessLogic();

    public override string GetList(stringrequest)

    {

      return busLogic.GetList(request); //去除拆包,转换,包装返回三个步骤.

    }

     

    4.业务逻辑:

    public string GetList(stringrequest)

    {

      return "hello"+ request + "!";

    }

     

    2.去除业务逻辑层,保留业务实体层.用于返回数据把其内容移到服务实现:

     即把第三步改为:

    public override string GetList(stringrequest)

    {

      return "hello:"+ request; // 不再调用业务逻辑层,直接返回。

    }

    3.如果有ORM实体层,也可把业务实体层去除(或把Entity 当做是DataContract , 如果Entity 不能当作DataContract ,那么再自定义自己的DataContract). 但是系统编译会报警告:返回类型不符合CLS

     第三步即为:

    public partial  class ProductService: ProductServiceBase

    {

      public override MyOql.DictRule.EntityGetList(MyOql.DictRule.Entityrequest)

      {

        request.Value= "hello"+ request.Key;

        returnrequest;

      }

    }

     

    总结一下: WSSF 应该去除的项目有:

    MessageContract , BusinessEntities , DataAccess(用 ORM 替代.)

    应该改造的有:

    DataContract: 如果传输实体,那么直接用 Entity . 否则,自定义DataContract

    ServiceImplementation: 直接实现代码. 避免拆包,转换,包装.

     

    初学,欢迎拍砖!

    Demo 下载:https://files.cnblogs.com/newsea/MyService.rar

    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    smarty基础
    phpcms 内容模块PC标签调用
    phpcms v9中的$CATEGORYS栏目数组
    PHP如何实现验证码
    PHP生成一个不重复随机数组的封装方法
    简单实现php文件管理
    PHP-----作业:查询数据,在页面上显示
    PHP-----设计模式六大原则
    PHP-----静态
    PHP-----面向对象的设计模式:工厂模式例题
  • 原文地址:https://www.cnblogs.com/newsea/p/1756900.html
Copyright © 2020-2023  润新知