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

RO45 – 如何写 RemObjects SDK 服务 (.NET Version)
本文说明如何创建你的第一个 RemObjects SDK 服务 . 在下一相关文档中 (RO46) 中说明如何基于这个服务端创建客户端 .
选择服务类型
第一步是选择你要创建的服务类型 . Visual Studio IDE, 选择主菜单 "File | New | Other" . 如下图 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第1张图片
本例我们要创建一个简单的Windows Forms Server . 这是可以创建的最简单的服务 , 不需要 Web 服务和额外的配置 . 选择 "Windows Forms Server" 点击 OK 按钮 . 将看到一个 "New RemObjects SDK Server" 对话框 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第2张图片
选择高级项目选项
点击 "Advanced Project Options" 按钮查看所有服务选项的对话框 . 这里允许你设置基础的选项如项目名称和服务库名称 , 要使用的通道类型及消息类型 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第3张图片
  • 取消 '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 按钮创建你的解决方案 .
激活你的服务
现在你的项目已经创建 , 主窗口如下 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第4张图片
在窗口设计器的下方 , 你可以看到两个我们在上一步中选择的相应服务通道和消息类型的控件 .
点击ServerChannel 控件查看其 Active 属性并设置为 TRUE ( 默认 ):
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第5张图片
RODL 文件 : 代理 (proxy), 存根 (stub) 和实现文件
如果你在解决方法管理器中仔细观察 , 将可以发现红色的图标的ROWindowsFormsServer.RODL 文件 . RODL (RemObjects Definition Language) 文件中包含所有服务端开放的服务定义和数据类型 .
可是使用 Service Builder 工具编辑和查看这个文件 .
在解决方案管理器中双击这个 RODL 文件 , 或点击 RemObjects SDK 主菜单的 "Edit Service Library" 项可以打开它 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第6张图片
如图可见 , 这个 RODL 中包含一个服务和两个方法 : Sum GetServerTime.
这里不用修改和增加任何东西 . 简单的关闭 Service Builder 并查看解决方案如何变化 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第7张图片
每次你使用 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 编译并启动服务端 .
测试服务
服务启动界面如图 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第8张图片
现在你的服务运行了 , 我们检查一下是否正常 . 打开 IE 浏览器输入如下 RUL: http://localhost:8099/BIN
你将看到如下 XML 文档 :
RO45 – 如何写RemObjects SDK 服务 (.NET Version)_第9张图片
好了 ! 服务已经成功运行并可以被 RemObjects SDK 客户端使用 . 我们做的只不过写了两行代码 .
注意 : 如果你的浏览器没有如上图一样显示出 XML 文档 , 或者是因为你没有设置 ROServer.Active True, 或者你输入了错误的 URL.
现在可以创建客户端调用这个服务了 . RO46.

你可能感兴趣的:(RO45 – 如何写RemObjects SDK 服务 (.NET Version))