前一段时间写了一个自动生成元数据的小工具, 可以和界面StringGrid和控件自动绑定,实现数据集的效果,而且在客户端完全放弃了数据集, 使用纯对象, 自己觉得还算不错. 然而在传输的时候, 我又想使用RemObject支持序列化的功能. 这个问题如何解决呢?
后来我想摸索之后发现, 可以通过下面的方法来进行改进.
1. RemObject的工程改为普通工程, 把定义的元数据分离出来, 在interface下面uses一下.
2. 如果直接传递对象, 接口和代码怎么解决? (因为分离了元数据对象单元,所以编译的时候,不会生成代码. 解决问题的办法在于,RPCServerLibrary. Rodl文件. 正是因为这个文件,所以RemObjects Service Builder 自动生成代码根据其XML文件进行解析,最后生成代码.
3. 方法定义的地方:
<Operation Name="GetPerson" UID="{B39EB743-BFBD-461B-B7CA-E6099E7C6BAC}">
<Parameters>
<Parameter Name="Result" DataType="Person" Flag="Result">
</Parameter>
</Parameters>
</Operation>
4. 结构体定义的地方:
<Structs>
<Struct Name="person" UID="{8F16C438-213F-4818-97DC-30446F45D21E}" AutoCreateParams="1">
<Elements>
<Element Name="id" DataType="String">
</Element>
<Element Name="name" DataType="String">
</Element>
<Element Name="age" DataType="Integer">
</Element>
</Elements>
</Struct>
</Structs>
有了上面的描述, 你应该想到怎么办了吧,对,就是在这里动手,前面我们不是自己做过动态生成元数据代码吗? 现在只要在其中修改这个RODL文件, 把元数据和方法加进去, 然后编译的时候,RemObjects Service Builder 就会自动帮我们生成代码了.
最后,我们把inter文件(自动生成)改一下.删除元数据的声明,建一个新的工程,把所有代码拷进去.呵呵,大功告成.
Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1516038