OMCS开发手册(04) -- 二次开发流程

      在掌握了前面几篇(概述多媒体管理器多媒体连接器多媒体服务器)关于OMCS的详细介绍后,我们就可以正式基于OMCS进行二次开发了。下面我们就从服务端和客户端的角度分别介绍开发的步骤。

一.服务端开发

      抛开具体的业务逻辑而言,就OMCS的服务端的开发而言相当简单。步骤如下所示:

(1)从官网下载 “OMCS多媒体服务器(带源码)”。

(2)使用VS打开OMCS.Server项目,修改其中的UserVerifier类的实现,为VerifyUser方法添加验证客户端用户帐号密码的逻辑。

(3)如果需要使用自定义的主窗体,则实现它。

(4)更改配置文件App.config中的相关配置。

(5)发布项目,部署并运行。

      就像OMCS开发手册(00) -- 概述一文中描述的,OMCS多媒体服务器和实现业务逻辑的应用服务器是相互独立的。

     

      我们也可以在OMCS服务器进程中,集成具体的业务逻辑,将两个进程合并为一个。但是我们并不推荐这样做,因为当负载增加时,还是要将它们分开部署的;而且,分开部署还有一个好处就是避免它们之间相互干扰。

 

二.客户端开发

      相对于OMCS服务器端,客户端开发要稍微复杂一些。

1.基本流程

(1)在项目中添加对OMCS.dll、PaintFramework.dll、ESBasic.dll的引用。如果是WPF应用程序,还需要添加对OMCS.WPF.dll的引用。

(2)将OMCS的连接器组件/控件添加到工具箱中:在VS的工具箱的空白地方右键快捷菜单 => 选择项,在弹出的“选择工具箱项”的窗体上,点击“浏览”按钮,选中OMCS.dll文件,再点击“确定”。

(3)开始编码,调用MultimediaManagerFactory的静态方法GetSingleton获取多媒体管理器单件实例,设置多媒体管理器的属性,并调用其Initialize方法完成初始化。

(4)将连接器组件从工具箱拖到您的窗体或控件的表面。

(5)调用连接器的BeginConnect方法连接到目标多媒体设备,并预定其ConnectEnded事件,以获取连接是否成功的结果。

(6)预定连接器的Disconnected事件,当连接器的连接断开时获取通知并做相关的处理。

(7)当业务逻辑需要挂断连接器,或宿主窗体将被关闭时,需要调用连接器的Disconnect方法,以主动断开到目标多媒体设备的连接。

2.注意事项

      客户端开发时,要特别注意一个问题。如上图“集成OMCS”所示,客户端将有两个连接,一个连接指向OMCS服务器,另一个连接指向应用服务器。那么,客户端在线或不在线的状态以哪个为准了?常用的有两种策略。

(1)以应用服务器的连接为主。

      通常的情况下,客户端的状态以应用服务器的连接为主。比如,当与应用服务器的连接断开时,客户端就显示为“不在线”,当与应用服务器连接成功时,客户端就显示“在线”。

      如果采用这种策略,那么在编程时,通常会在客户端成功登录了应用服务器之后,才去连接OMCS服务器(即调用IMultimediaManager的Initialize方法),这样就可能存在一个时间间隙 -- 即应用服务器已经连接成功,而OMCS服务器还未连接。

      这个间隙的存在又可能会引发新的状况:如果在这个间隙,其它Guest要访问当前客户端的多媒体设备,就会返回TargetUserOffline的结果而连接失败。发生这种情况时,作为guest的客户端用户就会很纳闷:明明看到对方已经上线了,然而,连接对方的多媒体设备,却返回TargetUserOffline,是怎么回事了?针对这种新的状况,我们可以将连接器的WaitOwnerOnlineSpanInSecs属性设为一个稍大的值,比如10秒,以等待作为Owner的客户端的多媒体管理器初始化成功。

(2)兼顾应用服务器连接与多媒体服务器的连接

      我们也可以使用更保险的策略,即只有应用服务器的连接和多媒体服务器的连接都正常时,客户端才显示为“在线”状态。只要其中一个连接断开时,  客户端就显示为“不在线”的状态。这样,就不会出现上面因存在状态不同步的间隙而出现的状况了。 

      策略(1)和(2)各有优劣。使用策略(1),客户端的登录会快一些,但是会有两个连接状态不一致而出现的种种问题;策略(2)不会出现连接不一致的问题,但是登录就会慢一些,因为要两个连接都成功,且多媒体管理器初始化完成才算进入“在线”状态。  

      除这两个常用的策略之外,我们也可以根据项目的具体需求,采用更适合自己的方案。

 

      基于OMCS的二次开发的流程以及要注意的地方,就是这些了,非常简单,不是吗。接下来了,我们可以参考各个OMCS的demo的源码来更深入了解上述的流程。

 

阅读 更多OMCS开发手册系列文章   

-----------------------------------------------------------------------------------------------------------------------------------------------  

下载免费版本的OMCS以及 demo源码

关于OMCS的任何问题,欢迎联系我们:   

电话:027-87638960   

Q Q:168757008 

posted on 2012-05-11 10:43  傲瑞中国  阅读(933)  评论(0编辑  收藏  举报

导航