使用开源软件设计开发和部署协作型Web站点第.doc_第1页
使用开源软件设计开发和部署协作型Web站点第.doc_第2页
使用开源软件设计开发和部署协作型Web站点第.doc_第3页
使用开源软件设计开发和部署协作型Web站点第.doc_第4页
使用开源软件设计开发和部署协作型Web站点第.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用开源软件设计开发和部署协作型 Web 站点 第1from:使用开源软件设计、开发和部署协作型Web站点,第1部分:简介和概述文档选项未显示需要JavaScript的文档选项打印本页将此页作为电子邮件发送讨论级别:中级Alister Lewis-Bowen,高级软件工程师,IBM Stephen Evanchik,软件工程师,IBM Louis Weitzman,高级软件工程师,IBM 2007年3月15日在这个系列中,在IBM Internet Technology Group团队的带领下使用一套可免费获得的软件来设计、开发和部署一个完整的社区Web站点。开放源码社区提供了各种工具,结合使用这些工具可以为复杂的Web应用程序创建一个有用的开发和生产环境。以这些工具作为基础,我们提供了一种方法和一些改进,能帮助简化开发过程。尽管定制仍然是有必要的,但是这个系列讲解了如何使用开放源码工具快速建立和运行相当复杂的Web站点,这些工具包括Drupal、MySQL、PHP、Apache和Eclipse技术。第一篇文章将我们的方法与其他可用软件工具进行比较,并讨论我们所做的改进。简介现在,Web站点已经成了业务的重要部分,而用来创建和部署Web站点的工具也变得更灵活和容易使用。但是,复杂Web应用程序的开发并不轻松,它们需要的不只是标准的交互方法(比如blog)。组织中的每个应用程序常常需要进行定制。在这个系列中,我们通过一个虚构的组织,International Business Council(IBC),来展示如何更有效地尽可能扩展Web站点的功能。IBC让它的职员在一个协作型社区中与外部业务伙伴进行交流;但是,目前的Web站点无法满足当前的业务需要,这个站点必须进行重新设计。这个新的定制Web站点必须有文档存储、讨论组、专门的工作组、研讨会日程安排、日程议题描述、会话过期和其他任务。用户的角色是通过改进战略和战术决策来改进公司提供的产品。用户社区是按照工作组的核心问题进行组织的。社区每年举办数次研讨会,以当面会晤。在研讨会上提出问题,然后在会晤的间隔解决这些问题。Web站点用来提供关于社区活动(比如研讨会)的信息,并跟踪会晤中所提出问题的解决进度。现有的Web站点基于一个文档存储库,这个库用来交换文档、更新关于即将举办的活动的信息。但是,这个Web站点不足以促进社区的交互,尤其是缺乏Web 2.0站点的那些新功能,比如Weblog、讨论组、RSS提要等等。团队的目标是鼓励社区的交互,并提供一个发布框架来支持社区活动。问题因为这应该是个安全的Web站点,我们需要进行会话管理来支持过期,以及在授予访问权之前对条款和条件文档进行确认。还需要支持一种直接的操作方法来进行内容编辑-如果要对内容进行操作,我们希望交互控件放在它所影响的内容旁边。现有Web站点的其他问题涉及不一致的可视语言、导航和信息体系结构。内容常常隐藏在文档中,而文档放在存储库中;直到下载并查看文档之前,没有任何线索能够表明文档中有什么内容。根据我们的分析,团队认为文档存储库采用了错误的模型。我们需要一个能够完成更多任务的内容管理系统。设计过程我们的设计过程是迭代式的,首先进行分析,然后是原型设计,然后是评估。我们利用调查表、备选设计和不同精度的原型让最终用户尽早参与进来。我们希望将决策集中于业务目标和最终用户的需要。我们发现,在着手处理一组功能需求或开发之前,用户参与得越早,我们就越能了解什么特性是有用的以及怎样的决策是正确的。我们没费多大的力气就收集了一些非常有价值的反馈,同时使用户感觉他们是设计过程的一部分。我们还获得了用户社区的高度信任。理解设计还需要理解信息体系结构。例如,根据用户调查的发现,最重要的需求之一是对三种主要信息的访问能力:关于工作组的信息关于以前的和即将召开的研讨会的信息关于所有成员的信息用户反馈还清晰地表明,需要一种清洁、整齐且简单的体系结构。我们的分析表明,访问这个站点的有三类用户:顾客、工作组负责人和管理员。这些人影响了我们的设计和决策过程。通过了解哪些信息是重要的以及这些信息与主要用户群的关系,我们能够确定一个内容体系结构、它的层次结构、呈现方式以及各类用户与此种信息的交互方式。例如,研讨会信息可能包括议程(即会议议题)、这些议题的日程安排、跨多次研讨会的主题以及在研讨会之间已经解决的议题。本系列中的下一篇文章将更详细地讨论我们的设计过程。随着分析的深入,需要增加的特性也逐渐明朗化。例如,为了支持一个活跃的社区,我们希望支持对内容进行讨论和评论的功能,并支持与上下文相关的反馈和在线协作。另一个重要的客户需求是使用惟一的中立的品牌(即可视化标识)。因为这个Web站点是一个中立的场所,具有不同背景的用户在这里进行协作,与任何一家公司或任何一种背景有关的强烈视觉关联都会造成不必要的障碍。回页首开发环境为了简化开发过程,我们希望使用一个现有的内容管理系统来帮助生成一个及时的解决方案。大多数内容管理系统都支持我们需要的基本功能,但是都需要进行详细的定制。开箱即用的实现不足以满足需要。我们希望以开放源码社区中已经取得的成果为基础进行开发。我们最终使用的工具就是按照这一原则选择的。我们对开发环境有几项要求,比如能够在不依靠网络的情况下编写和测试代码的修改。在对修改进行充分测试之后,我们希望与开发团队共享代码。这个迭代式的开发循环导致我们选用一种远程版本系统CVS,从而可以与团队成员保持同步并维护一个所有人共享的代码基。我们选用Eclipse来支持这个项目,并在一个集成开发环境(IDE)中使用所有技术。Eclipse提供了许多扩展并可以非常轻松地与Concurrent Versions System(CVS)进行集成。Eclipse透视图提供了几个支持当前活动的视图和编辑器。在我们的情况中,活动就是编辑PHP模块和HTML片段。Eclipse还跟踪对代码的修改。所以,即使没有将文件签入CVS,仍然可以从本地机器恢复文件的先前版本。Eclipse的这个特性有助于确保不会丢失代码。我们创建了一个集中的开发和测试环境,这样就可以顺畅地处理代码并与团队的其他成员进行协作-您的时间应该花费在编写和测试代码上,而不是管理文件和系统上的其他资源。对内容管理系统的选择影响到需要使用的其他工具。对于Drupal,这意味着用PHP、HTML和层叠样式表(CSS)来开发页面,用MySQL进行后端存储。回页首需求我们建立了一套需求,这将指导我们选择内容管理系统。如果某些特性不存在,我们希望系统能够轻松地扩展以包含这些特性。这些需求包括:内容与表示的分离对内容进行就地(in-place)评论对内容进行就地编辑按线索组织的讨论组(Threaded discussion group)控制访问特权搜索内容在查看任何内容之前进行身份验证会话控制,包括过期以及合法条款和条件的签名支持通过讨论进行社区交互内容管理系统要便于学习提供给客户的内容管理系统的管理界面要简单图1显示了来自这个Web站点的最终设计的一个典型页面。在我们讨论设计和实现的不同方面时,将会详细描述这个页面。图1.来自IBC Web站点的典型页面回页首开放源码内容管理解决方案管理Web站点内容有许多方法,从简单的Web log(blog)引擎系统(只支持有限的内容发布功能)到完整的内容管理系统框架,再到应用程序框架(可以在其上构建自己的定制内容管理系统)。由于在开放源码领域中存在众多的选择,所以很难选择适合自己需要的解决方案。最终,我们选择了Drupal。但是,描述一下我们进行决策的基本原则是有好处的。下一节描述一些候选系统,包括Drupal、Mambo、Typo3、Ruby on Rails、Movable Type、WordPress和TextPattern。内容管理解决方案的对比DrupalDrupal软件允许个人或用户社区轻松地发布、管理和组织Web站点上的各种内容。数以万计的个人和组织已经使用Drupal建立了不同类型的Web站点,包括社区Web门户和讨论站点公司Web站点/内部网门户个人Web站点爱好者站点电子商务应用程序资源目录Drupal支持内容管理系统、blog、协作型编写环境、论坛、时事通信、图片库、文件上载和下载等等。Drupal是采用GPL许可协议的开放源码软件,由一个包括数千用户和开发人员的社区来维护和开发。Drupal可以免费下载和使用。(来源:CMS Matrix)与其他内容管理系统(CMS)相比,Drupal还相当年轻。但是,我们感到这个框架编写得非常好,既健壮又非常灵活,而且有一个兴旺的开发社区,这意味着会有大量用户采用和支持它。与其他CMS一样,这个框架有很强的可扩展性。我们需要的许多特性已经以模块的形式提供了,可以轻松地将这些模块与Web站点的核心功能集成起来。这个框架和模板(主题化)系统完全是用PHP编写的;我们不需要学习另一种标记语言。如果需要摆脱这个框架,可以非常容易地做到。(当然,不建议这么做,但是这提供了最大的灵活性。)会话管理内置在核心功能中,这是其他CMS没有提供的。这免去了后面的许多麻烦。Drupal以其可伸缩性而闻名,也就是可以支持Web站点从少量用户发展到企业级。这个框架还能够对站点的某些区域进行节流,可以避免这些区域在高流量期间造成潜在的问题。学会用Drupal方式创建站点仍然需要一个学习过程,但是其难度与其他CMS相比低多了。为了在业务逻辑层和表示层之间自由地移动(使用PHP模板引擎),还需要掌握PHP。有人认为Drupal的访问控制粒度应该更细,但是我们认为可以利用灵活的可扩展性应对这方面的问题。Drupal 4.7刚刚发布,它对4.6版本做了许多改进。MamboMambo Open Source是当今最出色的开放源码内容管理系统之一。Mambo的默认安装很容易设置和维护。设置实用程序使用一个分4步的向导,允许用户安装整个系统而不需要掌握高级技术知识。安装之后,系统包含许多可供选择的模板和大量现成的功能。用户不必掌握HTML、XML或DHTML,也能够添加、编辑和操作内容-只需使用一个友好的编辑器输入内容并点击Publish。更高水平的用户可以以适合自己技能的层次控制这个系统。核心文件是用PHP编写的Mambo基于Linux、Apache、MySQL和PHP、Perl或Python(LAMP),而且很容易修改。这个系统既健壮又可靠,而且由一个包括用户和专业开发人员的大社区提供支持。(到2006年初,Mambo已经有5年历史了!)(来源:CMS Matrix)目前,Mambo很流行,它提供了非常容易的安装和吸引人的容易使用的管理界面。常常被忽视的一点是,如果客户需要在您交付系统后管理Web站点,而您希望它能很好地工作,那么CMS系统的后端就会变得非常重要。轻松的安装似乎意味着我们需要的几乎所有功能都已经就位了,可以开始主题化了。但是,与许多CMS一样,模板受到一个标记系统的限制,这使您无法控制标记的质量。如果标记是有效的,其结构符合语义,而且充分地设置了CSS ID和class属性以支持样式化,那么很不错。但是,如果不是这样,您就必须探索应用程序的核心,了解如何纠正生成的输出。Mambo只提供了有限的会话管理功能,但是仍然比其他CMS提供的功能多。Mambo的开发路径似乎有点儿混乱,而且对于这个解决方案的未来我们也没有把握。Mambo的开发划分成几个解决方案。Miro是一个商业产品,而Joomla似乎是从Mambo衍生出来的一种新的CMS。Mambo仍然存在,它的当前开发路径似乎比较稳定了。Typo3TYPO3是一种在GPL之下发布的企业级开放源码内容管理系统。它运行在全世界超过122,000台服务器上。这个应用程序已经转换为43种语言,正在包括60个国家中的超过27,000位用户的社区中进行积极的开发。它的用户包括BASF、DaimlerChrysler、EDS、Konika-Minolta、Volkswagen、UNESCO以及许多大学、政府机构和非盈利组织。(来源:CMS Matrix)Typo3很大。大应用程序。大社区。有大量用户采用它。它的扩展特性和代码贡献清单很大。但是,学习它的过程也很漫长。毫无疑问,Typo3可以完成我们需要的所有任务,但是除了复杂性之外,似乎还有其他问题。大量核心模块和贡献的模块所生成的标记使用了90年代中晚期遗留下来的结构,包括大量的表格布局,没有很有效地设置CSS ID和class属性,而且有时候会有无效的结构。我们希望使用当前的最佳实践来保持设计迭代的灵活性,所以Typo3不适合及时开发。这个模板系统与其他解决方案相比似乎太复杂了。花费在了解如何对Web内容进行主题化方面的时间太多了,这个模板系统提供的好处不足以抵消这一花费。管理界面看起来也很笨拙和陈旧,尤其是与Mambo相比。这是一个重要的考虑因素,因为我们最终需要将站点的管理任务交给别人。如果我们有更多的时间,Typo3可能是一个选项。但是,看起来它需要进行重写才能跟上潮流,才能与新兴的其他CMS进行竞争。在Typo3的新版本中,似乎将解决使用基于xHTML和CSS的标准的问题。Ruby on RailsRuby是一种纯粹的面向对象编程语言,它具有非常简洁的语法,使编程更加优雅和有趣。Ruby成功地结合了Smalltalk在概念上的优雅、Python的易用性和Perl的实用性。Ruby在上世纪90年代早期诞生于日本,在其后的几年中,随着更多的英文图书和文档的出现,Ruby开始在全世界范围流行起来。Rails是一种开放源码的Ruby框架,它用来开发以数据库作为后端的Web应用程序。Rail的主导方针是:更小的软件和约定优于配置(convention over configuration)。更小的软件意味着实现应用程序所需编写的代码行更少。使代码更小就意味着更快速的开发和更少的bug,这使代码更容易理解、维护和改进。稍后您会看到Rails如何减轻代码负担。约定优于配置意味着不再需要冗长的XML配置文件-Rails中没有任何配置文件!Rails应用程序并不使用配置文件,而是使用几条简单的编程约定,从而允许通过反射和发现来查明所有配置。您的应用程序代码和运行的数据库已经包含了Rails需要知道的所有东西!(来源:Rolling with Ruby on Rails)典型的内容管理系统允许经过身份验证的用户创建内容,内容形成的页面会成为Web站点的一部分。但是,Ruby On Rails(ROR)并没有直接提供这个特性。它提供了一个Web应用程序框架。可以使用ROR从头构建一个定制的CMS。在我们的项目开始时,围绕着ROR掀起了一股热潮,这主要是由37Signals推动的,它的在线ROR应用程序(比如Base Camp)给人们留下了深刻的印象。我们喜欢这种通过框架绑定到数据库的方式。这有助于加快与数据库表列相关联的开发的重复性部分。在我们进行研究时,这个框架还是以blog为中心的。其稳定性还成问题,但是我们认识到它可能可以用在未来的项目中。创建定制的CMS是有意义的。例如,可以利用定制的解决方案创建一个可主题化的管理界面。但是,由于时间限制,我们需要在一个CMS的基础上进行构建。blog引擎我们考虑使用一个现有的发布系统,它主要支持创建blog。我们以前使用过这种系统,通过重新定义使用类别和数据的方式来支持非blog Web站点的内容。这些类型的解决方案无法与Drupal、Mambo和Typo3这样的系统进行竞争。例如,通常不支持Drupal和Typo3提供的那种会话管理。但是,它们提供了一种创建简单CMS的非常简单且快速的方式。这些解决方案是以blog为中心的,下面是一些可供选择的方案:Movable TypeMovable Type是一种强大的可定制的平台,它允许用户在个人发布系统中创建有吸引力和表现力的Weblog,这个系统可以无限地定制,可以说是万能的。Movable Type作为基于服务器的软件运行。由于提供了丰富的特性、开放的体系结构和健壮的第三方插件库(用来扩展系统的功能),Movable Type已经被个人和公司广泛采用。全世界的开发人员创建了数以百计的插件,以此为基础,可以在熟悉的经过测试的Movable Type系统上构建出全新类型的应用程序。(来源:CMS Matrix)作为当前比较流行的blog发布系统之一,这个Perl实现拥有很大的贡献者社区和良好的支持结构。主要的障碍是其创建者Six Apart创建了一个收费结构来支持它的产品开发。因为我们希望创建一个开放源码的解决方案,所以很早就打消了使用Movable Type的念头。WordPressWordPress是一种很有新意的语义性个人发布平台,它主要关注美观、Web标准和易用性。WordPress既是免费的,又是无价的。简单地说,在您考虑blog软件时,WordPress就是您需要的东西。通过简单易用的插件体系结构,很容易改进WordPress的默认功能以及添加新的功能。(来源:CMS Matrix)在我们的项目开始时,WordPress正在逐渐走向成熟。与Drupal相似,支持这个解决方案的wiki风格的文档系统很有用。核心代码很干净而且容易扩展,用户界面也非常容易使用。模板系统是一个典型的基于选项卡的系统,它完全可以与其他blog发布平台相匹敌。从这个系统生成的输出支持当前的最佳实践,而且内容布局和可访问性的开发也很容易。WordPress的不足之处是它缺乏缓存功能,我们认为这可能会限制可伸缩性。TextPattern这是一种免费的、优雅的、容易使用的内容管理系统,适用于所有类型的Web站点,甚至是Weblog。涉及到在互联网上发布时,新手和专家同样会遇到了一个令人烦恼的悖论:字处理程序和图形应用程序使任何人都可以很好地管理个人计算机上的文本和图形,但是要使这些文本和图形在全球性的Web上可用,情况一下子就复杂化了。这个文档和目标环境表面上与本地系统相似,但实际上差别很大。在其中使用文本和图形要求开发人员具备多语言编程技能,精通基于计算机的图形设计,而且具有圣人般的耐心。原本自信满满的开发人员在Web固有的编写语言的不灵活性面前大受挫折,即便处理最简单的文本也会遇到困难,使用WYSIWYG Web编辑器却产生出乎意料的结果,这一切都会让他们心灰意冷。设计TextPattern这个Web应用程序的目的正是为了克服在线发布的这些障碍,并简化结构良好、符合标准的Web页面的开发过程。(来源:CMS Matrix)与WordPress相似,TextPattern看起来是另一个精美的blog发布系统。它具有干净的管理界面,似乎很容易使用。但是,它缺乏我们需要的许多特性,包括会话控制和缓存。图2显示了上面讨论的产品的一些软件需求。图2.一些内容管理框架的软件需求回页首决定使用Drupal因为我们需要让这个Web站点的设计对于我们自己和接受这个解决方案的任何人都很容易,所以安装框架的简便性和掌握其使用方法所需的时间就成了关键因素。尽管Ruby on Rails(ROR)很吸引人,但是我们认为从头编写CMS需要花费的时间太多了,所以从考虑的范围中去掉了ROR。如果我们能够有效地控制对每个人的信息的访问,那么具有健壮且灵活的会话管理和用户管理会使实现更容易。当然,如果具有健壮的可插入基础结构,还有活跃的社区为现有框架提供高质量的扩展,那么实现的速度也会提高。另一个关键因素是,随着并发用户数量的增加,可能需要很高的可伸缩性。能够轻松地调整内容的显示方式,这一点也很重要;我们需要在开发的迭代过程和未来的任何调整期间保持灵活性。对于语义xHTML、CSS和可访问的设计,使用Web设计当前的最佳实践还需要所谓的可主题化。图3显示了候选解决方案在哪些方面满足我们的需求。显然,我们需要的一些东西是blog引擎无法提供的。图3.候选解决方案与需求的匹配程度Mambo在安装的简便性和UI方面很突出,但是开发跟踪很不够,而且在支持方面也让人不放心。Typo3看起来有一个庞大的社区,而且其成熟度也是我们所需要的。但是,与Drupal相比,学习使用Typo3要困难得多。我们只需花少量时间来学习Drupal方式,而且这个框架看起来很有意义。我们还觉得Drupal提供了框架和灵活性的恰当组合,在需要摆脱框架时也可以做到。考虑了所有方面之后,我们决定使用Drupal。开放源码CMS领域的形势还在不断地变化,在未来我们会重新研究这些系统和任何新系统。Drupal的详细情况Drupal包含许多内置的特性,并可以在活跃的社区支持下轻松地扩展,能够添加额外的特性组合。基本特性包括:使用Apache的mod_rewrite功能提供友好的URL使用Drupal的模块框架轻松地进行扩展(社区开发了许多有用的模块,它们提供了分类显示、jabber身份验证、私有消息、书签等功能)个性化的环境,可以根据用户的首选项对内容和表示方式进行管理基于角色的权限系统,可以控制对内容的查看和编辑权限内容完全编入索引以支持搜索Drupal是在数据库抽象层上编写的,所以框架可以轻松地扩展到其他数据库后端支持其他内容形式,比如投票、按线索组织的评论以及讨论和内容联合在一个使用HTML、CSS和PHP的模板系统中分离内容和样式对日志、分析和基于Web的管理的支持在线帮助扩展Drupal我们使用Drupal的模块框架来添加支持Web站点所需的扩展特性。扩展特性包括:创建一个外部网环境-一个完整的站点,它要求先进行身份验证,然后才能看到信息基于用户与Web站点的交互的会话过期机制条款和条件策略实现对现有的内容编辑界面进行扩展,提供就地编辑(例如,向经过授权的用户显示在Web页面中他们可以编辑哪些内容,允许他们选择这些内容并在原地进行编辑)管理公告,发布所有成员都应该看到的信息管理工作组任务、当前状态、议题等等使用Ajax管理研讨会和议题的创建,帮助完善管理界面为成员信息及其搜索提供扩展的视图和管理界面以边栏形式显示额外的信息块,从而根据成员的角色和他们拥有或创建的数据显示上下文数据用电子邮件向对特定内容领域感兴趣的成员发送每周信息摘要本系列中的后续文章会讨论其中的许多扩展。我们在Drupal 4.6中开发了这个Web站点,但是Drupal 4.7现已发布。本系列文章将基于4.7实现进行讨论。回页首其他内容管理框架有许多内容管理框架。您应该根据自己的需求对它们进行评估。在本文中,您已经了解了以下系统的优点和缺点:MamboTypo3Ruby on RailsMovable TypeWordPressTextPattern回页首结束语IBM Internet Technology Group的这个文章系列将介绍如何使用开放源码软件设计、开发和部署一个协作型的Web站点。本文概述了这个项目和我们的需求,并对比了我们分析过的几个内容管理系统。还解释了选用Drupal的原因,以及如何对Drupal进行扩展来满足需求。下一篇文章将描述一种灵活的设计方法,以此解决应用程序的设计过程中的问题。这个过程可以用来为Web站点或应用程序设计用户体验。然后介绍开发过程的技术方面,分步指导您安装开发工具和所有支持技术。然后讨论定制开发环境的其他方面。这些主题包括:Drupal入门Drupal与其他软件工具的交互,比如MySQL、PHP、CSS和Ajax构建定制的Drupal模块对安装进行部署和调优我们希望帮助您尽可能快速地安装和运行一套健壮的内容管理工具,使您能够高效地对Web应用程序进行定制。参考资料学习您可以参阅

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论