Portal架构相关技术汇总

Posted 尔安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Portal架构相关技术汇总相关的知识,希望对你有一定的参考价值。

一、什么是Portal?

Portal技术强调以用户为中心,简而言之就是整合现有企业中遗留的各种系统,使之有统一的入口,实现信息的集中访问。

二、Portal中主要应用的功能

1)SSO—Single Sign-On

主要开源SSO协议有

①Jasig CAS

CAS 就是 Central Authentication Service(中央认证服务)的意思,CAS 实际上这是一种 SSO 协议。

②OpenID

OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地址)来认证一个网站的唯一身份,同理,我们也可以通过这种方式来作为用户的身份认证。由于URI 是整个网络世界的核心,它为基于URI的用户身份认证提供了广泛的、坚实的基础。

OpenID 系统的第一部分是 身份验证,即如何通过 URI 来认证用户身份。目前的网站都是依靠用户名和密码来登录认证,这就意味着大家在每个网站都需要注册用户名和密码,即便你使用的是同样的密码。如果使用 OpenID ,你的网站地址(URI)就是你的用户名,而你的密码安全的存储在一个 OpenID 服务网站上(你可以自己建立一个 OpenID 服务网站,也可以选择一个可信任的 OpenID 服务网站来完成注册)。 与OpenID同属性的身份识别服务商还有ⅥeID,ClaimID,CardSpace,Rapleaf,Trufina ID Card等,其中ⅥeID 通用账户的应用最为广泛。

③OAuth

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写

④SAML

SAML(Security Assertion Markup Language)是一个XML框架,也就是一组协议和规范,可以用来传输企业用户身份证明, 主要是企业外的身份跨域传递。比如,公司(idp)的用户要访问SAAS 应用(sp),为了保证身份安全,我们可以采用除了加密签名等措施,还要采用SAML规范来传输,传输的数据以XML形式,内容符合SAML的推荐标准,这样我们就可以不要求idp和sp采用什么样的系统,只要求能理解SAML规范即可,显然比传统的方式更好。SAML 规范是一组Schema 定义。 可以这么说,在Web Service 领域,schema就是规范。

⑤Kerberos

(Kerberos: Network Authentication Protocol)网络认证协议

Kerberos 是一种网络认证协议,其设计目标是通过 密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于 主机操作系统的认证,无需基于 主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的 数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的 密码技术(如:共享密钥)执行认证服务的。 认证过程具体如下:客户机向认证服务器(AS)发送请求,要求得到某服务器的证书,然后 AS 的响应包含这些用客户端 密钥加密的证书。证书的构成为: 1) 服务器 “ticket” ; 2) 一个临时加密密钥(又称为会话密钥 “session key”) 。客户机将 ticket (包括用服务器密钥加密的客户机身份和一份会话密钥的拷贝)传送到服务器上。会话密钥可以(现已经由客户机和服务器共享)用来认证客户机或认证服务器,也可用来为通信双方以后的通讯提供加密服务,或通过交换独立子会话密钥为通信双方提供进一步的通信加密服务。 上述认证交换过程需要只读方式访问 Kerberos 数据库。但有时,数据库中的记录必须进行修改,如添加新的规则或改变规则 密钥时。修改过程通过客户机和第三方 Kerberos 服务器(Kerberos 管理器 KADM)间的协议完成。有关管理协议在此不作介绍。另外也有一种协议用于维护多份 Kerberos 数据库的拷贝,这可以认为是执行过程中的细节问题,并且会不断改变以适应各种不同数据库技术。 Kerberos又指麻省理工学院为这个协议开发的一套计算机网络安全系统。 系统设计上采用客户端/服务器结构与 DES加密技术,并且能够进行相互认证,即客户端和服务器端均可对对方进行 身份认证。可以用于防止窃听、防止replay攻击、保护 数据完整性等场合,是一种应用对称密钥体制进行 密钥管理的系统。Kerberos的扩展产品也使用 公开密钥加密方法进行认证。 2)资源整合

