实现RemObject Hydra实现插件库注意要点

一、控制模块

每个插件库(DLL)都要有且只有一个控制模块,取名就叫ModuleController就行了。

二、不可视插件

用向导生成,最关键的是名字,例如下面代码中字符串部分就是插件名字,生成插件实例时用的:

 THYPluginFactory.Create(HInstance, 'HYNonVisualPlugin2', 
	Create_HYNonVisualPlugin2, THYNonVisualPlugin2);
三、可视插件

生成跟不可视插件一样,但继承的基类不一样,创建实例时可以指定父容器。

四、RemObject SDK插件

插件主程序和插件库都要Build with runtime packages

vcl;rtl;Hydra_Core_D11;Hydra_RO_D11

可以通过IDE上的Hydra菜单Hydra Packages Settings来设置。

1、插件主程序中放Server、Message、ModuleManager、RODLReader

2、Server连接到Message,Message连接到RODLReader,RODLReader连接到ModuleManager

3、生成的RemObject SDK插件中需要修改一下自动生成的Impl代码的initialization部分

在自动生成的TROClassFactory.Create外面包一层THYROFactory.Create,在单元implementation部分引用uses {Hydra:} uHYRes, uHYIntf, uHYROFactory...

RemObject SDK插件的描述要给在THYROFactory.Create方法中。

4、在主程序中加载所有插件模块(主程序所在文件夹)

  with ModuleManager do
    if ModuleCount>0
      then UnloadModules
      else LoadModules('*.dll');

5、开启Server.Active := True;

好,现在可以通过RemObject Service Tester查出所有服务了。


五、常用代码

//显示插件中的RemObject SDK服务
procedure DisplayService(lv: TListView);
var i, cnt : integer;
begin
  if (csDestroying in ComponentState) then Exit;

  lv.Items.Clear;

  for i := 0 to (ModuleManager.PluginDescriptorCount-1) do
    if (ModuleManager.PluginDescriptors[i].PluginType = ptService) then
    begin
      with lv.Items.Add do
      begin
        Caption := ModuleManager.PluginDescriptors[i].Name;
        SubItems.Add(ModuleManager.PluginDescriptors[i].Description);
      end;
    end;
end;

PluginType取决于用的那个工厂方法和继承的基类,THYROFactory.Create生成的即ptService,继承自THYNonVisualPlugin就是ptNonVisual...



一、 简介 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、付费专栏及课程。

余额充值