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

posted @ 2010-06-12 11:26  NewSea  阅读(1872)  评论(6编辑  收藏  举报