远程调用技术代码追踪之 Webservice(一)
最近阅读了 SocketConn 的源码和 WebService 的源码,把追踪的过程写了下来,方便大家学习。
毕竟这需要精力,时间和毅力。感谢煮茶待英雄博志区和三层数据库讨论区兄弟们的支持,特别
是 julian 兄弟,不是他,我可能没耐心继续下去。如果有时间,大家可以继续完善。从 socket
和 Websevice 的底层实现细节,我们发现 BORLAND 的工程师们的构思和实现的过程。我觉得这对
我们的学习应该是非常重要的。学会思考。学会读源码,学会分析。
希望和我交往的朋友可通过 QQ 或 Email 联系我。 117
18111 另见:《远程调用技术代码追踪(socket) 》
《远程调用技术代码追踪(第三方控件) 》
webservice 内部工作机制比较复杂,有些地方分析错误在所难免。加上时间关系,比较匆忙。
有错误的地方,请斧正。学习不密闭。有些地方贴了些图片。不好贴上来,所以不是很完整,有
需要的,可以 QQ,或者 MAIL 联系我。
远程调用技术内幕
有关 WebService 的相关的知识,我就不说了,我直接分析源码。有问题的地方请参考李维的书。
initialization
(TypeInfo(IMyFirstWS), 'urn:MyFirstWSIntf-IMyFirstWS', 'utf-8');
看过李维的分布式架构的应该都知道,WEB 服务端对类和接口进行了注册,客户端这里也进行了
注册。然后客户端把数据通过 HTTP 传输到服务器端,服务器端通过拆包,去到注册管理的类中
寻找相应的接口,并创建一个相应的对象,把客户端的数据压进去,调用后,把数据再传回来。
在调用这句的时候,TinvokableClassRegistry 类已经创建了,由于 inquire_v1 也引用了 InvReg
istry 注册,所以在哪里被引用的时候已经被创建了。
function InvRegistry: TInvokableClassRegistry;
begin
if not Assigned(InvRegistryV) then
评论0
最新资源