0

使用ICE,我可以使用以下命令启动单个服务器:

iceboxnet.exe --Ice.Config=config.icebox

(下载ICE v3.4.1 演示源并查看目录“Ice-3.4.1-demos\democs\IceGrid\simple”)

问题:如何在同一个冰箱中启动两台服务器,每台服务器都包含在一个单独的 .dll 文件中?

4

2 回答 2

0

关键在用户手册中:“43.3.4:配置服务”:

属性的名称部分是服务名称(在本例中为 IceStorm)。此名称被传递给服务的启动操作,并且在同一 Icebox 服务器中配置的所有服务中必须是唯一的。

所以 - 你需要为每个服务有不同的接口名称(这很有意义:它需要每个服务的唯一名称)。我们需要复制接口“hello”,并将其命名为“hello2”。

向 config.icebox 添加额外的一行:

 # The hello service (2 identical copies)
 IceBox.Service.Hello=helloservice.dll:HelloServiceI --Ice.Config=config.service
 IceBox.Service.Hello2=helloservice2.dll:Hello2ServiceI --Ice.Config=config2.service

创建 config.service 的副本,将其命名为 config2.service,并更改名称和端口:

Hello.Endpoints=tcp -p 10000:udp -p 10000:ssl -p 10001

...编辑为:

Hello2.Endpoints=tcp -p 20000:udp -p 20000:ssl -p 20001

现在,我们需要编译一个新版本的“helloservice.dll”,它使用“hello2”作为接口。浏览 C# 项目,将所有“hello”重命名为“hello2”,将编译的输出从“helloservice.dll”重命名为“helloservice2.dll”。

现在,这两个服务将在同一个冰箱下启动,如果您通过更改 .config 文件打开登录:

 C:\Program Files (x86)\ZeroC\Ice-3.4.1\Ice-3.4.1-demos\democs\IceBox\hello>iceboxnet.exe --Ice.Config=config.icebox
 -- 3/2/2011 15:10:32:316 iceboxnet.exe-Hello: Network: attempting to bind to tcp socket 0.0.0.0:10000
 -- 3/2/2011 15:10:32:373 iceboxnet.exe-Hello: Network: accepting tcp connections at 0.0.0.0:10000
    local interfaces: 192.168.1.10, 127.0.0.1
 -- 3/2/2011 15:10:32:382 iceboxnet.exe-Hello: Network: attempting to bind to udp socket 0.0.0.0:10000
 -- 3/2/2011 15:10:32:429 iceboxnet.exe-Hello: Network: starting to receive udp packets
    local address = 0.0.0.0:10000
    local interfaces: 192.168.1.10, 127.0.0.1
 -- 3/2/2011 15:10:32:457 iceboxnet.exe-Hello: Network: attempting to bind to ssl socket 0.0.0.0:10001
 -- 3/2/2011 15:10:32:507 iceboxnet.exe-Hello: Network: accepting ssl connections at 0.0.0.0:10001
    local interfaces: 192.168.1.10, 127.0.0.1
 -- 3/2/2011 15:10:32:649 iceboxnet.exe-Hello: Network: published endpoints for object adapter `Hello':
    tcp -h 192.168.1.10 -p 10000:udp -h 192.168.1.10 -p 10000:ssl -h 192.168.1.10 -p 10001
 -- 3/2/2011 15:10:32:745 iceboxnet.exe-Hello2: Network: attempting to bind to tcp socket 0.0.0.0:20000
 -- 3/2/2011 15:10:32:794 iceboxnet.exe-Hello2: Network: accepting tcp connections at 0.0.0.0:20000
    local interfaces: 192.168.1.10, 127.0.0.1
 -- 3/2/2011 15:10:32:795 iceboxnet.exe-Hello2: Network: attempting to bind to udp socket 0.0.0.0:20000
 -- 3/2/2011 15:10:32:839 iceboxnet.exe-Hello2: Network: starting to receive udp packets
    local address = 0.0.0.0:20000
    local interfaces: 192.168.1.10, 127.0.0.1
 -- 3/2/2011 15:10:32:840 iceboxnet.exe-Hello2: Network: attempting to bind to ssl socket 0.0.0.0:20001
 -- 3/2/2011 15:10:32:885 iceboxnet.exe-Hello2: Network: accepting ssl connections at 0.0.0.0:20001
    local interfaces: 192.168.1.10, 127.0.0.1
 -- 3/2/2011 15:10:33:021 iceboxnet.exe-Hello2: Network: published endpoints for object adapter `Hello2':
    tcp -h 192.168.1.10 -p 20000:udp -h 192.168.1.10 -p 20000:ssl -h 192.168.1.10 -p 20001
 -- 3/2/2011 15:10:33:027 iceboxnet.exe: Network: attempting to bind to tcp socket 127.0.0.1:9996
 -- 3/2/2011 15:10:33:027 iceboxnet.exe: Network: accepting tcp connections at 127.0.0.1:9996
 -- 3/2/2011 15:10:33:034 iceboxnet.exe: Network: published endpoints for object adapter `Ice.Admin':
    tcp -h 127.0.0.1 -p 9996

更新

呻吟。上面的所有代码都不是绝对必要的(除非您正在创建两个服务)。我需要做的就是重命名相应的接口,请参阅ZeroC 论坛和如何在一个冰箱中运行两个服务

于 2011-03-02T15:19:48.543 回答
0

只需重命名接口即可。请参阅ZeroC 论坛以及如何在一个冰箱中运行两个服务

于 2011-03-02T22:32:04.793 回答