RO08 – 智能化我们的第一个服务

RO08 – 智能化我们的第一个服务
本文档将向你展示如何将我们的第一个服务转换成为 Smart Service.
一点介绍
 article RO05  RO06  我们在服务端创建了两个简单的方法  (Sum  GetServerTime)  并在客户端调用它们 . 为了我们能在 Internet 和局域网的任意位置都能访问我们使用了 RemObject SDK 二进制编码和 HTTP 协议 .
当它运行正常时,我们可能要面对这样的问题:如何让非 RemObjects 客户端使用我们的服务呢 ?
如果我们的客户端是 .Net 应用程序 ( 运行 X386 Poctet PC Mono 的一部分 ) 可以用 .Net 客户端 SDK 连接我们的服务 .
但是如果要用 Java PHP 应用程序来连接我们的服务就有问题了,因为还没有 RO 客户端支持这些语言 .
解决这种协同问题要使用标准编码格式 SOAP  (Simple Object Access Protocol).  现在每个可用的主要平台都支持使用 SOAP 消息协议连接远程服务 .
你可以从这两个网站查看 SOAP 的详细信息 http://www.w3c.org  http://www.msdn.microsoft.com/soap.
现在我们可以使服务同时提供二进制和 SOAP 两种连接方式 .
设置SOAP 消息
为了在我们服务中添加 SOAP 连接 , 我们需要做如下几个简单的步骤 .
1.        打开服务项目在主窗体中拖放一个 TROSOAPMessage  控件 .
2.        在属性面板中双击 ROServer 控件的 Dispathers 属性 打开 Dispatchers 列表编辑器 .
3.        点击 ”Add” 按钮并从 ComboBox 中选择 "ROSOAPMessage1".
如图 .
现在保存项目并按 F9 运行程序 .
OK!
如果我们在 IE 浏览器中键入地址 "http://localhost:8099/SOAP 将会见到如下 WSDL 文档 :
 
请登陆  http://www.w3.org/TR/wsdl  查看更多 WSDL 详细说明 .
如何使客户端使用两种消息类型
RemObjects 客户端可以使用二进制或 SOAP 消息连接服务端 为了让我们的客户端使用 SOAP 连接到服务端 , 我们需要在原来的代码中作少许修改 .
1.        打开客户端项目并在主窗体上拖放两个 TRadioButton 控件 .
2.        修改第一个 Radio Button Caption "Use SOAP Messaging" , 另一个为  "Use Binary Messaging".
3.        设置第一个 RadioButton Checked 属性为 Ture.
4.        "RemObjects SDK" 控件面板中拖放一个 TROSOAPMessage 控件,添加到主窗体 .
你的客户端程序如下图 :
现在替换原来的代码 :
myservice := CoTestService.Create(ROBINMessage1, ROWinInetHTTPChannel1);
:
if  RadioButton1.Checked then begin
  { SOAP }
  myservice := CoTestService.Create(ROSOAPMessage1, ROWinInetHTTPChannel1);
 ROWinInetHTTPChannel1.TargetURL :=  'http://localhost:8099/SOAP' ;
end
else begin
  { Binary }
  myservice := CoTestService.Create(ROBINMessage1, ROWinInetHTTPChannel1);
 ROWinInetHTTPChannel1.TargetURL :=  'http://localhost:8099/BIN' ;
end ;
完成 . 你简单的设置服务代理使用不同的 URL 和消息格式与服务端通讯 . 调用 Sum GetServer 方法的代码不变 .
总结
现在你的应用服务可以通过 SOAP 被任何平台上的客户端调用了 .
你可以在 JBuilder,VisualStudio.Net http://www.pocketsoap.com 的客户端中导入 IE 中显示的 WSDL.
创建 Smart Service  的最大好处就是满足了两方面要求 : 服务可以提供最优的连接 , 也可以使用 SOAP. 这种组和可以充分发挥我们的经验又能兼顾商业潜能 , 而我们却不用写多少代码及可以实现 .
最后我们发现我们无论使用何种连接方式都统一使用一种编码方式去调用服务 .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值