①iFrame Portlet

iFrame的方式有很多弊端,不建议使用

》使用 Iframe 框架,可能会改变原有应用的 html 结构,导致某些脚本无法运行。

》在一个页面中过多的潜入 IFrame,由于不同 IE 版本对于 IFrame 的处理能力各异,可能会出现不可预料的异常效果。

②Web 应用聚合器 (Web Application Integrator)

传统的门户集成方式一般是把业务系统的局部或整体界面嵌入到门户页面中,而 Web 应用聚合器是指在业务系统的页面中嵌入门户的主题导航、显示风格等元素,以让业务系统的操作界面保持与门户系统一致。

②业务模块化集成展现(基于应用接口、业务功能模块的整合)

业务模块化集成,是比较深入的整合方式,可实现很好的集成效果,在此模式中,业务应用与门户之间,业务应用与业务应用之间,利用应用中的接口和函数提供接近实时的集成。在企业门户中,实现业务模块化集成,可以作为企业 ESB 建设的前期尝试和技术积累。一些已经实施了 ESB 项目的企业,利用门户产品可以更大的发挥 ESB 的价值。模块化集成可通过以下技术实现:

》对于纯展现类的信息模块(信息整合),可以利用业务系统中默认提供的底层接口,如 HTML 接口(可以容易通过 HTML Parser 解析的)、XML 接口、Json 接口、Rest 接口等,使用 RAD、Portlet Factory 等开发工具开发实现。此类场景中,门户项目经理及开发工程师主要是需要理清业务系统究竟可以提供哪些现成的接口,利用哪些接口可以更快速的实现开发、部署。
》对于一些标准化产品的模块化集成,比如需要集成 Domino 邮件、SAP 财务模块。一般这些产品会提供多个层面的标准接口,Domino 提供 JAVA/CORBA、JDBC、EJB、Web Service 等方式,SAP 可以提供 BAPI、Web Service 等接口。同时,选择合适的运行、开发平台来加速开发也很重要,例如可以使用 WebSphere Portlet Factory 中开箱即用的构建器(Builder)来来快速生成表单,加速整合进度。
》对于一些交互性模块的集成或者一些非标准化的业务整合需求 ( 应用整合 ),例如需要在门户的内容发布模块直接选择 OA 系统中的公文进行发布,例如需要在门户中实现统一待办等,均需调用这些应用系统的接口,并进行二次开发实现。
增加协作功能,模块化集成方式中,均需基于某些接口进行二次开发,故为了更好的实现集成的价值,尽量在业务模块的实现协作能力,如实现在线感知、实现个人名片等功能,促进人员之间的协作。
》保持松耦合,从企业 IT 运作的角度来说,先前的应用之间彼此独立,每当有新的业务需求产生时,企业的 IT 部门都要做大量的改进工作,耗费大量的人力、物力和财力。使用门户进行应用整合时,需要建立不同应用系统间的松耦合机制,从而为将来开发面向新的业务的应用奠定基础,以最终节省成本。


②数据集成展现(基于业务数据集成整合)

数据集成的另外一层含义包括数据和数据库的集成,包括数据的标识化和编目,包括主数据管理,还包括元数据建模,包括数据在数据库系统中的分布和共享等。在这里,主要是指已经处理好的数据,如何通过门户进行展现的问题。

将业务系统相关的业务数据通过 portlet 技术实现与门户站点内容聚集,在实际集成中会经常遇到。通常业务系统并没有提供相关的业务数据整合功能,门户需要将不同业务功能的业务数据在一个 portlet 做集中展现,或者将某一个业务功能统计的数据部分展现。数据集成展现的主要技术实现如下:

