即时通讯客户端AddIn框架1

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(点对点)的模式,可适用于嵌入音频、视频、投票、游戏等等功能。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

原理

AddIn技术功能的提出:

扫描二维码关注公众号,回复: 3169061 查看本文章

在主程序开发完成的基础上,自由的添加新功能,甚至还是未知的功能。

 

传统插件技术的不足:

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中所有功能。

目前分成2Root接口,一个用于文件类传输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               函数返回提示。

猜你喜欢

转载自blog.csdn.net/hellowithsmile/article/details/26631