Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Distributed Ada&x2B;PolyORB:我可以拥有同一RCI单元的多个实例,并且能够从代码中调用特定的实例吗?_Distributed_Ada - Fatal编程技术网

Distributed Ada&x2B;PolyORB:我可以拥有同一RCI单元的多个实例,并且能够从代码中调用特定的实例吗?

Distributed Ada&x2B;PolyORB:我可以拥有同一RCI单元的多个实例,并且能够从代码中调用特定的实例吗?,distributed,ada,Distributed,Ada,我正在使用Ada的分布式系统附件和PolyORB开发一个分布式应用程序,我有一个特殊的要求 假设我有一个名为U的RCI(远程呼叫接口)单元和使用它的名为main的主程序 我想知道的是: 是否可以将DSA配置为创建分区U的多个副本 如果答案是肯定的,那么我可以称之为具体的一个吗 来自MAIN中我的代码的分区 我在网上找不到这方面的信息,目前我能想到的唯一解决方案是让预处理器从通用模板生成多个U的“副本”,并相应地修补DSA配置文件。有没有一种不太“黑”的方法可以做到这一点?在阅读了我能找到的所有文

我正在使用Ada的分布式系统附件和PolyORB开发一个分布式应用程序,我有一个特殊的要求

假设我有一个名为
U
的RCI(远程呼叫接口)单元和使用它的名为
main
的主程序

我想知道的是:

  • 是否可以将DSA配置为创建分区
    U
    的多个副本
  • 如果答案是肯定的,那么我可以称之为具体的一个吗 来自
    MAIN
    中我的代码的分区

  • 我在网上找不到这方面的信息,目前我能想到的唯一解决方案是让预处理器从通用模板生成多个
    U
    的“副本”,并相应地修补DSA配置文件。有没有一种不太“黑”的方法可以做到这一点?

    在阅读了我能找到的所有文档后,我得出结论,这是不可能的,即:DSA中没有考虑到这一点

    我仍然认为我在最初的问题中提出的黑客解决方案是可行的,但是从实践的角度来看,它没有多大意义

    对于我的应用程序,我决定切换到SOAP,使用
    AWS
    web服务器并完全放弃DSA

    编辑:回应shark8评论:

    具体来说,我的想法是这样的。假设我有一个配置文件,其中描述了我需要多少个分区副本,以及如何配置每个分区,下面是我的方法:

  • 让预处理器读取配置文件并生成所有所需的源文件 来自模板的分区(基本上这只是创建一个副本) 并更改包名和文件名以避免 碰撞)
  • 让预处理器相应地修补DSA配置文件,以生成这些分区
  • 然后我会有一个作为“网关”或“选择器”的最终包 想要,请转到其他软件包。它将包含“通用”程序 这将充当选择器,类似于:

        procedure Some_Procedure(partitionID : Integer; params : whatever) is
    case partitionID is
     when 1 =>
       Partition1.Some_Procedure(params);
     when 2 =>
       Partition2.Some_Procedure(params);
     etc...
    end case;
    
    结束某些程序

  • 显然,与分区本身一样,本例中的各种行必须由预处理器生成。另外:调用此过程的主程序需要传递其ID,但这没有问题,因为它将读取与1)中的预处理器相同的配置,因此它将根据其内部逻辑知道ID和要调用的ID

    正如我所说,这是一种迂回的方法,但我认为它应该有效。

    DSA(polyorb)非常灵活,您可以有多个独特的RCI。你为什么要这么做?这是处理速度的最大化。在使用了相当多的DSA后,我会质疑您这样做的动机,也许会建议您更改设计

    如果它的处理速度快,我建议您在多个客户机分区中进行处理,并在DSA中使用异步消息传递机制。如果您需要更高的处理速度,那么可以跨客户端分区分多个阶段进行计算/处理


    DSA示例中包含的银行示例应用程序中有一个很好的消息传递机制示例

    这里有一个问题:您将如何实现#2?基本上,我有一个模拟,其中我有几个地理区域,每个区域都必须在自己的节点上运行。这就是为什么我需要相同代码片段的多个“副本”(分区):每个分区将代表其中一个区域。通过阅读我发现的示例,似乎没有办法做到这一点,即:拥有同一分区的多个可区分实例。因此,我选择了不同的解决方案。如果真的有一种方法可以实现我所描述的,我仍然有兴趣了解它,所以请随意链接相关文档/示例您可以有一个被动分区和一组代码分区,每个分区都通过您通过命令行界面传递给它的参数进行标识。DSA非常适合这个。我现在正处于项目之间,如果你需要一些专业帮助,我在谷歌+。这不是一项艰巨的工作,但也不是微不足道的