材 料 清 单
一、毕业论文
二、毕业设计任务书
三、毕业设计开题申请表
四、毕业设计开题报告正文
企业级即时通信系统的开源解决方案
专业:信息与计算科学 学号:05125071
指导老师:徐小萍
摘要:本文着重分析了开源产品在构建企业级即时通信中的优势及作用,并提出其开源解决方案,本文主要从如下方面详细研究了该解决方案。首先,分析企业级即时通信的需求、特点及国内外现状.第二,简要描述开源文化及开源技术的特点及作用,并结合企业级即时通信进行需求分析。第三,从软件工程角度,对该开源解决方案进行需求分析、系统分析、详细分析以及应用实施介绍。第四,从企业级即时通信与办公OA整合、即时通讯与WEB应用整合方面对即时通讯系统的应用作了简单扩展。最后,展示了利用开源技术所实现的产品效果,即本文的开源解决方案(Java + Smack API + Openfire + MySQL)。全文以构建企业级即时通讯工具为骨架,穿插着XMPP、Openfire和MySQL等多种开源产品。从中可见开源产品怎样活化一个企业级应用,并付予安全性、可靠性及实用性。
关键词:企业级即时通信;开源解决方案;XMPP协议;开源产品; 开源技术
I
The Open-Source solution of Enterprise Instant Messaging System
Speciality: Information and Computing Science Name: Lin ZiGuan Student ID: 05125071 Advisor: Xu xiaoping
Abstract: This article mainly analyses the advantage and effect of open-source products in constructing enterprise instant messaging, and proposes open-source solutions. The research of the article is divided into four groups as follows. Firstly, the article analyzes the requirement, characteristic of enterprise instant messaging, and the present domestic and international state。 Secondly, the article describes the characteristic and function of open-source culture and technology。 Thirdly, in the sight of software engineering, this article provides demand analysis, systematic analysis, detailed analysis and introduce of application and practice to the open—source solution. Fourthly, this application of instant message program is expanded to integrate enterprise instant message program with OA system or web application. At last, we show the product effect with open-source technology, i.e。, Java + Smack API + Openfire + MySQL。 All around the article, the research uses the open—source solution of Enterprise Instant messaging System as paramount, and intersperses with a variety of open-source products. We can see how open—source produce makes an enterprise-level application lively, and is entrusted security, reliability and practicability.
Key words: Enterprise Instant Messaging System; Open—Source solution; XMPP protocol; Open-source product; Open-source technology
II
目 录
1 引言…………………………………………………………………………………………… 1 2 开源环境与企业应用的结合…………………………………………………………… 2 2.1 企业应用的需求及特点………………………………………………………… 2 2。2 开源软件的现状…………………………………………………………………… 3 2.3 企业应用与开源软件的磨合 …………………………………………………… 4 3 企业级即时通讯 …………………………………………………………………………… 6 3.1 企业是否需要即时通讯工具 …………………………………………………… 6 3。2 商业化解决方案…………………………………………………………………… 7 3。3 新的选择--开源解决方案 …………………………………………………… 7 4 需求分析……………………………………………………………………………………… 9 4.1 与传统IM相近的功能 …………………………………………………………… 9 4。2 IM的企业特色……………………………………………………………………… 9
4.3 需求总结……………………………………………………………………………10 5 系统分析…………………………………………………………………………………… 11 5。1 整体框架……………………………………………………………………………11 5.2 客户端框架………………………………………………………………………… 13 5.3 服务端框架………………………………………………………………………… 13 6 详细设计…………………………………………………………………………………… 14 6.1 开发语言及开发平台 …………………………………………………………… 14 6.2 XMPP协议……………………………………………………………………………15 6。3 服务端的设计……………………………………………………………………… 18 6.4 工程实施及交付使用…………………………………………………………… 23 7 设计展示…………………………………………………………………………………… 24 7.1 登录界面 ……………………………………………………………………………24 7。2 群组聊天 ……………………………………………………………………………24 7.3 文件传输 ……………………………………………………………………………24 7.4 个人信息 ……………………………………………………………………………26 8 补充及扩展………………………………………………………………………………… 27 8.1 与办公OA整合 ……………………………………………………………………27 8。2 整合到WEB应用……………………………………………………………………27 9 小结……………………………………………………………………………………………28 参考文献 ……………………………………………………………………………………… 29 致谢………………………………………………………………………………………………31
1 引言
1988年芬兰人Jarkko Oikarinen发明了一种网络聊天协议IRC(Internet Relay Chat),该协议仅支持文本聊天。1996年第一个即时通信产品ICQ诞生,即时通信的技术和功能开始基本成型[1][2]。到现在,已有上百种即时通信工具在网络中互联(比如,国内流行的个人聊天工具腾讯QQ,国外的MSN等[3])。这些集娱乐、共享、协作于一身的即时通信工具,其意义已远远超出单纯的文字通信.不管是个人用户使用,还是企业用户使用,即时通信工具都是维护良好的人际关系网、共享协作、信息交流的有力工具。
但在早期,很多企事业单位都将个人聊天工具作为日常办公的交流工具,而不注重其特殊的企业级功能。但随着企事业单位的规模日益扩大,他们对办公软件的安全性、交互性,以及其企业文化内涵有了更高的要求。因此专门针对企事业单位的办公软件如雨后春笋般地发展起来,如著名的办公软件WPS、MS OFFICE。与此同时,企业级即时通信工具也受到用户的青睬,但往往由于成本问题而不被列入采购范围[4]。于是,人们努力地寻找着在商业产品以外的更好的解决方案。
[4]
从1984年Richard Stallman发起GNU和Free Software Foundation计划
开始,开放源代码(简称:开源)这一概念不停地颠覆人们的认识。譬如MySQL开源数库已被全球约5,000家企业采用,Jboss开源服务器的应用比例也在一直攀升,市场占率由2003年的9%上涨至2004年的35%。1997年夏,制作《泰坦尼克号》所用的160台Alpha图形工作站中,有105台采用了--Linux操作系统[5].在国内,上海交通大学校利用开源软件建立起多点视频会议系统,并得到了广泛的应用[6]。
开源概念渐渐地影响着我们的生活和生产活动,它的出现以及成长过程让我们思考着以下几个问题:
为什么市场需要“开源\"? 开源给我们带来什么? 我们能为开源做些什么?
带着以上问题,本文以构建企业级即时通信系统为例,向用户展现开源的魅力。从需求分析到交付使用,全文穿插着多种开源产品。本文力求向用户传递一种信息——开源不仅仅为我们提供了产品及源代码,更提供了新的解决方案.
1
2 开源环境与企业应用的结合
2.1 企业应用的需求及特点
为提高企业办事效率,降低企业办公成本,大部分企业都进行了办公自动化(简称:OA——Office Automation)改革,主动优化办公环境。即尽可能充分利用电子技术资源与信息资源,提供日常办公的各项功能[7]。其中包括,精简业务流程、完善协作环境、提高信息流通速度、促进管理信息化、节省日常开支。常见的有:办公OA、ERP、CRM、电子政务、B2B、B2C等。目前国内至力于企业应用的公司有:用友、金蝶、速达[8](图1)等企业。
图1 速达ERP软件
总的来说,企业级应用具有以下特点[9]: (1)数据持久化(Persistent data )
企业级应用需要持久保存数据。比如客户信息、员工信息、帐务信息等。这些数据对企业的的正常运行起着至关重要的作用。在一般的应用中,数据库是数据保存、更新、查找的有利工具,其地位更是必不可少。
(2)海量数据的存储
一般来说,企业级应用包含的数据量是巨大的。一个中型的系统就会包含超过1GB的数据量一一被组织成数万条记录。管理这些数据就成为这个系统的主要部分。现代的系统经常使用关系型数据库。
2
(3)数据的并发访问
多用户并发地存取数据是企业级应用的常见情况.对很多系统来说,使用人员可能不到百人,但是对于基于Internet的Web系统来说,使用者的递增速率是几何级的.
(4)大量的用户图形界面
为了应付日益庞大的数据量,大量的UI界面被投入使用。普通用户与专业用户的习惯差异很大,他们很少有技术层面的专长.为了满足不同的需求,数据的表现形式也是千差万别的。
(5)需要和其它应用集成
企业级应用并不是信息孤岛,它们经常需要和遍布在企业角落的其它企业级应用集成在一起。
(6)复杂的业务逻辑
业务逻辑是由企业根据自身的需要制定的业务规则决定的.有时候规则会很随意,看上去似乎没有任何的逻辑。企业往往有自己特定的需求,特殊的情况。这些层出不穷的特例导致了业务的复杂性,无逻辑性,使得商业软件的开发十分困难。
为解决以上问题,各企业会选择较为成熟的技术以及生产单位,以构建一个稳建的信息化平台。因此新技术以及新产品的推广并不是很顺利的,开源软件实际应用更是如此。 2.2 开源软件的现状
简单地说,开源/自由程序是一种这样的程序:它们充分地允许用户自由地运行、研究和修改程序,以及传播原始的或经过修改的程序(而不需要支付权利金给原开发者)[10]。
开源软件以自由、开放、安全、协同,具备广泛支持著称。经过多年的发展,开源软件也像商业软件那样,形成了成熟的解决方案。因此,近年来更多的个人用户及企业用户开始把开源软件投入到生活和生产应用中。据Infoq报道[11],开源调查中心(OSC)近日发布了一份报告,报告显示了开源软件在世界各地、各企业中的使用情况.政府和金融服务公司对开源软件的使用名列前茅;与其他国家(包括美国)相比,欧洲则更多地使用了开源软件。OSC在为期六个月的时间里,收集了企业计算机所使用的开源软件包的相关信息,他们发现在被检测的两
3
千多台机器上有多于三十万种的开源软件包.平均而言,政府机构在每台机器上安装了123个不同的开源软件包;金融服务公司在每台机器上安装了117个不同的包。
2.3 企业应用与开源软件的磨合
企业环境常关注相关应用的成本效益、性能及安全问题。
在成本方面,企业只需支付低廉的使用费或免费使用.如表2。1所示某企业的配选方案.相比之下,仅一套正版window xp操作系统, 家庭版199美元,专业版299美元.
在安全性方面,不管在商业产品上,还是在开源产品上,安全性都颇受争议。显然,世界上没有十全十美的强功能、高安全的软件.但是,开源产品的BUG能在开源社区很快地被发现。
表格 2.1 开源环境解决方案[12] 应用类别 操作系统 Web服务器 数据库 办公套件 电子商务套件 图形处理
在性能方面,开源软件不能完全适用于高压环境。很多开源软件在应用上没能达到企业对性能的要求。然而,在一些性能瓶颈上,企业可以作出适当取舍,比如采用Oracle数据库或MSSQL Server数据库。
随着技术的提高以及优秀设计的推出,开源环境终究能很好地解决以上问题。因此,企业环境与开源环境的磨合过程,也是企业对应用作出取舍的过程。为了能让开源应用尽快投入角色,可以参考以下几点建议:
(1)合适的才是最好的。并非Oracle就能解决所有的问题,也并非MYSQL就代表小应用,合适的就是最好的。对于中小企业,如果只需要基本的数据管理及维护能力,MYSQL也是很好的选择。
(2)使用优秀的解决方案.优秀的解决方案是经过开源社区与具体应用互相
4
软件名称 Red Hat9.0 Apache MYSQL OpenOffice OSCommerce GIMP
费用(美元)
80 0 0 0 0 0
敲磨而成的。
目前国内也有很多较为成熟的开源企业应用软件,例如:北京恩信科技的开源ERP(图2)、北京共创开源软件的桌面操作系统等.
图2 恩信科技开源ERP软件
5
3 企业级即时通信(Enterprise Instant Messaging,简称EIM)
以企业级应用的开源解决方案作为导向,本节将重点介绍,企业对即时通信工具的需求,以及如何用开源产品来满足这种需求. 3。1 企业是否需要即时通信工具
一个企业即时通信系统厂商向赵一飞(赵一飞,上海交通大学副教授,美国启明研究院副院长,上海市职业培训指导中心高级物流师职业鉴定专家组成员)介绍最新的企业级即时通信系统,他的第一个反应却是“有免费的软件,我们为什么要花钱搭建一个即时通信系统”.对企业级即时通信系统的误解以及收费是它打开市场的阻碍。
随着企业规模的扩大,传统的聊天工具已不能满足企业内部协作和交流的需求.因此,越来越多的企业开始关注企业级即时通信产品,并主要看中它在降低交流成本、提高沟通效率、与OA系统无缝结合等方面的优势.
跨越物理空间的距离、实现即时交流是即时通信系统最吸引企业之处。即时通信系统可以让员工能够知道同事是否在线,避免了员工在打电话找同事上耗费大量时间,使同事之间在任何地点、任何时间都能进行即时交流.同时填补了OA系统在处理即时业务以及事件通知的点对点能力、即时能力上的不足。真正实现企业内部的协同工作。
中化集团在海外有41家分支机构,为了实现全球即时联络,2000年,它通过实施IBM 公司的Sametime模块,建立了企业即时通信系统,成为国内较早引入即时通信系统的企业。2003年,办公网分布在全国20多个城市的上海浦东发展银行引入了微软刚刚发布的企业级即时通信系统——Live Communication Server.如今,浦发银行经常出差的员工不管出差到哪个城市,他只要到达浦发银行任意一个办公区,用随身携带的笔记本电脑随便连上一个局域网端口,同事就可以立刻看到他在线,发送即时消息联络他,并在线讨论工作。目前,浦发银行的企业局域网有7000多台终端,安装了Live Communication Server的终端已达到1000多台[13][14]。
此外,大型企业,尤其具备跨区域经营能力的大型企业也是即时通信系统的需求者.有人曾粗略预计过,像联想、海尔这样的大型企业每年用于内部电话、传真及800免费电话的费用都是百万元级的,如果它们能引入即时通信系统,既
6
能帮助员工实现互动沟通和协作,又能有效而低成本地获得企业内外的信息。
显然,企业级即时通信工具再好也应该根据具体的经营状况而定。它对有些企业来说反而是一种累赘。因为部分企业仅仅把即时通信工具等同于一般的聊天工具,而有的则作为一种日常办公工具。 3。2 商业化解决方案
商业化的即时通信软件已形成良好的应用模式,及强大的企业支持。其抗险能力强,功能完善,且具备较多的成功解决案例。例如:国内的GoCom、腾讯RTX(图3),国外的IBM Lotus Sametime、AOL的AIM PBE。但是企业在实施初期,需要支付高昂的费用.
图3 腾讯RTX
3.3 新的选择--开源解决方案
自由、安全、社区支持、价格合适,早已是人们对开源产品的印象。随着开源技术的成熟,个人或企业使用开源软件作为解决方案的数量日趋增加。在即时通信方面,常用的开源通信协义是XMPP,它继承了在XML环境中灵活的发展性.目前,常见的开源即时通信软件有Spark(图4)、JeCat-Jabber、LinQ、Instabird、Pidgin等。而MySQL则是典型的开源数据库.
在开源社区中,有很多成熟的解决方案,如:Openfire + Spark +MySQL。
7
完备的开源技术,使得构建开源环境下的企业级即时通信成为可能。它们不但具备商业化软件同样成熟的解决方案,更重要的是,它们具备自由开源的理念以及开源社区的广泛支持。
图4 Spark即时通信工具
8
4需求分析
不同的企业对即时通信工具的需求都有所不同.有的需要与OA系统产生交互功能,有的需要多人视频会议。因此下文将论述该软件的基本需求,如需扩展,可参阅相关资料. 4.1 与传统IM相近的功能
企业级即时通信工具,首先是作为即时通信工具来使用,因此必需满足该部份功能。
在通信技术或通信能力上,应该与传统的IM相近。如简单的文字通信、文件传输、查看好友信息等。而聊天记录、个人头像、截图等扩展功能都是在基本功能的基础上建立起来的。
其次,在架构时,我们应该考虑网络通信问题。像QQ和MSN那样的聊天工具都是建立在广域网下的,或者有代理服务器.而企业级IM是建立在企业内部局域网内,除非企业的OA或应用软件架构在广域网,否则需要解决网间路由的问题(注:可使用openfire的路由插件解决)[15]。 4.2 IM的企业特色
作为企业级软件,首先是具有企业文化特色.除了企业外部美工形象外,其内部架构也很重要。比如部门分级,A部分下设有A1和A2子部份.由于IM的使用涉及公司里成百上千的员工,所以清晰的部门分级是提高效率的措施之一。
与此同时,个人信息也应当具有企业特色.在传统IM中,个人信息(包括个人资料和个人办公状态)存在着虚拟性以及极端的不真实性。而企业IM应该使用真实信息。很明显的应用是,当企业IM与OA系统集成时,当某员工需要在业务审批流程中签署文件,此时该文件需要具有不可抵赖性、不可篡改性。
在信息流通上,除了用优质的物理设施来支持外,合理的业务逻辑也很重要.在传统IM上,信息是允许丢失的,但企业IM则不允许任何重要信息丢失。如审批业务时,有一小环节的信息丢失,使得下流的任务不能按时开展,而处理上流的业务又得不到反馈,在这个争分夺秒的时代,这是一件很可怕的事。因此,该系统应该具有信息保存以及信息恢复的能力.
在信息安全上,企业的操作系统应该安装杀毒软件、防火场等软件,除此之外,企业IM的信息应该有自身一套安全措施.比如防修改,防抵赖等。在此可使
9
用信息加密,指纹识别等技术.常用的加密方式是MD5,验证方面可考虑CA认证方式。
信息监控是最容内被忽视的一个模块。因为平常看不出该模块的实际效益。但在重要环节上,它却是信息安全,维护信息流通性的有力后盾。信息监控的任务主要集中在流量监控、操作监控、任务流监控等方面。当发生网络异常时,相关人员可及时采取措施,防止该异常对企业网络环境的破坏。很多政企的预警系统都是建立在信息监控网络上的。 4.3 需求总结
企业IM更注重信息的传递能力及安全性,它不需要像传统IM一样拥有繁多的系统功能。当然也可以作相应的扩展。例如多人视频会议、文件夹传输(不同于一般的文件传输,可传输文件目录结构)、发起问卷调查、项目申报、SMS短信服务等.这些功能都视具体应用环境而定.
10
5系统分析
系统分析是在需求分析的基础上,构建出具体模型.本文的系统分析,将对企业IM分成客户端及服务端进行设计。其中涉及的内容有,整体框架、客户端框架、服务器框架。 5。1整体框架
首先假设企业要求把即时通信工具构建在内部局域网(广域网的结构相似).其次是企业内部已建立起基本的数据资源(如:部门信息、员工信息,表5.1 展示了其本的数据要求)。
表格5。1 部门、员工信息
字段属性
数据类型 部门信息
部门ID (DEPID) 部门名称(DEPNAME) 部门父ID(DEPPID
INT VARCHAR(30)
INT 员工信息
员工ID(USERID) 员工登录名(ULOGINNAME) 员工性名(USERNAME) 员工EMAIL(EMAIL) 密码(PASSWORD)
INT VARCHAR(20) VARCHAR(10) VARCHAR(40) VARCHAR(40) 部门—员工信息
部门ID(DEPID) 员工ID(USERID) 职称(TITLE)
针对以上两点,IM系统的大致结构为: (1)中央服务端
要求在局域网中,客户端能够根据服务端IP以及服务端口寻找到服务端并
11
IS NULL
NOT NULL PK NOT NULL NOT NULL FK
NOT NULL PK NOT NULL NOT NULL NULL NULL
INT INT VARCHAR(20)
NOT NULL PK FK NOT NULL PK FK
NULL
进行交互。通过开源服务端Openfire,可轻松解决以上问题。
(2)资源数据库
资源数据库中保存着企业内部的基本信息,此处只需使用表5。1 所要求的数据。一般企业内会使用Orcale数所库,同时也可选用开源数据库MySQL。
(3)IM系统数据库
此数据库与资源数据库不一样,它是专门为IM系统而设的。其中包括消息的存读、用户办公状态的存读等。
(4)客户端
如果采用B/S结构,则可集中管理客户端,开发及维护成本高,但很难利用本地资源,其实现方式很多,一般使用javascript和css丰富页面效果.若采用C/S结构,则需要在客户端安装应用程序,虽然维护成本高,但可展现丰富的效果,可使用功能强大的Java语言及Smack API开发。
(5)通信协议
通信协议是沟通客户端与服务端的桥梁。互相通信的信息都是遵守XMPP通信协议并进行封装,使得多种产品(如:MSN、QQ、GTalk)互通成为可能。其中XMPP是著名的开源通信协议。
通过以上开源产品,则可构建企业IM系统,如图5:
图5 整体结构
12
5.2 客户端框架
客户端采用MVC结构设计,应用多种设计模式,如单例模式、门面模式、工厂模式,优化设计过程,使得软件内部低耦合、高内聚,如图6。
图6 客户端框架图
5.3 服务端框架
服务端主要由应用服务层及数据层组成,并与客户端进行遵守XMPP协议的通信。其中应用服务层采用Openfire集成各种IM系统功能,或与OA系统集成。其优点如下[16]:
(1)Openfire内部集成ResinWeb服务器,可以设计其于Web的管理程序。 (2)实现了插件机制,方便扩展.服务器在运行的时候,会定时地扫描一个特定的录下的文件,当发现有新的Jar包出现时,就读入它所有的类,分析类中有没有支持插件接口的类,如果有,就加载并运行它.
(3)用户容量方面,单台服务器可支持上万并发用户.在测试环境下可以支持5000用户同时在线,每秒可以转发2000个包。
(4)Openfire安装和使用都非常简单。
13
6 详细设计
详细设计将根据需求分析及系统分析,对企业即时通信系统进行更细致的设计,为编码阶段作出充分准备。在详细设计阶段,我们将看到该系统界面的大体轮廓,以及相关技术的解决方法。 6。1 开发语言及开发平台 6。1。1 开发语言:Java
选用Java作为开发语言,除了它简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言外,由于Openfire是由Java编写的,所以使用Java语言作为开发语言,能够简单地实现相关接口,并制作插件。同时Java有很好的跨平台能力,其客户端能够轻松地运行各种平台。而JavaFX的推出,使得Java的桌面应用能力将更上一层楼.
图7 用户界面设计[17]
14
6。1。2 开发平台
作为投入到实际应用的生产活动,开发者应该使用一套专业的开发软件.而Netbeans作为多语言开发平台,在Java开发上,能使开发者快速构建项目,团队协作开发,便于代码优化、查错。再加上Netbeans有SUN公司的大力支持,使得越来越多的开发者选择Netbeans作为开发平台。 6。2 XMPP协议 6.2。1 XMPP协议简介
XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性,这表明XMPP是可扩展的。可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。
XMPP目前在免费源代码开放Jabber IM系统中被广泛采用.2002年,这个产品有超过5万的下载量.XMPP拥有成千的Jabber开发者,以及大约数万台配置的服务器和超过百万的终端用户。
图8 XMPP框架图
XMPP在设计上很大程度上沿袭了Internet上最成功的消息系统即e—mail。框架中有三种实体(不包括外部即时消息服务器)[18]:(1)用户客户端,(2)XMPP
15
服务器,(3)XMPP协议网关。负责 XMPP与非XMPP系统互联的实现就是协议网关,XMPP服务器间相互通信形成一个使用XMPP协议的服务器组成的分布式网络.连接这个网络的客户端,可以象接收消息一样发送消息给同一个服务器或其他Internet上的服务器上的客户(图8)。
在实际操作中,会使用基于XMPP的Jabber系统作为客户服务中心信息交换系统的核心。Jabber分布式、开放、在线和即时消息的特点非常适合信息交换服务,它提供了一个统一和通用的通信交换平台架构[19][20]。 6。2.2 XMPP传输基理
XMPP通过TCP传输的是与即时通信相关的指令.在以前这些命令要么用二进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通信指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通信指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议.所以可以说,XMPP用TCP传的是XML流[21]。
以下为XMPP流的具体例子。 客户端:
<?xml version=’1.0'?>
〈stream:stream to='example。com' xmlns=’jabber:client’ xmlns:stream=’http://etherx.jabber.org/streams’ version=’1。0'>
服务器:
〈?xml version=’1。0'?> 〈
stream
:
stream
from=
’
example.com'id='someid
’
xmlns='jabber:client'
xmlns:stream=’http://etherx。jabber.org/streams’ version=’1。0’>
。。.其他通信... 客户端:
〈messagefrom=’juliet@example.com'to=’romeo@example.net'xml:
16
lang=’en’〉
客户端: 〈body>Art thou not Romeo, and a Montague?
服务器: 服务器:〈body〉Neither, fair saint, if either thee dislike.〈/body> 服务器:
从以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从 在使用XMPP(Jabber)协议的时候,一般不需要从底层重新实现协议细节,为了 “不重复制造轮子”,而选用Java编写的Smack API. Smack是一个开源,易于使用的XMPP(jabber)客户端类库。它具有如下优点[23]: (1)Smack是一个简单的,功能强大的类库。给用户发送信息只需三行代码便可完成: XMPPConnection connection = new XMPPConnection(”jabber.org“); connection。login(\"mtucker”, “password”); connection.createChat(\"jsmith@jivesoftwarecom“).sendMessage(”Howdy!”); (2)不会强迫你向其他类库那样,在信息包层面进行编码。它提供了更加 17 。 智能化的类比如Chat和Groups,能使你的工作更富效率。 (3)不需要你熟悉XMPP XML格式,甚至是XML格式。 (4)易于实现机-—机对话。 (5)Apace License下的开源软件.你可以把它用于你的商业或非商业应用程序。 Smack API封装了底层通信细节,并提供相对应的应用接口。在实际应用时,开发者只需要调用或实现相应接口即可. 6。3 服务端的设计 6.3。1 Openfire简介 图9 openfire数据库部分Tables 18 图10 openfire数据库配置信息 由于Openfire在同类产品中已经很成熟,所以我们选用它作为服务端实现.首先来关注一下,官方网站(http://www.igniterealtime.org)对它的定位[22]。 Openfire is a real time collaboration (RTC) server licensed under the Open Source GPL。 It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber)。 Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance。 由此可见,Openfire作为一款遵循GPL协议,使用XMPP协议通信的即时通信服务端,在功能上并不逊于同类的商业软件。 6.3。2 Openfire的整合设计 服务端主要由服务器组件和数据库组成。而Openfire已经内置了对数据库实体关系的设计以及数据库的相关配置.如用户表、用户信息表、用户电子卡片表、好友关系表……,如图9和图10。 与原有的客户数据断连是使用Openfire设计的数据库的一个缺点[23]。如果想使用现有系统的用户/组(部门),而不想使用openfire再去管理一套用户/组,那利用openfire对JDBC Provider的支持可以非常方便的整合现有系统用户。具体操作如下: 进入openfire管理控制台—服务器-服务管理器-系统属性可以发现如下配置: provider 。auth.className org.jivesoftware.openfire.auth 19 。 DefaultAuthProvider *用户验证 provider.group.className org.jivesoftware。openfire.group。DefaultGroupProvider *获取组相关数据 provider 。 user.className org.jivesoftware.openfire.user 。 DefaultUserProvider *获取用户相关数据 这些Provider是openfire默认自己管理用户组。但同时openfire还提供了支持JDBC相关的Provider,可以从其它的数据源获取用户/组数据。将上面三个属性分别修改为: org。jivesoftware。openfire。auth。JDBCAuthProvider org。jivesoftware.openfire.group.JDBCGroupProvider org。jivesoftware.openfire。user.JDBCUserProvider 然后,需要配置一下数据源,添加如下属性 jdbcProvider.driver *数据源驱动 jdbcProvider。connectionString *连接字符串 对每一个JDBC Provider需要配置相关的SQL语句和属性(在系统属性里添加项目). JDBCAuthProvider jdbcAuthProvider.passwordSQL 20 *获取用户密码的SQL *输入参数:登录名 *输入列:密码 *例:SELECT pwd FROM user WHERE name=? jdbcAuthProvider。passwordType *密码类型可以是:plain(文本),md5,sha1 *如果你的密码加密不为以上三种,就需要自己提供一个AuthProvider JDBCGroupProvider jdbcGroupProvider.allGroupsSQL *获取所有组的SQL *输入参数:无 *输出列:组的KEY *例:SELECT sn FROM department jdbcGroupProvider。descriptionSQL *获取组的名称(描述) *输入参数:组记录的KEY *输出列:组的名称(描述) *例:SELECT name FROM department where sn=? jdbcGroupProvider.groupCountSQL *获取组的数量 *输入参数:组的KEY *输出列:组的数量 *例:SELECT count(sn) FROM department jdbcGroupProvider.loadAdminsSQL *获取组的管理员 *输入参数:组记录的KEY 21 *输出列:组管理员的KEY *例:SELECT admin FROM department where sn=? jdbcGroupProvider。loadMembersSQL *获取组的成员 *输入参数:组的KEY *输出列:组成员的KEY(集合) *例:SELECT usersn FROM department_user where departmentsn=? jdbcGroupProvider。userGroupsSQL *获取成员的组 *输入参数:成员的KEY *输出列:成员所性组的KEY *例:SELECT departmentsn FROM department_user where usersn=? JDBCUserProvider jdbcUserProvider.allUsersSQL *获取所有用户 *输入参数:无 *输出列:用户的KEY *例:SELECT sn from user jdbcUserProvider。userCountSQL *获取所有用户数量 *输入参数:无 *输出列:用户数量 *例:SELECT count(sn) from user jdbcUserProvider.loadUserSQL 22 *获取用户信息 *输入参数:用户的KEY *输出列:登录名,名称,email(至少应该这三列,下面要用到) *例:SELECT loginname,name,email from user where sn =? jdbcUserProvider。emailField *指定用户email的列名如:email jdbcUserProvider.nameField *指定用户名称的列名如:name jdbcUserProvider.usernameField *指定用户登录名的列名如:loginname 最后 还需要配置新的管理员用户 admin.authorizedJIDs *指定新数据源中的管理员用户注意是是完整JID(user@域名) *例:admin@server。cn 配置好如上属性后重启openfire,使用admin。authorizedJIDs中的用户名登录openfire管理控制台。如果配置成功,进入openfire管理控制台—用户/组,就可以看到你数据源中的用户/组信息了,同时可以使用spark登录进行测试。此外,如果在调试过程中出现问题 无法登录openfire管理控制台,可以直接修改openfire数据库中的 OFPROPERTY表。 同时,开发者还可以使用Openfire管理控制台修改相关属性,或实现相关的插件接口来开发插件,使得该企业级应用的功能具有更强的可重用性和实用性。 6。4 工程实施及交付使用 工程实施是根据具体的应用环境进行修改,并及时作出解决方案。 首先,统计出企业中原有的数据资源,比如员工信息、部门信息。如果该企业不存在任何存在于数据库的数据资源,或未使用数据库,则可以安装MySQL数 23 据库,并录入相关数据。如果企业里有相关的数据资源,则利用Openfire对JDBC Provider的支持进行整合. 接着,安装并配置Openfire服务端.安装好Openfire后,进行相关属性的修改,并安装插件。其实Openfire作为即时通信服务端已具备智能管理的功能,所以很少需要开发者操心的地方.要注意,Openfire所开放的端口(默认为9090,还有其它功能端口)不能与服务器中已用端口产生冲突。 最后,分发客户端程序。如果客户端没有安装Java虚拟机,那实施人员应该负责安装,或把Java RC 直接与应用程序绑定。因为安装Java虚拟机时在配置上比较麻烦。如果使用开源的操作系统,如OpenSolaris,就可以省去安装Java虚拟机了。 7设计展示 通过近半年的学习及实习实践,我利用以上解决方案制作了一套模型.通过 大量的测试,该系统能正常运行。下一步将与具体的办公OA系统结合,或开发一套WEB应用.该软件并不是最完善的,还有很多工作要完成。特别是压力测试上,力求达到2000人同时在线且发送数据的并发数量,在算法上及服务器二次开发上,仍有很大的空间。以下将展示我现阶段的成果。 7.1 登录界面 登录界面是用户进入系统的接口,部分企业把它作为各种企业产品的登录接口,这样就不需要每使用一个产品就输入一次密码.密码最好以加密形式记录,否则会出现安全问题。如图11。 24 图11 登录界面 7.2 群组聊天 群组聊天适合在线会议,或多人协作.通常按部门分组,也可以自定义聊天室。群聊的信息共享能力远远超出一对一聊天,更有利于信息流通。如图12。 7。3 文件传输 文件传输已经为聊天工具必不可少的功能,并填补了文件聊天的单一性,使得交流的信息更丰富。如图13。 25 图12 群组聊天 图13 文件传输 7.4 个人信息 26 个人信息卡片是用户在企业的形象表达方式,力求真实、可查询,其中包含姓名、性别、所在部门、职称、常用电话等信息.如图14。 图14 个人信息 27 8 补充及扩展 8。1 与办公OA整合 OA系统能够解决以往企、事业单位只能通过传统的“传真、电话、打印材料送报,开会研究”的方式传递信息的问题。通过公示公告、工作动态、档案查询、视频点播、公文管理、内部邮件、网上论坛、文件管理等功能的OA系统对于企、事业单位的办公的信息化、自动化等方面起到了一定的作用,但是实际运行中发现OA并不能发挥实时办公平台的作用,表现如下 : 1、OA系统“门槛”比较高,对于企、事业单位来说,需要从系统知识、操作习惯、系统使用说明等进行全方面的培训。虽然经过了培训,但是由于知识层次、年龄等因素的影响,OA系统的应用并不完美,实用效果并不明显。 2、OA系统提供的实时交互功能不足,尤其是不能提供点对点的或者多人的语音、视频交流能力. 若企业IM与办公OA整合,不仅能体现出企业IM的信息流通能力,也使办公OA的即时互动能力大大提高,真正地打造一个实时办公平台。比如办工人员常常需要把事项发往各负责人进行处理,此时即时通信就起着通知、督查跟踪的作用.除了以上的通信功能外,办公OA的辅助功能也可以转移到即时通信工具,例如:文档共享、通信录、通知公告等. 8。2与WEB应用整合 很多企业都在门户网站上提供在线互动的功能,或在内部网络中建立WEB IM [24] .其作用主要表现在,为客户提供更便捷的沟通方式,随时锁定客户,并且不 需要对客户端做更多的维护。目前流行的应用有在线客户服务、在线协同办公、在线聊天室等.借助WEB2。0技术,即时通信整合到WEB应用中已成为一种趋势。 例如,目前流行即时信息应用—-Twitter,它允许用户将自己的最新动态和想法以短信的形式发送给手机和个性化网站群,而不仅仅是发送给个人.国内也出现了许多类似Twitter的网站,比如说说、饭否、叽歪等等十余家网站。其主要优势是对中文的良好支持,以及与国内移动通信服务商、即时聊天工具的绑定。 28 9 小结 构建企业级即时通信,一方面可以增强企业对内的凝聚力及信息交流能力,另一方面可以增强企业对外的信息获取能力。虽然即时通信对企业应用不是必须的,但我们不能忽视它所起到的经济效益。 开源,意味着放弃源代码的完全封密性,追求广泛的社区支持。它不仅给我们带来更多的知识与交流,更给我们带来一种文化-—自由、共享、协作。很多开源产品发展都离不开来自世界各地互不相识的技术爱好者的努力。利用开源产品构建企业级即时通信平台,已不是新鲜的事情。但我们从中能看到开源产品的优势——安全、低成本、灵活性和不依赖软件提供商。 全文以构建企业级即时通信工具为骨架,穿插着XMPP、Openfire和MySQL等多种开源产品.从中可见,开源产品是怎样活化一个企业级应用的,并付予了安全性、可靠性及实用性。本文力求向读者传递开源信息,开阔眼界,并努力寻求更好的解决方案。 开源的硕果让我们摆脱了束缚。我们应该为开源文化带来的,不仅仅是技术支持,更多的是互相合作. 29 参考文献 [1] 佘其炯.即时通信的现状与发展趋势[J].数字通信世界,2007,(06):41-43. [2] 彭波,胡修林.基于Impp协议的ICQ系统[J].电信快报,2000,(11):31—33. [3] 严伟.基于XMPP协议的IM软件和Web邮件集成设计与实现[J].农业网络信息,2008,(2):53. [4] 庞怡,许洪光,姜媛.即时通讯工具现状及发展趋势分析[J].科技情报开发与经济, 2006,(16):169-170。 [5] 陈绪.漫谈开源历史.中科院自动化所开源软件协会11月讲座[R].2008,(11). [6] 黄保青.用开源软件建多点视频会议系统[J].中国教育网络,2008,(11):18-19. [7] 崔澎.即时通信的商务畅想[J].电子商务世界,2004,(03):67. [8] 林小燕.即时通讯在电子商务网站中的应用[J].企业家天地下半月刊(理论版), 2007,(10):212—213. [9] 王欣,左春.企业级应用系统框架的研究[J].计算机应用与软件,2003,(04):1-3. [10] Abel Avram. 企业中开源软件的使用情况报告[OL]. http://www.infoq.com/cn/news /2008/11/Open—Source-Enterprise.2008-11-9. [11] Kenneth Wong,Phet Sayo.FOSS: General Introduction[EB].马来西亚:联合国发展署亚太地区发展信息项目(UNDP-APDIP)出版,2003:10. [12] 段勇峰.企业级即时通信的黎明[OL].http://article.pchome.net/content-118177. html.2009—3.16. [13] 张永强.企业级即时通信系统的设计与实现[J].陕西科技大学学报,2008,(1):110—111. [14] MessageLabs.ENTERPRISE INSTANT MESSAGER SERVICE[R].2008。 [15] 刘旭国,骆华杰,王万成.即时通信工具的协议分析与互通研究[J].网络安全技术与应用,2009,(02):53-55. [16] 林子冠.IM System3[CP]. http://user.qzone.qq.com/53511091/blog/1230357858. 2008—12-27. [17] 侯可.一种基于XMPP的企业即时消息技术[J].科技情报开发与经济,2008,(26):146. [18] 邹正宸,左春.基于Jabber的客户服务中心通用信息交换系统设计[J].计算机工 30 程与设计.2007,(1):69-70. [19] 潘凤.基于XMPP协议和Openfire的即时通信系统的开发[J].计算机时代,2008,(3):15-16. [20] 谢波,蒋志平.XMPP研究与应用[J].科技广场,2008,(10):30—31. [21] 潘振香.Jabber协议在即时通信系统中的应用[J].网络安全技术与应用,2007,(10):80. [22] 侯可,张宏壮.基于XMPP的企业即时消息技术实现[J]. 河北省科学院学报, 2008,(03):24—27。 [23] 剧忻,苗放.基于MINA开发高性能网络应用程序——以实现XMPP协议Openfire3。3.3为例[J].重庆工学院学报,2008,(10):121-125. [24] 刘建国.即时通信与电子商务的整合应用研究[J].电脑编程技巧与维护,2009,(08):60—61. 31 致 谢 五月的和风,吹动着思绪。随着毕业将至,我终于要为四年的大学生活划上句号,心里是喜悦、是怀念、是紧张、是兴奋, 百感交集。 喜悦,是因为在毕业时感到无悔。 怀念,是因为同学们将各奔东西。 紧张,是因为将要迎来新的挑战。 兴奋,是因为怀有对未来的憧憬. 此时此刻,丰富的大学生活再现眼前。你看,有军训时满脸稚气的我们;有 宿舍里的欢声笑语;有班里的书声朗朗;有学生会里团结互助的身影;有老师们的谆谆教导;有运动场上的青春活力…… 这一切不仅构成了校园里美丽动人的景致,更构成了我们人生的重要组成部 分.我感谢着这一切的美好。 从程序设计到论文的拟稿和定稿,历时半年。 首先,感谢中大软件研究所以及广州起程信息科技有限公司提供硬件及技术支持。其中,特别感谢该公司的邓桂生经理,没有他的指导及提点,我很难完成该程序的设计。从实习那天开始,邓经理就与我讨论该程序的设计。经过四个月时间,我们把难点一个个地突破,并最终完成了基本功能.目前该程序已升级到第三个版本。 接着,感谢我的指导老师徐小萍老师,在此,我向她致以诚挚的谢意.在该程序原型完成后一个月,我决定把它作为我的毕业设计并写出该课题的论文,于是我请严谨、认真负责的徐老师作为该课题的指导老师。自论文落笔以来,徐老师时常关心论文的进度和质量,并提供了很多建议。每一次的修改,我都能看到徐老师认真批阅的笔迹。从一词一句,到全文的中心主题,都包含着徐老师的辛劳。本论文的完成,离不开她的悉心指导和孜孜不倦的教诲。徐老师学识渊博、治学严谨,待人平易近人,在她的悉心指导中,我不仅学到了扎实的专业知识,也在怎样处人处事等方面收益很多;同时她对工作的积极热情、认真负责、有条不紊、实事求是的态度,给我留下了深刻的印象,使我受益非浅。此外她开阔的思维、敏锐的洞察力以及详细的修改意见一直给我很大的启发.在此我谨向徐老 32 师表示衷心的感谢和深深的敬意。 我要感谢我们学院给我们授课的各位老师,正是由于他们的传道、授业、解惑,让我学到了专业知识,并从他们身上学到了如何求知治学、如何为人处事。我也要感谢我的母校襄樊学院,是她提供了良好的学习环境和生活环境,让我的大学生活丰富多姿,为我的人生留下精彩的一笔。 感谢参加我论文答辩的各位老师,感谢你们不厌其烦地对我的论文提出各种意见,让我的大学生活的句号更加圆满。 大学生活的结束,是另一份挑战的起点。有同学走上考研深造的道路,有同学走上从政为民的道路,有同学走上社会工作的道路。但不管怎样,大学生活是值得纪念的,未来更是丰富多彩的。愿每一位老师、同学都过得开开心心! 33 襄樊学院毕业论文(设计)任务书 毕业论文(设计)题目 企业级即时通信系统的开源解决方案 学生姓名 林子冠 专业 信息与计算科学 班级 0511 指导教师 徐小萍 毕业论文(设计)的主要内容及要求: 主要内容:即时通讯产品为家庭和企业用户进行网络通信交流的重要工具,本文主要从企业级即时通信系统的需求、特点及国内外现状,开源解决方案等方面详细研究怎样用开源产品构建企业级即时通信。 要求:1、字数必须在一万字以上; 2、参考文献必须在十五本以上(其中至少有八篇为学术论文,二篇英文资料),且这些文献在正文中都必须用到并有注明; 3、毕业论文应自己独立完成,严禁抄袭,如使用了别人的研究成果应在正文中标明出处; 4、毕业论文应有自己独到的见解. 二、毕业论文(设计)应收集的资料及主要参考文献: [1] 黄保青.用开源软件建多点视频会议系统[J].中国教育网络,2008,(11):18 — 19 。 [2] 张永强.企业级即时通信系统的设计与实现[J].陕西科技大学学报,2008,(1):110—111. [3] 侯可.一种基于XMPP的企业即时消息技术[J].科技情报开发与经济,2008,(26):146. [4] 潘凤.基于XMPP协议和Openfire的即时通信系统的开发[J].计算机时代,2008,(3):15—16. 0 襄樊学院毕业论文(设计)开题报告 系(学院):数学与计算机科学学院 专业:信息与计算科学 学生姓名 林子冠 指导教师 徐小萍 班级:0511 论文 企业级即时通信系统的开源解决方案 题目 随着网络的快速发展及企业对办公自动化的要求提高,企业级即时通信工具已得到广泛的认可。本人借此之机,结合开源产品提出企业级开即时通信系统的开源解决方案。在研究本课题期间,本人参阅了大量的题国内外文献,并结合实际,先后开发出了该软件模型的多个版本。经过报数月的准备,本人向指导老师提交了毕业论文初稿。经指导老师审阅后,告︵确定了进一步修改意见,并具备开题条件。故申请开题。 可 另 附页 ︶ 学生签名: 年 月 日 注:学生须根据毕业论文(设计)任务书写出2500字以上的开题报告,开题报告包 含以下几方面的内容:1.研究目的和意义;2.阅读的主要文献、资料(理工类 15种以上,其他学科类20种以上),分析国内外现状和发展趋势,提出本课题 的主攻 方向;3。主要 研究内容、途径及技术路线;4。工作的主要阶段、进度 及完成时间。 林子冠同学在2008年暑假实习时已经分析和构建了企业级即时通信系统的开源解决方案的原型,并于2008年11月开发了第二版本,于2009年2月开发了第三版本。十二月初他找到我要我作他的毕业论文指指导教师意见导老师。因为他对企业级即时通信系统的开源解决方案已经作了深入的研究,并有这方面的成果,故本人同意其于一月份开始毕业论文写作。 到三月初,该毕业论文初稿已经成形,现在正处于修改阶段.该论文的结构层次比较清晰,内容比较充实,但离毕业论文的各方面要求还有一定的距离,故在毕业论文的写作上还要作很大的努力。 指导教师签名: 年 月 日 毕业论文开题报告 企业级即时通信系统的开源解决方案 专业:信息与计算科学0511班 学号:05125071 姓名:林子冠 指导老师:徐小萍 一、研究的目的和意义 企业级即时通信系统从无人问津到成为协同办公必备工具,中间经历了误解、理解和应用三个阶段。很多大型企业都需要构建内部即时通信平台,促进员工协同办公能力提高,并与办公OA结合,使得企业内部通信及共享能力大大提高。但由于各种原因,仍有很多人把企业级即时通信系统等同于一般的个人即时通信工具.其误解来源于企业规模和成本问题。没有足够规模的企业谈不上内部通信,一般的即时通信工具就能胜任。成本问题是由市场决定的,一般购买一套企业级即时通信的商业产品,企业需要支付高昂的费用,并且不同的办公工具很难相结合. 而本课题针对这些问题,提出了使用开源产品来构建企业级即时通信系统的解决方案,使得更多的企业把即时通信系统作为办公自动化平台的组成部分。 然而,本研究课题深层意不在于如何构建和应用一个即时通信系统,而是向更多的用户展现开源技术魅力。 二、该领域的现状和发展趋势 经过多年的发展,计算机网络已深入千家万户,以及各行各业.它不仅把人们之间的距离拉得更近,更让人们快速地认识到大千世界。想在网络世界中活动,少不了浏览器工具,其次,聊天工具就是最常用的网络交流工具。从个人用户看,聊天工具包含了常用聊天、娱乐、共享等工能。从商业用户看,聊天工具不仅具备常用聊天功能,还有与办公OA结合的系统功能。 但是,经过多年锤炼的企业级即时通信工具,已有相当成熟的技术以及应用 模式。如果我们单纯地研究该工具的作用及应用实施,意义已经不如从前。而本文恰恰以企业级即时通信工具作为研究对象,但使用新的概念——开放源代码,旨在宣扬开源技术。 相信大部分用户都未曾使用开源产品,或未曾听说开源概念,但它早在1984 年Richard Stallman发起GNU和Free Software Foundation计划中出现了。当时还是个婴儿的它,在商业产品中占据不了市场,除了技术以及意识上的差异外,更重要的理由是:它不具有成功的解决方案。但随着计算机技术的发展,互联与 0 共享成为了可能,除了在信息资料的共享外,技术人员更迫切希望技术的共享,因此开源文化获得了广泛的认可,并冲击着人们的眼球,打破了商业产品的垄断。 例如:MySQL开源数库已被全球约5,000家企业采用, Jboss开源服务器的应用比例也在一直攀升,市场占率由2003年的9%上涨至2004年的35%.1997年夏,制作《泰坦尼克号》所用的160台Alpha图形工作站中,有105台采用了-—Linux操作系统[4]。 从以上例子可以看出,开源产品正为我们提供着丰富的解决方案。而本文也基于该理由,应用开源技术,为企事业单位提供企业级即时通信平台的另一种解决方案,并以此为契机,希望有更多的人加入开源行列,努力填补着各种应用中的开源解决方案。 在国内,做得最成功的即时通信平台,应属腾讯QQ .不管是实用性,还是娱 乐上都在国内数一数二,而且是娱乐版是免费的,同时腾讯QQ——腾讯RTX也支持企业应用,不过独立性及与OA的兼容能力不佳.而GoCom是企业级应用中,较为成功的一员,具有丰富的成功解决方案,在实施力上具有一定优势。但国内的开源文化还在成长过程,主要是使用国外开源技术比较多.在国外,IBM Lotus Sametime、AOL和AIM PBE所做的企业级即时通平台较为出色,但实施初期需要支付高昂的费用.在开源文化文中,SUN和IBM两家是领头羊,为开源社区贡献了丰富的资源.而SUN最大的贡献是JAVA技术,依托JVM(注:JVM——JAVA 虚拟机),JAVA产品能“一处编辑,处处运行”。 三、主要研究内容、途径及主攻方向 本课题的主攻方向是,如何使用开源技术,构建一个满足企事业单位需求的 即时通信平台,最后形成一套解决方案。其中本课题的主要内容有: 1、了解开源文化. 2、了解商业产品与开源产品的差同. 3、列举企事业单位对即时通讯平台的需求。 4、介绍XMPP、JAVA技术以及Openfire、MySQL等开源产品。 5、应用开源技术,构建一个满足基本需求的产品. 6、简析其应用及括展方向。 本课题所使用的技术及产品如表1。1: 1 表1.1 技术/产品介绍 技术/产品名称 简要描述 XMPP(Extensible Messaging and Presence Protocol,可扩展的消息和出度协议)是一种基于XML的传递出席信息和消息路由的协议,它为不同的网络之间互联提供了一种安全而简单的编程语言,是Jabber系统的基础。XMPP的出现,实现了整个即时通信服务协议的统一,促进了服务器之间的准 即时操作. Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的, 可移植的,性能优异、多线程的动态语言。 Smack是一个开源,易于使用的XMPP(jabber)客户端类库。其优点是:简单,功能强大,不需要用户熟悉XMPP XML格 式,Apace License下的开源软件. Openfire采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。用户可以使用它轻易的构建高效率的即时通信服务器。其安装和使用都非常简单,并利用Web进行管理。单台服务器可以支持上万并发用户。由于它采用开放的XMPP协议,用户可以使用各种支持XMPP协议的IM 客户端软件登陆服务。 MySQL是一个小型关系型数据库管理系统。目前,MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作 为网站数据库。 XMPP JAVA Smack Openfire MySQL 本文的主要参考文献为是国内关于XMPP技术和企业级即时通信期刊论文,由于所阅读的大部分外文文献比较零散,未被列入参考文献。其中,开源社区及外文官方网站提供了丰富的参考资料,例如,著名的开源项目网站sourceforge。net。 在研究本课题的同时,本人已完成了该软件的其本模型,并与办公OA部分集成,改进的空间很大。该产品具备基本的聊天(包括点对点,点对群)、文件共享功能、电子卡片、在线状功能、企业形象等功能。 到目前为止,该产品能正式投入使用,但仍有很多不足.希望这个开源项目能吸引更多的技术人员,继续完善,做得更好. 四、课题研究的主要阶段及完成时间 2008年7月: 分析及构建该产品的原型 2 2008年11月: 2009年2月: 开发第二版本 开发第三版本 撰写开题报告 撰写初稿 定稿,准备答辩 第六至第七周: 第八至第十一周: 第十五周: 第十二至第十四周: 对毕业论文作多次修改,直至满意 五、主要参考文献及资料 [1] 佘其炯.即时通信的现状与发展趋势[J].数字通信世界,2007,(06):41—43. [2] 彭波,胡修林.基于Impp协议的ICQ系统[J].电信快报,2000,(11):31-33. [3] 严伟.基于XMPP协议的IM软件和Web邮件集成设计与实现[J].农业网络信息,2008,(2):53. [4] 庞怡,许洪光,姜媛.即时通讯工具现状及发展趋势分析[J].科技情报开发与经济, 2006,(16):169-170。 [5] 陈绪.漫谈开源历史.中科院自动化所开源软件协会11月讲座[R].2008,(11). [6] 黄保青.用开源软件建多点视频会议系统[J].中国教育网络,2008,(11):18—19. [7] 崔澎.即时通信的商务畅想[J].电子商务世界,2004,(03):67. [8] 林小燕.即时通讯在电子商务网站中的应用[J].企业家天地下半月刊(理论版), 2007,(10):212—213. [9] 王欣,左春.企业级应用系统框架的研究[J].计算机应用与软件,2003,(04):1-3. [10] Abel Avram. 企业中开源软件的使用情况报告[OL]. http://www.infoq.com/cn/news /2008/11/Open-Source-Enterprise.2008-11-9. [11] Kenneth Wong,Phet Sayo.FOSS: General Introduction[EB].马来西亚:联合国发展署亚太地区发展信息项目(UNDP—APDIP)出版,2003:10. [12] 段勇峰.企业级即时通信的黎明[OL].http://article.pchome.net/content-118177. html.2009—3.16. [13] 张永强.企业级即时通信系统的设计与实现[J].陕西科技大学学报,2008,(1):110—111. [14] MessageLabs.ENTERPRISE INSTANT MESSAGER SERVICE[R].2008。 [15] 刘旭国,骆华杰,王万成.即时通信工具的协议分析与互通研究[J].网络安全技术与应用,2009,(02):53-55. 3 [16] 林子冠.IM System3[CP]. http://user.qzone.qq.com/53511091/blog/1230357858. 2008—12-27. [17] 侯可.一种基于XMPP的企业即时消息技术[J].科技情报开发与经济,2008,(26):146. [18] 邹正宸,左春.基于Jabber的客户服务中心通用信息交换系统设计[J].计算机工程与设计.2007,(1):69-70. [19] 潘凤.基于XMPP协议和Openfire的即时通信系统的开发[J].计算机时代,2008,(3):15—16. [20] 谢波,蒋志平. XMPP研究与应用[J]. 科技广场,2008,(10):30—31. [21] 潘振香.Jabber协议在即时通信系统中的应用[J].网络安全技术与应用,2007,(10):80. [22] 侯可,张宏壮.基于XMPP的企业即时消息技术实现[J]. 河北省科学院学报, 2008,(03):24-27。 [23] 剧忻,苗放.基于MINA开发高性能网络应用程序-—以实现XMPP协议Openfire3.3.3为例[J].重庆工学院学报,2008,(10):121-125. [24] 刘建国.即时通信与电子商务的整合应用研究电脑编程技巧与维护[J].电脑编程技巧与维护,2009,(08):60-61. 4 因篇幅问题不能全部显示,请点此查看更多更全内容