<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/624a56ff8947fd5953cf0013/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/624a56ff8947fd5953cf0013/bg1.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x2 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">使用<span class="_ _0"></span>使用<span class="_ _1"></span><span class="ff2">IIO<span class="_ _2"></span>P.N<span class="_ _2"></span>ET</span>使<span class="_ _2"></span>用<span class="_ _0"></span>使用<span class="_ _1"></span><span class="ff2">.NE<span class="_ _2"></span>T</span>和<span class="_ _3"></span>和<span class="_ _1"></span><span class="ff2">J2EE</span>构<span class="_ _2"></span>建<span class="_ _2"></span>分布<span class="_ _2"></span>式对<span class="_ _2"></span>象<span class="_ _2"></span>系统<span class="_ _4"></span>构建<span class="_ _2"></span>分布<span class="_ _2"></span>式<span class="_ _2"></span>对象<span class="_ _2"></span>系统<span class="_ _1"></span><span class="ff2">-</span>源<span class="_ _2"></span>码<span class="_ _0"></span>源码</div><div class="t m0 x2 h4 y3 ff1 fs1 fc0 sc0 ls0 ws0">介绍<span class="_ _5"></span>介绍</div><div class="t m0 x2 h5 y4 ff1 fs2 fc0 sc0 ls0 ws0">在微软看<span class="_ _2"></span>来,下<span class="_ _2"></span>一代分<span class="_ _2"></span>布式系统<span class="_ _2"></span>将与<span class="ff3">W<span class="_ _2"></span>ebServ<span class="_ _2"></span>ices</span>进<span class="_ _2"></span>行通信。<span class="ff3"> We<span class="_ _2"></span>bServic<span class="_ _2"></span>es</span>在集<span class="_ _2"></span>成异构松<span class="_ _2"></span>耦合系<span class="_ _2"></span>统方面<span class="_ _2"></span>很棒,但<span class="_ _2"></span>是它们<span class="_ _2"></span>也</div><div class="t m0 x2 h5 y5 ff1 fs2 fc0 sc0 ls0 ws0">有其局限<span class="_ _2"></span>性:它<span class="_ _2"></span>们不支<span class="_ _2"></span>持远程对<span class="_ _2"></span>象引用<span class="_ _2"></span>。<span class="ff3"> </span>实际上<span class="_ _2"></span>,它们<span class="_ _2"></span>是无状<span class="_ _2"></span>态的,比<span class="_ _2"></span>分布式<span class="_ _2"></span>对象系<span class="_ _2"></span>统更接<span class="_ _2"></span>近远程方<span class="_ _2"></span>法调用<span class="_ _2"></span>。<span class="ff3"> </span>此外,<span class="_ _2"></span><span class="ff3">SOAP</span></div><div class="t m0 x2 h5 y6 ff1 fs2 fc0 sc0 ls0 ws0">和<span class="ff3">XML</span>绝<span class="_ _2"></span>不是压<span class="_ _2"></span>缩格式,<span class="_ _2"></span>而且往<span class="_ _2"></span>往很冗<span class="_ _2"></span>长。</div><div class="t m0 x2 h5 y7 ff3 fs2 fc0 sc0 ls0 ws0">.NET<span class="ff1">和</span>J<span class="_ _2"></span>2EE<span class="ff1">是两<span class="_ _2"></span>个相似<span class="_ _2"></span>但不连<span class="_ _2"></span>贯的世界<span class="_ _2"></span>:它们<span class="_ _2"></span>当前只<span class="_ _2"></span>能使用</span>W<span class="_ _2"></span>ebSer<span class="_ _2"></span>vices<span class="ff1">一<span class="_ _2"></span>起交互<span class="_ _2"></span>。</span> <span class="ff1">两种平台都<span class="_ _2"></span>提供了用<span class="_ _2"></span>于构建<span class="_ _2"></span>紧密耦<span class="_ _2"></span>合</span></div><div class="t m0 x2 h5 y8 ff1 fs2 fc0 sc0 ls0 ws0">的分布式<span class="_ _2"></span>对象系<span class="_ _2"></span>统的强<span class="_ _2"></span>大机制:<span class="_ _2"></span><span class="ff3">.NET</span>的<span class="_ _2"></span><span class="ff3">Remo<span class="_ _2"></span>ting</span>和<span class="ff3">Ja<span class="_ _2"></span>va</span>的<span class="ff3">RM<span class="_ _2"></span>I</span>,但遗<span class="_ _2"></span>憾的是<span class="_ _2"></span>,它们依<span class="_ _2"></span>赖于不<span class="_ _2"></span>兼容的<span class="_ _2"></span>标准。<span class="_ _2"></span><span class="ff3"> </span>幸<span class="_ _2"></span>运的是,<span class="_ _2"></span><span class="ff3">.NET</span></div><div class="t m0 x2 h5 y9 ff1 fs2 fc0 sc0 ls0 ws0">的远程处<span class="_ _2"></span>理是高<span class="_ _2"></span>度可配<span class="_ _2"></span>置的:可<span class="_ _2"></span>以轻松<span class="_ _2"></span>提供用<span class="_ _2"></span>于对象的<span class="_ _2"></span>序列化<span class="_ _2"></span>和反序<span class="_ _2"></span>列化的不<span class="_ _2"></span>同格式<span class="_ _2"></span>化程序<span class="_ _2"></span>以及不<span class="_ _2"></span>同的传输<span class="_ _2"></span>通道。</div><div class="t m0 x2 h5 ya ff1 fs2 fc0 sc0 ls0 ws0">图<span class="ff3">1</span>:<span class="ff3">.N<span class="_ _2"></span>ET</span>通道<span class="_ _2"></span>概述</div><div class="t m0 x2 h5 yb ff1 fs2 fc0 sc0 ls0 ws0">本文展示<span class="_ _2"></span>了<span class="ff3">.NE<span class="_ _2"></span>T</span>和<span class="ff3">J2EE<span class="_ _2"></span></span>平台如<span class="_ _2"></span>何紧密地<span class="_ _2"></span>互操作<span class="_ _2"></span>,这是<span class="_ _2"></span>开发分布<span class="_ _2"></span>式企业<span class="_ _2"></span>应用程<span class="_ _2"></span>序时经常<span class="_ _2"></span>需要的<span class="_ _2"></span>。<span class="ff3"> </span>为此,<span class="_ _2"></span>我们使<span class="_ _2"></span>用称为</div><div class="t m0 x2 h5 yc ff3 fs2 fc0 sc0 ls0 ws0">IIOP.NE<span class="_ _2"></span>T<span class="ff1">的开源<span class="_ _2"></span>自定义<span class="_ _2"></span>远程处理<span class="_ _2"></span>通道。</span></div><div class="t m0 x2 h4 yd ff1 fs1 fc0 sc0 ls0 ws0">关于<span class="_ _5"></span>关于<span class="_ _1"></span><span class="ff2">IIOP.NET</span></div><div class="t m0 x2 h5 ye ff3 fs2 fc0 sc0 ls0 ws0">IIOP.NE<span class="_ _2"></span>T<span class="ff1">是基于<span class="_ _2"></span></span>IIOP<span class="ff1">协议<span class="_ _2"></span>的</span>.NE<span class="_ _2"></span>T<span class="ff1">远程通<span class="_ _2"></span>道。<span class="_ _1"></span></span> IIOP<span class="ff1">是</span>CORBA<span class="_ _2"></span><span class="ff1">标准定义<span class="_ _2"></span>的协议<span class="_ _2"></span>,与</span>Jav<span class="_ _2"></span>a<span class="ff1">的</span>RM<span class="_ _2"></span>I / IIOP<span class="ff1">相<span class="_ _2"></span>同。<span class="_ _1"></span></span> IIOP.NET<span class="ff1">充<span class="_ _2"></span>当</span></div><div class="t m0 x2 h5 yf ff3 fs2 fc0 sc0 ls0 ws0">ORB<span class="ff1">(</span>C<span class="_ _2"></span>ORBA<span class="ff1">对<span class="_ _2"></span>象请求<span class="_ _2"></span>代理)<span class="_ _2"></span>;</span> <span class="ff1">它将</span>.NET<span class="ff1">的类<span class="_ _2"></span>型系统转<span class="_ _2"></span>换为</span>C<span class="_ _2"></span>ORBA<span class="ff1">的<span class="_ _2"></span>类型系<span class="_ _2"></span>统,然后<span class="_ _2"></span>转换回<span class="_ _2"></span>来,从<span class="_ _2"></span>而使应用<span class="_ _2"></span>程序中<span class="_ _2"></span>定义的</span></div><div class="t m0 x2 h5 y10 ff1 fs2 fc0 sc0 ls0 ws0">对象可被<span class="_ _2"></span>其他<span class="ff3">O<span class="_ _2"></span>RB</span>访问<span class="_ _2"></span>。<span class="_ _2"></span><span class="ff3"> RMI / IIO<span class="_ _2"></span>P</span>实现了<span class="_ _2"></span><span class="ff3">ORB</span>功<span class="_ _2"></span>能的子<span class="_ _2"></span>集(由于<span class="_ _2"></span><span class="ff3">Java</span>的<span class="_ _2"></span>类型系<span class="_ _2"></span>统中的某<span class="_ _2"></span>些限制<span class="_ _2"></span>),并<span class="_ _2"></span>为<span class="ff3">J2EE<span class="_ _2"></span></span>平台提供<span class="_ _2"></span>了与</div><div class="t m0 x2 h5 y11 ff3 fs2 fc0 sc0 ls0 ws0">IIOP.NE<span class="_ _2"></span>T<span class="ff1">相同的<span class="_ _2"></span>功能。</span></div><div class="t m0 x2 h5 y12 ff1 fs2 fc0 sc0 ls0 ws0">图<span class="ff3">2</span>:分<span class="_ _2"></span>布式对<span class="_ _2"></span>象系统概<span class="_ _2"></span>述</div><div class="t m0 x2 h5 y13 ff1 fs2 fc0 sc0 ls0 ws0">使用<span class="ff3">IIOP<span class="_ _2"></span>.NET</span>几<span class="_ _2"></span>乎与使<span class="_ _2"></span>用内置远<span class="_ _2"></span>程处理<span class="_ _2"></span>一样简<span class="_ _2"></span>单。<span class="_ _2"></span><span class="ff3"> </span>下面<span class="_ _2"></span>的示例<span class="_ _2"></span>将向您展<span class="_ _2"></span>示如何<span class="_ _2"></span>使用<span class="ff3">IIO<span class="_ _2"></span>P.NET</span>从<span class="_ _2"></span><span class="ff3">Java</span>访<span class="_ _2"></span>问<span class="ff3">.NET<span class="_ _2"></span></span>服务。</div><div class="t m0 x2 h5 y14 ff3 fs2 fc0 sc0 ls0 ws0">IIOP.NE<span class="_ _2"></span>T<span class="ff1">是一个<span class="_ _2"></span>托管在<span class="_ _2"></span></span>source<span class="_ _2"></span>forge<span class="ff1">(<span class="_ _2"></span></span> <span class="fc1">http://iio<span class="_ _2"></span>p-net.so<span class="_ _2"></span>urcefo<span class="_ _2"></span>rge.ne<span class="_ _2"></span>t/<span class="_ _1"></span></span> <span class="ff1">)上的开源项目<span class="_ _2"></span>。</span> <span class="ff1">它是由<span class="_ _2"></span>多米尼<span class="_ _2"></span>克</span>·<span class="ff1">乌尔<span class="_ _2"></span>曼</span></div><div class="t m0 x2 h5 y15 ff1 fs2 fc0 sc0 ls0 ws0">(<span class="ff3">Domi<span class="_ _2"></span>nic Ullm<span class="_ _2"></span>ann</span>)在<span class="_ _2"></span><span class="ff3 fc1">ET<span class="_ _2"></span>H-Z<span class="_ _2"></span></span>毕业<span class="_ _2"></span>论文中开<span class="_ _2"></span>发<span class="fc1">的</span>;<span class="_ _2"></span><span class="ff3"> </span>现在他的<span class="_ _2"></span>现任雇<span class="_ _2"></span>主(<span class="ff3"> <span class="fc1">htt<span class="_ _2"></span>p://ww<span class="_ _2"></span>w.elca.<span class="_ _2"></span>ch</span> </span>)赞助了<span class="_ _2"></span>进一步<span class="_ _2"></span>的工作<span class="_ _2"></span>。</div><div class="t m0 x2 h5 y16 ff1 fs2 fc0 sc0 ls0 ws0">毫不奇怪<span class="_ _2"></span>,<span class="ff3">IIOP<span class="_ _2"></span>.NET</span>并<span class="_ _2"></span>不是唯一<span class="_ _2"></span>可以用<span class="_ _2"></span>于此目<span class="_ _2"></span>的的软件<span class="_ _2"></span>。<span class="_ _2"></span><span class="ff3"> </span>首先<span class="_ _2"></span>,开源项<span class="_ _2"></span>目<span class="ff3">Rem<span class="_ _2"></span>oting.<span class="_ _2"></span>Corba</span>的<span class="_ _2"></span>目标非<span class="_ _2"></span>常相似,<span class="_ _2"></span>但是没<span class="_ _2"></span>有生成</div><div class="t m0 x2 h5 y17 ff1 fs2 fc0 sc0 ls0 ws0">器可通过<span class="_ _2"></span><span class="ff3">dll</span>创建<span class="_ _2"></span><span class="ff3">IDL</span>,并<span class="_ _2"></span>且目前<span class="_ _2"></span>不支持<span class="ff3">C<span class="_ _2"></span>ORBA</span>的<span class="_ _2"></span>值类型<span class="_ _2"></span>。<span class="_ _2"></span><span class="ff3"> </span>第二,来<span class="_ _2"></span>自<span class="ff3">Borla<span class="_ _2"></span>nd</span>的<span class="ff3">Ja<span class="_ _2"></span>neva</span>承<span class="_ _2"></span>诺会做同<span class="_ _2"></span>样的事<span class="_ _2"></span>情,但<span class="_ _2"></span>是它既不<span class="_ _2"></span>免</div><div class="t m0 x2 h5 y18 ff1 fs2 fc0 sc0 ls0 ws0">费也不可<span class="_ _2"></span>用(应<span class="_ _2"></span>于<span class="ff3">03</span>年<span class="_ _2"></span>夏季发<span class="_ _2"></span>布)。<span class="ff3"> </span>我们选择<span class="_ _2"></span><span class="ff3">IIOP.N<span class="_ _2"></span>ET</span>是因<span class="_ _2"></span>为它是免<span class="_ _2"></span>费的,<span class="_ _2"></span>当前可<span class="_ _2"></span>用的,并<span class="_ _2"></span>且具有<span class="_ _2"></span>自动生<span class="_ _2"></span>成<span class="ff3">IDL</span>的<span class="_ _2"></span>工具。</div><div class="t m0 x2 h4 y19 ff1 fs1 fc0 sc0 ls0 ws0">示例:<span class="_ _2"></span>访问<span class="_ _2"></span>通用<span class="_ _2"></span>收集<span class="_ _2"></span>服务<span class="_ _6"></span>示例:<span class="_ _2"></span>访问<span class="_ _2"></span>通用<span class="_ _2"></span>收集<span class="_ _2"></span>服务</div><div class="t m0 x2 h5 y1a ff1 fs2 fc0 sc0 ls0 ws0">您的问题<span class="_ _2"></span>:您刚<span class="_ _2"></span>刚使用<span class="_ _2"></span><span class="ff3">.NET</span>实<span class="_ _2"></span>现了一项<span class="_ _2"></span>出色的<span class="_ _2"></span>服务,<span class="_ _2"></span>但是您的<span class="_ _2"></span>客户坚<span class="_ _2"></span>持使用<span class="_ _2"></span><span class="ff3">Java</span>客户<span class="_ _2"></span>端。<span class="_ _2"></span><span class="ff3"> </span>您不<span class="_ _2"></span>能使用<span class="ff3">W<span class="_ _2"></span>ebSer<span class="_ _2"></span>vices</span>,<span class="_ _2"></span>因为</div><div class="t m0 x2 h5 y1b ff1 fs2 fc0 sc0 ls0 ws0">客户端软<span class="_ _2"></span>件需要<span class="_ _2"></span>保留对<span class="_ _2"></span>服务器上<span class="_ _2"></span>单个对<span class="_ _2"></span>象的引<span class="_ _2"></span>用:除非<span class="_ _2"></span>您实现<span class="_ _2"></span>自己的<span class="_ _2"></span>命名服务<span class="_ _2"></span>,租约<span class="_ _2"></span>管理器<span class="_ _2"></span>和分布<span class="_ _2"></span>式垃圾回<span class="_ _2"></span>收,否<span class="_ _2"></span>则使用</div><div class="t m0 x2 h5 y1c ff3 fs2 fc0 sc0 ls0 ws0">WebSe<span class="_ _2"></span>rvices<span class="ff1">不<span class="_ _2"></span>可能做<span class="_ _2"></span>到这一<span class="_ _2"></span>点。</span> <span class="ff1">一种更合<span class="_ _2"></span>适的方<span class="_ _2"></span>法是在</span>J<span class="_ _2"></span>ava<span class="ff1">端使<span class="_ _2"></span>用</span>RMI <span class="_ _2"></span>/ IIOP<span class="ff1">,<span class="_ _2"></span>在</span>.NET<span class="_ _2"></span><span class="ff1">端使用</span>I<span class="_ _2"></span>IOP.NET<span class="_ _2"></span><span class="ff1">。</span></div><div class="t m0 x2 h5 y1d ff1 fs2 fc0 sc0 ls0 ws0">本文是围<span class="_ _2"></span>绕一个<span class="_ _2"></span>简单的<span class="_ _2"></span>示例构建<span class="_ _2"></span>的(<span class="ff3">IIO<span class="_ _2"></span>P.NET<span class="_ _2"></span></span>版本中的<span class="_ _2"></span><span class="ff3">Gene<span class="_ _2"></span>ricColle<span class="_ _2"></span>ction</span>教<span class="_ _2"></span>程:<span class="ff3">.NE<span class="_ _2"></span>T</span>服务器<span class="_ _2"></span>提供对<span class="_ _2"></span>由键<span class="ff3">/</span>值<span class="_ _2"></span>对组成<span class="_ _2"></span>的一组集</div><div class="t m0 x2 h5 y1e ff1 fs2 fc0 sc0 ls0 ws0">合的访问<span class="_ _2"></span>。客户<span class="_ _2"></span>端可以<span class="_ _2"></span>获取一个<span class="_ _2"></span>集合,<span class="_ _2"></span>并通过<span class="_ _2"></span>添加来对<span class="_ _2"></span>其进行<span class="_ _2"></span>修改更<span class="_ _2"></span>多对,或<span class="_ _2"></span>查询它<span class="_ _2"></span>包含的<span class="_ _2"></span>对,这<span class="_ _2"></span>需要客户<span class="_ _2"></span>端保留<span class="_ _2"></span>对服务<span class="_ _2"></span>器上</div><div class="t m0 x2 h5 y1f ff1 fs2 fc0 sc0 ls0 ws0">对象的引<span class="_ _2"></span>用。</div><div class="t m0 x2 h5 y20 ff1 fs2 fc0 sc0 ls0 ws0">为了简单<span class="_ _2"></span>起见,<span class="_ _2"></span>我们将<span class="_ _2"></span>专注于对<span class="_ _2"></span>象分布<span class="_ _2"></span>,并跳<span class="_ _2"></span>过所有与<span class="_ _2"></span>并发相<span class="_ _2"></span>关的问<span class="_ _2"></span>题。</div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>