Microsoft ActiveSync是如何封装底层的不同连接?
根据ActiveSync帮助文档中的描述,ActiveSync可支持多种与Windows Moblie设备连接的方式:
o USB cable(USB线)
o Serial cable(串口线)
o Infrared(红外线)
o Bluetooth(蓝牙)
o Network(计算机网络)
也就是说,只要在PC与设备之间建立上述任何一种连接,就可以进行PC和设备间的数据交换了。
PC端管理Windows Moblie设备是通过RAPI来实现的,RAPI是MS专门为PC远程管理设备而制定的API,这些API实际上是RPC调用的封装。
问题就来了
1)RAPI是RPC,而RPC是基于tcp/ip网络socket的应用,即没有tcp/ip协议栈,RAPI是无法work的?
2)如果RAPI基于tcp/ip的,那么ActiveSync是如何建立PC与设备之间的tcp/ip的连接,而不论底层的物理连接是什么?可能的方案是,为每一种物理连接添加一个tcp/ip适配层(驱动),屏蔽tcp/ip的传输层。传统上,tcp/ip的传输层是网卡+网线或WiFi,而这个适配层要做的工作是将传输层改为上述任一可用的连接。对于USB连接,这个适配层可能是一个驱动,安装ActiveSync时也发现最后会更新USB驱动。
3)如果不需要建立tcp/ip连接,那么RPC是基于何种连接上实现RPC调用的?
对于这几个问题非常困惑,望指教。先谢过了。
[解决办法]
感觉真的很复杂,帮顶了。
关注,学习。
[解决办法]
看来WM要学习的东西还有很多,帮顶了。
[解决办法]
多思考是好习惯,支持一下。
在TCP/IP 的5层结构中,不同物理层链和路层的支持可以封装成不同的 SP(Service Provider), 这些 SP 共享同一标准接口 (SPI), 向上层提供服务。
按照这样的设计,不管一层和二层走的是怎么样的物理链路,是要有相应的SP,就可以支撑上层的 TCP/IP 应用。(为了把问题说明白,这里借用了SP这个术语)
对于楼主的问题,个人认为:
1. RAPI 同样是基于 TCP/IP 的
2. 以上列举的各种链接方式,已经有对应的SP集成在系统当中(很有可能是 DLL,但肯定不是首次链接 WM 设备时装的驱动)
3. 问题的关键在于,就算不是通过Ethernet(802.1)或 WIFI (802.11)定义的链路和物理层,只要开发出对应的 SP , 使得其能够通过 SPI 提供上层(网络层)所需要的服务,也同样可以在其他几种物理链接之上建立起 TCP/IP 网络连接的。
希望能回到你的问题。
在 ActiveSync 连接下, 对于PC和移动设备之间的寻址问题,本人有一些想法,有兴趣再作进一步交流。
[解决办法]
恩,同意~~~
研究USB的连接可以抓一下169.254.2.1(手机)与PC之间的包,比较直观~~~
其他介质没怎么接触过~~~