RO45 – 如何写RemObjects SDK 服务 (.NET Version)

RO45 – 如何写 RemObjects SDK 服务 (.NET Version)
本文说明如何创建你的第一个 RemObjects SDK 服务 . 在下一相关文档中 (RO46) 中说明如何基于这个服务端创建客户端 .
选择服务类型
第一步是选择你要创建的服务类型 . Visual Studio IDE, 选择主菜单 "File | New | Other" . 如下图 :
本例我们要创建一个简单的Windows Forms Server . 这是可以创建的最简单的服务 , 不需要 Web 服务和额外的配置 . 选择 "Windows Forms Server" 点击 OK 按钮 . 将看到一个 "New RemObjects SDK Server" 对话框 :
选择高级项目选项
点击 "Advanced Project Options" 按钮查看所有服务选项的对话框 . 这里允许你设置基础的选项如项目名称和服务库名称 , 要使用的通道类型及消息类型 :
  • 取消 'Also create a matching Client Application' 选项
通常 , 你也需要同时生成客户端应用程序 , 但是为了展示创建一个附加的客户端有多么简单 , 我们将在下篇文章中创建客户端 (RO46).
在这个项目中我们不需要修改任何选项 , 每个选项的意义 :
  • Template Location: RemObjects服务项目的模板.如果你打开'/RemObjects SDK for .NET/bin/Templates'目录,可以发现很多包含模板的子目录.
  • Project Name: 将要创建的项目名称.
  • Project Location: 项目要保存的位置.
  • Library Name: 每个RemObjects SDK服务端可以容纳多个服务(services).库文件名称保持在RODL,将在生成Intf Invk原文件中使用.
  • Service Name: 你要创建的第一个服务的名字.
  • Server Channel: RemObjects SDK 服务端可以使用多个通讯协议向客户端提供服务.这里是你选择的默认的一个.记住你在以后还可以添加其他通道.
  • Message: RemObjects 服务端可以通过不同的消息协议连接.这只是你选择的默认的一个.
点击 OK 按钮创建你的解决方案 .
激活你的服务
现在你的项目已经创建 , 主窗口如下 :
在窗口设计器的下方 , 你可以看到两个我们在上一步中选择的相应服务通道和消息类型的控件 .
点击ServerChannel 控件查看其 Active 属性并设置为 TRUE ( 默认 ):
RODL 文件 : 代理 (proxy), 存根 (stub) 和实现文件
如果你在解决方法管理器中仔细观察 , 将可以发现红色的图标的ROWindowsFormsServer.RODL 文件 . RODL (RemObjects Definition Language) 文件中包含所有服务端开放的服务定义和数据类型 .
可是使用 Service Builder 工具编辑和查看这个文件 .
在解决方案管理器中双击这个 RODL 文件 , 或点击 RemObjects SDK 主菜单的 "Edit Service Library" 项可以打开它 :
如图可见 , 这个 RODL 中包含一个服务和两个方法 : Sum GetServerTime.
这里不用修改和增加任何东西 . 简单的关闭 Service Builder 并查看解决方案如何变化 :
每次你使用 Service Builder 编辑你的 RODL 文件 , Visual Studio IDE 将解析 RODL 文件并更新或生成如下文件 :
  • <LibraryName>_Intf: 这个文件中包含客户端要连接到服务端的代理代码.
  • <LibraryName>_Invk: 这个文件中包含存根代码,可以使服务端不用通过反射直接调用服务方法,提高执行效率.
  • <ServiceName>_Impl: 这种文件每个服务只生成一次,以后将不会自动变化.其中含有服务的实现.
代开 "ROWindowsFormsServerService_Impl.cs" 文件并给 Sum,GetServerTime 方法提供实现 . 如下图 :
public virtual int Sum(int A, int B)
{
    return A + B;
}
 
public virtual System.DateTime GetServerTime()
{
    return DateTime.Now;
}
现在按 F5 编译并启动服务端 .
测试服务
服务启动界面如图 :
现在你的服务运行了 , 我们检查一下是否正常 . 打开 IE 浏览器输入如下 RUL: http://localhost:8099/BIN
你将看到如下 XML 文档 :
好了 ! 服务已经成功运行并可以被 RemObjects SDK 客户端使用 . 我们做的只不过写了两行代码 .
注意 : 如果你的浏览器没有如上图一样显示出 XML 文档 , 或者是因为你没有设置 ROServer.Active True, 或者你输入了错误的 URL.
现在可以创建客户端调用这个服务了 . RO46.
一、 简介 1、 RemObjects SDK 综述 欢迎使用RemObjects SDK,这个框架可用简单灵活的方式创建可升级高灵活性的多层系统。 多层系统 一个多层系统分为两层或两层以上。通常人们分为3层: 表示层:终端用户程序,Web页面或可执行文件 业务逻辑/中间层:这个层的对象(运行于一些不可见的容器中)执行确认和业务逻辑。 数据存储层:通常是数据库。 基于这个基础结构上还有很多其他形式的框架,并且都在我们文档讨论的范围之外.但是你必须知道很重要的一点,创建任何分布式系统都需要一种消息协议让客户端和中间层通讯. 标准的消息协议是RPC-protocol (DCOM的基础), Java的 RMI 或 SOAP. RemObjects SDK适合作什么 为什么当一些协议都是适用的我们还要”重复制造车轮”?这有以下几个原因: 对于DCom,如果你所有的机器都运行Windows系统并且你会配置安全,他可以在局域网中运行的很好.但COM/DCOM对Windows和Unix的通讯不适用.事实上他是Windows上的标准.而且你要在你的机器上使用基于HTTP的COM对象就必须为RPC-通讯打开防火墙的几个端口. 对于RMI,RMI是针对Java的. Borland从来没有提供和RMI通讯的工具.就算有这种工具,你还是不能和COM对象通讯. 而SOAP呢?它是唯一的公认标准消息. 看起来他实现了互用性,但是却建立在解析XML高代价之上. 除非你有高速网络或只需要发送很小的包,否则你很难使用它. 这样的例子还很很多. RemObjects的目标 RemObjects为实现下面的目标而设计: 简单:开发者不需要是专家,不需要很长的时间就可以为网络中的电脑或Internet的客户端中发布自己的简单服务.Delphi开发者不用面对自己不熟悉的语法.并且你可以轻松的理解他的原理. 高效:我们通常在本机的两个进程通讯时使用Socket,使用标准协议像Soap做客户端和服务器的通讯,为什么没有一种通用的方式可以发布我们的服务呢?RemObjects SDK允许我们创建高效的服务,并可以使用我们需要的协议方式通讯. 灵活:RemObjects SDK使用TCP/IP,HTTP,和Windows消息作为传输信道.而我们要使用UDP或管道时我们就可以轻松的创建新的信道,只要通知服务器和客户端即可,不用修改其他部分.RemObjects SDK的插入式框架可以让我们一个简单的函数或实现一个接口IROTransportChannel即可建立新的通讯信道而扩展基础框架.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值