架构人生

服务层框架设计(二)——服务请求示例

作为表现层(Presentation)要请求服务的话,只需要有以下几种请求方式就可以了。

下面以登录为例:

1. 直接请求

Request request = new Request("Users","Login");
request[“UserId”]
=this.txtUser.Text.Trim();
request[“UserPwd”]
=this.txtPwd.Text.Trim();
Response response
=request.GetResponse();
if(response.IsError){
    ShowError(response.ErrorMessage);
}
else{
      
if((bool)response[“IsLogin”]){
            
//login successfully
      }
     
else{
             ShowError(“Login Failed.”);
     }
}

这种请求的好处在于简洁,但坏处在于"UserId","UserPwd"毕竟是字符串,不利于编译器检查。另外在(bool)response["IsLogin"]类型转换时会让人胆颤心惊。另外有一个不好不坏的地方在于它虽如此,但参数类型,数量都因Xml自动检测。所以你不能随便请求,必须遵循规则。这个规则在上一章节的XML里体现出来了。

2. 封装请求

LoginRequest request=new LoginRequest();
request.UserId
=this.txtUser.Text.Trim();
request.UserPwd
=this.txtPwd.Text.Trim();
if(request.IsError){
    ShowError(response.ErrorMessage);
}
else{
        
if(response.IsLogin){
             
//login successfully
        }
        
else{
               ShowError(“Login Failed.”);
        }
}

这种方式优点是所有类型都是强数据类型,对于编译器来说比较安全。但它需要额外一层来构造LoginRequest, LoginResponse两个类,当然这两个类都分别继承于Request. Response。只是这个时候业务规则的XML显得有点多余,虽然也能进行参数类型和数量检测,但毕竟已经是强数据类型了。

3. 通过Web Services请求

直接将Request, Response或LoginRequest, LoginResponse序列化放在Web服务上进行操作。代码几乎同上,只是变成了引用服务而已。

其实这是最好的一种方式,也是最标准的一种方式。目前希望能在今后研究分布式WCF服务上能够应用。

posted on 2009-03-17 09:56  智艾悦  阅读(2123)  评论(7编辑  收藏  举报

导航