1.Build a root com.Export some Interface;
2.Build a Client Exe to use the Root com;
3.Build a sub com to implement the Interface;
just Test......
content
to be continue.....
使用COM开发技术,实现即时通讯的AddIn插件,可以在客户端开发完成的情况下,自由的嵌入其他功能,不用做附加的客户端和服务端的源码修改功能。
主要针对于客户端的P2P(点对点)的模式,可适用于嵌入音频、视频、投票、游戏等等功能。
AddIn技术功能的提出:
在主程序开发完成的基础上,自由的添加新功能,甚至还是未知的功能。
传统插件技术的不足:
1. 传统的模式是于动态库的形式进行硬升级,如果函数入口变化,必须重新编译主程序。
2. 传统动态库模式,函数入口不变,只能实现一个功能的添加,不同功能共存和自由添加删建较困难。
3. 传统动态库模式开发必须符合c++模式,相对不够灵活,用户自主开发较难
大致实现原理:
1. 实现一个Root COM dll,开放需重用的功能接口。
2. 在使用AddIn的主程序中调用Root COM,遍历所有子接口列表,一般存在在特定的注册表项中,并调用相应的功能接口。
3. 发布主程序后,AddIn开发者从Root COM继承,开发新功能的COM dll,并更新Root COM的子接口列表。并实现功能接口。
重点定义Root的可重用功能接口;
1. 封装所有网络传输的功能模块A,其实现方法不包含在本文档结构中,内置AddIn协议。该模块大致提供:
(1).普通函数功能:初始化,发送数据,关闭;
(2).回调功能,接收数据,异常断开;
2. Root接口中可以直接调用A中所有功能。
目前分成2个Root接口,一个用于文件类传输IF,一个用于交互命令类文件传输IC。考虑使用统一Root接口实现。
3. 由统一的EventSink进行回调
Root接口:
HRESULT Init( BSTR sid, BSTR Info, [out, retval]long *pRet );
功能描述: 用于初始化Root接口对象。
参数:
sid 本事务的guid,用于唯一标识。
Info 自定义信息,由用户定制。可使用XML方式。
pRet 函数返回提示。
HRESULT Close( [out, retval] long *pRet )
功能描述: 用于关闭Root接口对象。
参数:
pRet 函数返回提示。
HRESULT Send( BSTR Info,[out, retval] long *pRet )
功能描述: 用于发送信息。
参数:
info 发送信息的内容。
pRet 函数返回提示。
HRESULT Do( BSTR Info,[out, retval] long *pRet )
功能描述: 用于接收到Info消息后的简单处理。
参数:
info 收到信息的内容。
pRet 函数返回提示。