XproerIM2动态
更新时间:
Google下载地址(VC6):http://code.google.com/p/xproerim/downloads/list
Google下载地址(VC2008):http://code.google.com/p/xproerim/downloads/detail?name=XproerIM9.rar&can=2&q=#makechanges
项目介绍:http://topic.csdn.net/u/20090914/09/4d01f978-c711-4fbc-b6ec-e9fca1833eac.html
首先需要说明的一点就是XproerIM2的进度不会很快,可能会有一点慢,毕竟现在还在工作,所以只能在空余的时间里进行开发和完善,当然还有一些个人的杂事,希望各位朋友也能理解一下。
预计明年中期将会发布XproerIM2的V1.0版。因为与第一版XproerIM相比XproerIM2做了许多的改进,其中有三个方面改进最大,一是从MFC转到WTL框架,二是使用三层构架,三是升级XproerUI界面库。
第一版的XproerIM是使用的MFC框架,在VC6下面还好一点,但是转到VC2008平台中是发现基于MFC的应用程序太大了,而且布署也不是很方便,所以就转到了WTL平台。当然有一部分原因是XproerUI界面库的一些控件也是基于WTL的。另外一点是由于在项目中大量使用DirectUI控件,没有使用MFC的控件所以就没必要再使用MFC框架了。不过我个人认为在做客户端方面的程序使用WTL框架还是有许多优势的,比如WTL里面的消息映射要比MFC直观,好用一些,代码也比较简洁。
在XproerIM2中重新设计了整个项目的构架,采用了比较通用也比较熟悉的三层构架模式。之所以选择三层构架做为项止的构架是因为使用这种模式的项目比较多,而且熟悉三层构架的开发人员也比较多,当然个人认为最主要是比较适合这个项目。使用这种设计模式带来的最大的好处就是方便后续的开发。就XproerIM产品本身来讲他不可能仅仅只局限于简单的文字聊天功能,未来也将会提供IM的一些必备的功能,比如视频,语音,文件传输等。这些功能对系统的扩展性要求是比较高的,如果没有一个好的构架,后期再做这些工作将不会是一个很容易折事情。而三层构架方式将会为这么多的功能提供一个比较好的代码管理方式,如果以后有其它开发人员需要扩展XproerIM的业务逻辑的话,也将会方便许多。
虽然在VC6版的XproerIM中也对一些功能和模块进行了划分,但是只是目录级别上面的划分,还不够彻底。在XproerIM2中对模块的分类是建立在库级别上的,不同的模块以LIB的方式来链接。本来是打算使用DLL的,但是考虑到除了XproerUI库会在其它项目中应用,其它的模块只在XproerIM2项目中使用,所以就只用LIB库来写。
在UI方面的改进主要是增加了一些基于DirectUI技术编写的控件,比如滚动条,普通的列表控件,还有主对话框的联系人分组。其中优化这些控件的效率占用了大量的时间。
考虑到未来许多企业可能需要自定义IM的风格和界面,所以花了一些时间增加了对XML的支持。XML的特性是这一版的一个核心功能。因为XML使控件实现了可配置的设计。也就是企业换界面皮肤变得非常简单,如果需要修改按钮图片,窗口背景,还有控件上面的文字颜色,只需要修改一下XML配置文件就可以了,不需要再重新编译整个项目。
一下子增加这么多的功能对我个人来讲也是一个考验,毕竟代码量增加了许多。而且同时还需要保证代码质量和稳定性。所以进度真的不快。
构架截图:
XproerIM2的构架如下:
AppBiz
业务逻辑层。主要负责提供整个项目的业务逻辑处理流程。
AppData
数据层。主要负责为整个项目的数据提供存取服务。
AppUtils
通用工具库。提供常用的模块。
AppMain
项目主程序。提供用户的交互。
AppUI(XproerUI)
XproerUI库。提供基于DirectUI的控件。
UI
在XproerIM2(以下简称IM2)中,UI有了革命性的变化。在IM2中开发人员不需要再为每一个控件的创建编写代码了,因为XproerUI已经封装了控件的动态创建功能,开发人员只需要编写XML文件即可实现炫丽的界面。
与MFC构架的程序相比,XproerUI有着更高的性能,更灵活的扩展性。例如在GroupTree和ListBox控件中,XproerUI并不会将控件中的所有子元素都绘制出来,而只绘制当前显示的元素。ListView控件也一样。如果开发人员需要对ListBox和ListView进行扩展,或者增加一些自定义的控件,开发人员只需要继承这些控件的元素项,比如ListBoxItem,然后重新实现OnPaint函数即可,与MFC相比,层次更清晰。
借助于XproerUI,开发人员能够更容易的发挥自已的创意,更加方便的提高用户体验。因为XproerUI将界面分离出来,并由XML来定义,这样无论是更换控件的背景图片还是改变控件的位置和大小都将变得非常的容易,更重要的是在进行这些改变后不需要编译工程。
目前XproerUI对图片和XML配置文件进行了管理。开发人员可以借助于ImageManager非常方便的获取图片资源。开发人员将所有的资源图片放在统一的文件夹中,然后通过ImageManager来进行统一管理,这样从根本上杜绝了资源混乱的问题。虽然目前XproerUI是将图片放在文件夹中,但是开发人员可以修改ImageManager接口,来根据不同的情况定义和管理资源,比如将图片资源放在RC资源文件中,或者放在一个ZIP文件中。
构架
XproerIM系统构架是采用三层构架来进行的。在项目的设计初期我将大部分时间花在了设计的完善方面。现在整个项目的层次一目了然,非常清晰,为后期的完善和扩展打下了坚实的基础。
借助于全新的构架,开发人员可以将更多的精力放在业务逻辑和用户体验方面,而不是纠结于如何创建控件,如何实现特效效果,如何替换图片。
在XproerIM2中采用了全新的UI引擎(XproerUI)来提高界面品质。目前在XproerUI中除EDIT控件以外的控件都采用了DirectUI技术来实现。这样做的目的是为了提高界面的绘制性能。与传统基于MFC构架的界面相比,XproerUI占用的内存更少,每一个控件都具有可配置性,控件的绘制效率更高,可包含一些特效。
为了减少界面开发的时间,我在XproerUI中控件增加了对XML的支持。这样使得所有的窗口都可以从一个XML文件中加载。这样不仅提高开发效率,同时对界面的细节调整也更加的方便。比如对控件样式的调整,更换控件背景图片,或者调整控件的相对位置,都不需要重新编译工程。