This commit is contained in:
2
net.html
2
net.html
@@ -656,7 +656,7 @@
|
||||
<tr><td>结果码</td><td style="text-align: center;">4</td><td>请求方的值固定为0,响应方的值视为错误码,为0表示成功,非0为失败。</td></tr>
|
||||
</table>
|
||||
<p>
|
||||
包体数据结构为 ([参数序号][参数BSON值])* N + [0][结果对象BSON]。 其中参数序号从1开始,只有当Service的方法存在<a href="service.html#service_dyncall" target="_blank">@DynCall回调</a>才会有参数<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>,序号为0表示为结果对象的<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>。若方法为<font color="blue">void</font>返回类型,则不存在结果对象<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>。
|
||||
包体数据结构为 ([参数序号][参数BSON值])* N + [0][结果对象BSON]。 其中参数序号从1开始,只有当Service的方法存在<a href="service.html#service_dyncall" target="_blank">@RpcCall回调</a>才会有参数<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>,序号为0表示为结果对象的<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>。若方法为<font color="blue">void</font>返回类型,则不存在结果对象<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>。
|
||||
</p>
|
||||
|
||||
<h3><a id="net_diy" class="anchor" href="#" aria-hidden="true"></a>自定义协议</h3>
|
||||
|
||||
12
service.html
12
service.html
@@ -240,15 +240,15 @@
|
||||
</pre></div>
|
||||
<p> 由以上代码可以看出来,远程模式Service是根据本地模式Service临时类动态生成的。远程类执行方法时通过SNCP协议将参数序列化并带上当前方法信息传输到远程服务器上,执行完后将结果流反序列化并返回, 其流程与WebService类似。</p>
|
||||
|
||||
<p id="service_dyncall"> <b>远程模式的@DynCall回调</b> </p>
|
||||
<p id="service_dyncall"> <b>远程模式的@RpcCall回调</b> </p>
|
||||
<p> 与WebService的区别除了更具性能的二进制的数据格式,更差异的是远程模式的Service允许修改参数本身的内容。范例如下:</p>
|
||||
<div class="highlight"><pre><span class="cm">/**</span>
|
||||
<span class="cm"> * 由于该方法在处理过程中修改了参数bean的内容,为了保证本地模式与远程模式的一致性,需要提供@DynCall回调接口</span>
|
||||
<span class="cm"> * 由于该方法在处理过程中修改了参数bean的内容,为了保证本地模式与远程模式的一致性,需要提供@RpcCall回调接口</span>
|
||||
<span class="cm"> *</span>
|
||||
<span class="cm"> * @param bean</span>
|
||||
<span class="cm"> * @return</span>
|
||||
<span class="cm"> */</span>
|
||||
<span class="kd">public</span> <span class="n">RetResult</span><span class="o"><</span><span class="n">UserInfo</span><span class="o">></span> <span class="nf">login</span><span class="o">(</span><span class="nd">@DynCall</span><span class="o">(</span><span class="n">DynCallLoginBeanAttribute</span><span class="o">.</span><span class="k">class</span><span class="o">)</span> <span class="n">LoginBean</span> <span class="n">bean</span><span class="o">)</span> <span class="o">{</span>
|
||||
<span class="kd">public</span> <span class="n">RetResult</span><span class="o"><</span><span class="n">UserInfo</span><span class="o">></span> <span class="nf">login</span><span class="o">(</span><span class="nd">@RpcCall</span><span class="o">(</span><span class="n">RpcCallLoginBeanAttribute</span><span class="o">.</span><span class="k">class</span><span class="o">)</span> <span class="n">LoginBean</span> <span class="n">bean</span><span class="o">)</span> <span class="o">{</span>
|
||||
<span class="n">bean</span><span class="o">.</span><span class="na">setLogintime</span><span class="o">(</span><span class="n">System</span><span class="o">.</span><span class="na">currentTimeMillis</span><span class="o">());</span>
|
||||
<span class="n">bean</span><span class="o">.</span><span class="na">setSessionid</span><span class="o">(</span><span class="s">"SID"</span> <span class="o">+</span> <span class="n">System</span><span class="o">.</span><span class="na">currentTimeMillis</span><span class="o">());</span>
|
||||
<span class="c1">// 登陆逻辑</span>
|
||||
@@ -257,8 +257,8 @@
|
||||
|
||||
|
||||
|
||||
<span class="cm">/** DynCallLoginBeanAttribute 的实现 **/</span>
|
||||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">DynCallLoginBeanAttribute</span> <span class="kd">implements</span> <span class="n">Attribute</span><span class="o"><</span><span class="n">LoginBean</span><span class="o">,</span> <span class="n">Object</span><span class="o">[]></span> <span class="o">{</span>
|
||||
<span class="cm">/** RpcCallLoginBeanAttribute 的实现 **/</span>
|
||||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">RpcCallLoginBeanAttribute</span> <span class="kd">implements</span> <span class="n">Attribute</span><span class="o"><</span><span class="n">LoginBean</span><span class="o">,</span> <span class="n">Object</span><span class="o">[]></span> <span class="o">{</span>
|
||||
|
||||
<span class="nd">@Override</span>
|
||||
<span class="kd">public</span> <span class="n">Object</span><span class="o">[]</span> <span class="nf">get</span><span class="o">(</span><span class="n">LoginBean</span> <span class="n">obj</span><span class="o">)</span> <span class="o">{</span>
|
||||
@@ -287,7 +287,7 @@
|
||||
<span class="o">}</span>
|
||||
<span class="o">}</span>
|
||||
</pre></div>
|
||||
<p> 生成远程模式Service时发现参数带有@DynCall注解的方法,在远程调用返回结果时会进行回调处理。</p>
|
||||
<p> 生成远程模式Service时发现参数带有@RpcCall注解的方法,在远程调用返回结果时会进行回调处理。</p>
|
||||
|
||||
|
||||
<footer class="site-footer">
|
||||
|
||||
Reference in New Issue
Block a user