This commit is contained in:
Redkale
2016-10-10 19:20:38 +08:00
parent d20f8582d4
commit 35717edc74
2 changed files with 7 additions and 7 deletions

View File

@@ -656,7 +656,7 @@
<tr><td>结果码</td><td style="text-align: center;">4</td><td>请求方的值固定为0响应方的值视为错误码为0表示成功非0为失败。</td></tr>
</table>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;包体数据结构为 ([参数序号][参数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>
&nbsp;&nbsp;&nbsp;&nbsp;包体数据结构为 ([参数序号][参数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>

View File

@@ -240,15 +240,15 @@
</pre></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由以上代码可以看出来远程模式Service是根据本地模式Service临时类动态生成的。远程类执行方法时通过SNCP协议将参数序列化并带上当前方法信息传输到远程服务器上执行完后将结果流反序列化并返回, 其流程与WebService类似。</p>
<p id="service_dyncall">&nbsp;&nbsp;<b>远程模式的@DynCall回调</b> </p>
<p id="service_dyncall">&nbsp;&nbsp;<b>远程模式的@RpcCall回调</b> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;与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">&lt;</span><span class="n">UserInfo</span><span class="o">&gt;</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">&lt;</span><span class="n">UserInfo</span><span class="o">&gt;</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">&quot;SID&quot;</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">&lt;</span><span class="n">LoginBean</span><span class="o">,</span> <span class="n">Object</span><span class="o">[]&gt;</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">&lt;</span><span class="n">LoginBean</span><span class="o">,</span> <span class="n">Object</span><span class="o">[]&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;生成远程模式Service时发现参数带有@DynCall注解的方法在远程调用返回结果时会进行回调处理。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;生成远程模式Service时发现参数带有@RpcCall注解的方法在远程调用返回结果时会进行回调处理。</p>
<footer class="site-footer">