》通过 JDBC、Web Service 等方式,直接访问后台业务系统的数据源,并在 RAD 或 Portlet Factory 中进行 Portlet 开发。
》通过 WebSphere Dashboard Framework 进行 Portlet 开发,利用内置的开箱即用的构建器(Builder)加速对 BI 系统的开发实施,利用内置的图形化引擎 (iLog Jview),实现丰富的展现效果。
》直接利用 iLog Jview 图形化引擎进行 Portlet 开发。
》某些特殊效果,比如动画效果,还可利用 Flex 开发 Flash 格式的 Portlet,然后嵌入到门户中。

3)CMS

门户系统自然少不了内容发布,目前最受欢迎的10个java CMS系统是:

①Walrus CMS  采用的是Spring的框架

②OpenCMS OpenCms基于JAVA和XML语言技术,因此它适合完全融入到现有的系统内部。

③ASbru Asbru 网站内容管理系统是一个全功能易用的、基于数据库的网站内容管理系统(CMS)。内置社区、数据库、电子商务和统计模块。支持多种操作系统以及大多数的数据库系统;支持 .NET、php、Java等开发语言。

④Pulse 用Java 开发的 Web 应用框架以及一个Portal解决方案

⑤Magnolia 是一个开源基于Java的Web内容管理系统(CMS) ,构建在Java内容知识库标准(JSR-170). 

⑥MeshCMS MeshCMS是一个由java写成的在线编辑系统,.并拥有 cms所包含的一系列特点.但它采用的是非常的传统方法来实现的:如页面是以html文档形式存储的,一些附加的特点均是基于文挡的,且还无须数据库.

⑦Infoglue 是一个高级的、可扩展的、健壮的内容管理系统

⑧Jadasit 一个用Java开发的开源易用的内容管理系统和电子商务系统

⑨Enonic CMS是一个完整的软件平台,包括门户网站,介绍通过各种数字频道和内容管理系统专为中型到大型组织定义的网络战略。

10Apache Lenya 是java的开源内容管理系统。它基于一些标准的技术比如XML 与 XSLT。它其中的代码核心来自于另外一个开源项目Cocoon


4)搜索

门户系统避免不了全站搜索的功能,这个功能需要涵盖所有的子系统中的内容,一下列举用java开发的搜索引擎:

①Lucene

Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一个搜素引擎需要自己去架构.另外它不支持实时搜索

②Nutch

Nutch是一个用java实现的开源的web搜索引擎,包括爬虫crawler,索引引擎,查询引擎. 其中Nutch是基于Lucene的,Lucene为Nutch提供了文本索引和搜索的API.

对于应该使用Lucene还是使用Nutch,应该是如果你不需要抓取数据的话,应该使用Lucene,最常见的应用是:你有数据源,需要为这些数据提供一个搜索页面,在这种情况下,最好的方式是直接从数据库中取出数据,并用Lucene API建立索引.

③Terrier 

Terrier是由School of Computing Science,Universityof Glasgow用java开发的一个全文检索系统.

④Galago

是一个用java语言写的关于文本搜索的工具集. 其中包括索引引擎和查询引擎,还包括一个叫TupleFlow的分布式计算框架(和google的MapReduce很像).这个检索系统支持很多Indri查询语言.
⑤Solr

是一个用java开发的独立的企业级搜索应用服务器,它提供了类似于Web-service的API接口,它是基于Lucene的全文检索服务器,也算是Lucene的一个变种,很多一线互联网公司都在使用Solr,也算是一种成熟的解决方案.

⑥Elasticsearch 

是一个采用java语言开发的,基于Lucene构造的开源,分布式的搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定可靠. Elasticsearch的数据模型是JSON.























以上是关于Portal架构相关技术汇总的主要内容,如果未能解决你的问题,请参考以下文章

Portal架构相关技术汇总

5G无线技术基础自学系列 | 传统无线网络架构

架构设计第一讲:架构设计相关面试题汇总

细粒度图像相关汇总

高并发分布式架构演进之路

收藏:并发分布式架构演进之路