﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xylz,imxylz-随笔分类-ICE</title><link>http://www.blogjava.net/xylz/category/50964.html</link><description>关注后端架构、中间件、分布式和高性能RESTful服务</description><language>zh-cn</language><lastBuildDate>Tue, 22 May 2012 13:37:02 GMT</lastBuildDate><pubDate>Tue, 22 May 2012 13:37:02 GMT</pubDate><ttl>60</ttl><item><title>ICE Mini Grid</title><link>http://www.blogjava.net/xylz/archive/2012/05/22/378862.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Tue, 22 May 2012 11:47:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2012/05/22/378862.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/378862.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2012/05/22/378862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/378862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/378862.html</trackback:ping><description><![CDATA[<h3>ICE Grid 入门篇</h3>
<br />
这篇是ICE Grid入门的最简单版本(不涉及到IceGride Node)。这里面设计到过多的概念和知识，暂且不表。<br />
<h2>创建slice文件</h2>
Printer.ice
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;**********************************************************************<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Copyright&nbsp;(c)&nbsp;2012&nbsp;Ady&nbsp;Liu.&nbsp;All&nbsp;rights&nbsp;reserved.<br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Email:&nbsp;imxylz@gmail.com<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;**********************************************************************</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; "></span><br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;module&nbsp;Demo{<br />
<span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">interface</span>&nbsp;Printer&nbsp;{<br />
<span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;printString(<span style="color: #0000FF; ">string</span>&nbsp;s);<br />
<span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
<span style="color: #008080; ">13</span>&nbsp;};</div>
<br />
<h2>
转换slice</h2>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->slice2cpp&nbsp;Printer.ice&nbsp;</div>
<br />
配置IceGrid Registry<br />
registry.cfg<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->IceGrid.InstanceName=DemoGrid<br />
<br />
Ice.Default.Locator=DemoGrid/Locator:<span style="color: #0000FF; ">default</span>&nbsp;-p&nbsp;4061&nbsp;&nbsp;<br />
<br />
IceGrid.Registry.Client.Endpoints=tcp&nbsp;-p&nbsp;4061<br />
IceGrid.Registry.Server.Endpoints=tcp<br />
IceGrid.Registry.Internal.Endpoints=tcp<br />
IceGrid.Registry.PermissionsVerifier=DemoGrid/NullPermissionsVerifier<br />
IceGrid.Registry.AdminPermissionsVerifier=DemoGrid/NullPermissionsVerifier<br />
IceGrid.Registry.SSLPermissionsVerifier=DemoGrid/NullSSLPermissionsVerifier<br />
IceGrid.Registry.AdminSSLPermissionsVerifier=DemoGrid/NullSSLPermissionsVerifier<br />
IceGrid.Registry.Data=./data<br />
IceGrid.Registry.DynamicRegistration=1</div>
<br />
启动Registry<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->icegridregistry&nbsp;--Ice.Config=./registry.cfg&nbsp;&amp;</div>
启动前最好创建数据目录./data<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->mkdir&nbsp;./data</div>
<br />
<h2>服务端</h2>
PrinterI.h<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">**********************************************************************<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Copyright&nbsp;(c)&nbsp;2012&nbsp;Ady&nbsp;Liu.&nbsp;All&nbsp;rights&nbsp;reserved.<br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Email:&nbsp;imxylz@gmail.com<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">**********************************************************************</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; "></span><br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;#ifndef&nbsp;PRINTER_I_H<br />
<span style="color: #008080; ">10</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;PRINTER_I_H<br />
<span style="color: #008080; ">11</span>&nbsp;<br />
<span style="color: #008080; ">12</span>&nbsp;#include&nbsp;&lt;Printer.h&gt;<br />
<span style="color: #008080; ">13</span>&nbsp;<br />
<span style="color: #008080; ">14</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;Demo;<br />
<span style="color: #008080; ">15</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br />
<span style="color: #008080; ">16</span>&nbsp;<br />
<span style="color: #008080; ">17</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;PrinterI&nbsp;:&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Printer&nbsp;{<br />
<span style="color: #008080; ">18</span>&nbsp;<span style="color: #0000FF; ">public</span>:<br />
<span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">virtual</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;printString(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">string</span>&amp;&nbsp;s,<span style="color: #0000FF; ">const</span>&nbsp;Ice::Current&amp;);<br />
<span style="color: #008080; ">20</span>&nbsp;};<br />
<span style="color: #008080; ">21</span>&nbsp;<br />
<span style="color: #008080; ">22</span>&nbsp;<span style="color: #0000FF; ">#endif</span><br />
<span style="color: #008080; ">23</span>&nbsp;</div>
<br />
PrinterI.cpp<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">**********************************************************************<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Copyright&nbsp;(c)&nbsp;2012&nbsp;Ady&nbsp;Liu.&nbsp;All&nbsp;rights&nbsp;reserved.<br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Email:&nbsp;imxylz@gmail.com<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">**********************************************************************</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; "></span><br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;#include&nbsp;&lt;Ice/Ice.h&gt;<br />
<span style="color: #008080; ">10</span>&nbsp;#include&nbsp;&lt;PrinterI.h&gt;<br />
<span style="color: #008080; ">11</span>&nbsp;<br />
<span style="color: #008080; ">12</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br />
<span style="color: #008080; ">13</span>&nbsp;<br />
<span style="color: #008080; ">14</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;PrinterI&nbsp;::&nbsp;printString(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">string</span>&amp;&nbsp;s,<span style="color: #0000FF; ">const</span>&nbsp;Ice::Current&amp;){<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;s&nbsp;&lt;&lt;&nbsp;endl;<br />
<span style="color: #008080; ">16</span>&nbsp;}<br />
<span style="color: #008080; ">17</span>&nbsp;</div>
<br />
Server.cpp<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#include&nbsp;&lt;Ice/Ice.h&gt;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;#include&nbsp;&lt;PrinterI.h&gt;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Server&nbsp;:&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Ice::Application&nbsp;{<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">virtual</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;run(<span style="color: #0000FF; ">int</span>&nbsp;argc,<span style="color: #0000FF; ">char</span>*&nbsp;argv[]);<br />
<span style="color: #008080; ">10</span>&nbsp;};<br />
<span style="color: #008080; ">11</span>&nbsp;<br />
<span style="color: #008080; ">12</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main(<span style="color: #0000FF; ">int</span>&nbsp;argc,<span style="color: #0000FF; ">char</span>*&nbsp;argv[]){<br />
<span style="color: #008080; ">13</span>&nbsp;<br />
<span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Server&nbsp;app;<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;status&nbsp;=&nbsp;app.main(argc,argv,"server.cfg");<br />
<span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;status;<br />
<span style="color: #008080; ">17</span>&nbsp;}<br />
<span style="color: #008080; ">18</span>&nbsp;<br />
<span style="color: #008080; ">19</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;Server::run(<span style="color: #0000FF; ">int</span>&nbsp;argc,<span style="color: #0000FF; ">char</span>*&nbsp;argv[]){<br />
<span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(argc&gt;1){<br />
<span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cerr&lt;&lt;appName()&lt;&lt;":&nbsp;too&nbsp;many&nbsp;arguments"&lt;&lt;endl;<br />
<span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;EXIT_FAILURE;<br />
<span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">24</span>&nbsp;<br />
<span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ice::PropertiesPtr&nbsp;properties&nbsp;=&nbsp;communicator()-&gt;getProperties();<br />
<span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ice::ObjectAdapterPtr&nbsp;adapter&nbsp;=&nbsp;communicator()-&gt;createObjectAdapter("PrinterAdapter");<br />
<span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ice::Identity&nbsp;id&nbsp;=&nbsp;communicator()-&gt;stringToIdentity("printer");<br />
<span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Demo::PrinterPtr&nbsp;printer&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;PrinterI();<br />
<span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adapter-&gt;add(printer,id);<br />
<span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adapter-&gt;activate();<br />
<span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;communicator()-&gt;waitForShutdown();<br />
<span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;EXIT_SUCCESS;<br />
<span style="color: #008080; ">33</span>&nbsp;}<br />
<span style="color: #008080; ">34</span>&nbsp;</div>
<br />
编译<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->c++&nbsp;-I.&nbsp;-I$ICE_HOME/include&nbsp;-c&nbsp;PrinterI.cpp&nbsp;Printer.cpp&nbsp;Server.cpp</div>
<br />
连接<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->c++&nbsp;-o&nbsp;server&nbsp;Printer.o&nbsp;Server.o&nbsp;PrinterI.o&nbsp;-L$ICE_HOME/lib&nbsp;-lIce&nbsp;-lIceUtil&nbsp;-lpthread</div>
<br />
服务端配置<br />
server.cfg<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->PrinterAdapter.AdapterId=PrinterAdapter<br />
PrinterAdapter.Endpoints=<span style="color: #0000FF; ">default</span><br />
Ice.Default.Locator=DemoGrid/Locator:tcp&nbsp;-p&nbsp;4061</div>
运行服务端<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->./server</div>
<br />
<h2>客户端</h2>
Client.cpp<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">**********************************************************************<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Copyright&nbsp;(c)&nbsp;2012&nbsp;Ady&nbsp;Liu.&nbsp;All&nbsp;rights&nbsp;reserved.<br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Email:&nbsp;imxylz@gmail.com<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">**********************************************************************</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; "></span><br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;#include&nbsp;&lt;Ice/Ice.h&gt;<br />
<span style="color: #008080; ">10</span>&nbsp;#include&nbsp;&lt;IceGrid/IceGrid.h&gt;<br />
<span style="color: #008080; ">11</span>&nbsp;#include&nbsp;&lt;Printer.h&gt;<br />
<span style="color: #008080; ">12</span>&nbsp;<br />
<span style="color: #008080; ">13</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br />
<span style="color: #008080; ">14</span>&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;Demo;<br />
<span style="color: #008080; ">15</span>&nbsp;<br />
<span style="color: #008080; ">16</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main(<span style="color: #0000FF; ">int</span>&nbsp;argc,<span style="color: #0000FF; ">char</span>*&nbsp;argv[]){<br />
<span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;status&nbsp;=&nbsp;0;<br />
<span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ice::CommunicatorPtr&nbsp;ic;<br />
<span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrinterPrx&nbsp;printer;<br />
<span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>{<br />
<span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ic&nbsp;=&nbsp;Ice::initialize(argc,argv);<br />
<span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Printer&nbsp;Proxy=&gt;"&lt;&lt;ic-&gt;stringToProxy("printer@PrinterAdapter")&lt;&lt;endl;<br />
<span style="color: #008080; ">23</span>&nbsp;<br />
<span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>{<br />
<span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printer&nbsp;=&nbsp;PrinterPrx::checkedCast(ic-&gt;stringToProxy("printer@PrinterAdapter"));<br />
<span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">catch</span>(<span style="color: #0000FF; ">const</span>&nbsp;Ice::NotRegisteredException&amp;){<br />
<span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IceGrid::QueryPrx&nbsp;query&nbsp;=&nbsp;IceGrid::QueryPrx::checkedCast(ic-&gt;stringToProxy("DemoGrid/Query"));<br />
<span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printer&nbsp;=&nbsp;PrinterPrx::checkedCast(query-&gt;findObjectByType("::Demo::Printer"));<br />
<span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(!printer){<br />
<span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cerr&lt;&lt;":&nbsp;could't&nbsp;find&nbsp;a&nbsp;`::Demo::Printer`&nbsp;object."&lt;&lt;endl;<br />
<span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(ic){<br />
<span style="color: #008080; ">33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ic-&gt;destroy();<br />
<span style="color: #008080; ">34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;EXIT_FAILURE;<br />
<span style="color: #008080; ">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printer-&gt;printString("Hello&nbsp;world!");<br />
<span style="color: #008080; ">38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">catch</span>(<span style="color: #0000FF; ">const</span>&nbsp;Ice::Exception&amp;&nbsp;ex){<br />
<span style="color: #008080; ">39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cerr&nbsp;&lt;&lt;&nbsp;ex&nbsp;&lt;&lt;&nbsp;endl;<br />
<span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;1;<br />
<span style="color: #008080; ">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">catch</span>(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;msg){<br />
<span style="color: #008080; ">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cerr&nbsp;&lt;&lt;&nbsp;msg&nbsp;&lt;&lt;&nbsp;endl;<br />
<span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;2;<br />
<span style="color: #008080; ">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(ic){<br />
<span style="color: #008080; ">46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ic-&gt;destroy();<br />
<span style="color: #008080; ">47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;status;<br />
<span style="color: #008080; ">49</span>&nbsp;}<br />
<span style="color: #008080; ">50</span>&nbsp;</div>
<br />
编译<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->c++&nbsp;-I.&nbsp;-I$ICE_HOME/include&nbsp;-c&nbsp;Printer.cpp&nbsp;Client.cpp</div>
<br />
连接<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->c++&nbsp;-o&nbsp;client&nbsp;Printer.o&nbsp;Client.o&nbsp;-L$ICE_HOME/lib&nbsp;-lIce&nbsp;-lIceUtil&nbsp;-lIceGrid&nbsp;-lGlacier2&nbsp;-lpthread</div>
<br />
客户端配置<br />
client.cfg<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Ice.Default.Locator=DemoGrid/Locator:<span style="color: #0000FF; ">default</span>&nbsp;-p&nbsp;4061</div>
<br />
运行客户端<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->./client&nbsp;--Ice.Config=./client.cfg</div>
<br />
<br />
<h2>所有文件</h2>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->grid<br />
&#9500;&#9472;&#9472;&nbsp;client.cfg<br />
&#9500;&#9472;&#9472;&nbsp;Client.cpp<br />
&#9500;&#9472;&#9472;&nbsp;Printer.cpp<br />
&#9500;&#9472;&#9472;&nbsp;Printer.h<br />
&#9500;&#9472;&#9472;&nbsp;PrinterI.cpp<br />
&#9500;&#9472;&#9472;&nbsp;PrinterI.h<br />
&#9500;&#9472;&#9472;&nbsp;registry.cfg<br />
&#9500;&#9472;&#9472;&nbsp;server.cfg<br />
&#9492;&#9472;&#9472;&nbsp;Server.cpp</div>
<br />
<br />
所有文件下载:&nbsp;<a title="Ice Mini Guide" href="/Files/xylz/icegrid_mini_guide.zip">Ice Mini Guide</a><img src ="http://www.blogjava.net/xylz/aggbug/378862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">imxylz</a> 2012-05-22 19:47 <a href="http://www.blogjava.net/xylz/archive/2012/05/22/378862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ICE Mini Guide</title><link>http://www.blogjava.net/xylz/archive/2012/02/29/370971.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Wed, 29 Feb 2012 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2012/02/29/370971.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/370971.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2012/02/29/370971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/370971.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/370971.html</trackback:ping><description><![CDATA[最近开始在团队内推广<a href="http://www.zeroc.com/" target="_blank">ICE</a>中间件。<br />
<br />
ICE作为一个异构平台，提供了高性能的RPC解决方案。全年指定的架构计划中就是将现有的内部通讯方式迁移到ICE+<a target="_blank" href="http://code.google.com/p/protobuf/">Protocol Buffers</a>的组合方案中。<br />
我们尽可能的利用<a href="http://zookeeper.apache.org/" target="_blank">Zookeeper</a>的配置管理，创建更透明的客户端代理，同时也是降低开发的难度。<br />
我们慢慢尝试，寻找更适合我们的分布式通讯中间件。<br />
<br />
下面的Slide是一篇简短的入门介绍。目前为止，我们的开发还是仅限于Java语言的服务端。以后视情况提供一些其它语言的服务端吧。<br />
<div style="width:680px" id="__ss_11791351"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/xylz/ice-mini-guide-11791351" title="Ice mini guide" target="_blank">Ice mini guide</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/11791351" width="680" height="568" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/xylz" target="_blank">Ady Lau<br />
</a> </div>
</div>
关键字：ICE "The Internet Communications Engine" RPC "Protocol Buffers"<img src ="http://www.blogjava.net/xylz/aggbug/370971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">imxylz</a> 2012-02-29 10:44 <a href="http://www.blogjava.net/xylz/archive/2012/02/29/370971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>