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

本文介绍了三种不同的登录请求实现方式:直接请求、封装请求及通过WebServices请求。每种方式都有其优缺点,如直接请求简单但类型安全性较低;封装请求提高了类型安全性但增加了额外的类构造;WebServices请求则是最标准的方式,适用于分布式服务。

作为表现层(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服务上能够应用。

转载于:https://www.cnblogs.com/architect/archive/2009/03/17/1413979.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值