.net架构与TAO架构跨越边界的实现的比较

来源:互联网 发布:app自动签到软件 编辑:程序博客网 时间:2024/05/08 04:32

 

昨天看了那篇关于架构的文章之后,我突然就对架构与架构之间的共性有了兴趣,左右闲着也是闲着晚上就翻了代码来看看.net架构与TAO架构跨越边界的异同,现代的架构都肯定能跨越物理边界的,TAO是ORB架构这是分内的事,.net也要无缝调用,因此本质上它们都要做一样的事情,就是用t用tcp/ip传递报文。。。。

首先它们总的都marshall其数据,两者把要传递的引用或者实例给写到内存流中转到消息里,写好header后两者实现的函数分别是

TAO:TAO_Server_Request.cpp

void
TAO_ServerRequest::init_reply (void)


 .NET:              

class System.IO.MemoryStream/* 02000329 */
        SerializeMessage(class System.Runtime.Remoting.Messaging.IMessage/* 020003D7 */ msg) cil managed
                

然后两者都要有实际发送数据流的函数或者方法:

.Net:

instance class System.Runtime.Remoting.Messaging.IMessage/* 020003D7 */
        SyncProcessMessage(class System.Runtime.Remoting.Messaging.IMessage/* 020003D7 */ reqMsg) cil managed

TAO:TAO_Server_Request.cpp

 void
TAO_ServerRequest::send_no_exception_reply (void)

监听而言就有点儿稍微不同,.Net叫IIS帮忙然后再回调到CrossAppDomainSink来,TAO却是有个IIOP_Connection_Handler.cpp里的

int
TAO_IIOP_Connection_Handler::open (void*)函数,使用了ACE的reactor框架。。。。

来打开链接。

但是至少思路是一样的,至少。。

我突然想要是把TAO拿来写个几个COM风格的接口来包装到一个dll里一下,然后导入到托管代码中,作为crossDomainsink的

一种实现好像也不是很疯狂的事情,毕竟ECMA规范里定义好了数据的格式,实现就模棱两可。。。嘿嘿这样的话就是在外观层面的功能性重用了吧,不过这样就损坏了所谓的架构完整性,可能。。至少对.net而言。。话说回来折腾这么多干吗呢。