我想把几个现有独立的系统集成到一个统一的访问平台(java)上。
现有系统:
1. 百科论坛系统 开发语言:php+mysql+apache
2. 客户关系系统 开发语言:spring+struts+hibernate+tomcat+MS SQLServer
3. 课件管理 开发语言:php+mysql+apache
集成目标:
1. 不要对原有的系统做任何改动
1. 统一的访问入口(单点登录)
2. 各个子系统状态监控(意味着要收集子系统数据)
问题:
1. 因为各个系统都是一个独立的web系统,现在需要集成到一个web系统然后统一的入口登录,那么每个系统的web部署等方面这么处理?(web service可以吗)
2. 采用SOA架构的话 有什么好推荐?
3. 有没有其他更好的方式?(简单 快捷)
谢谢!
------解决方案--------------------------------------------------------
集成目标:
1. 不要对原有的系统做任何改动
——可以但是有条件,主要做法是自动登录。
2. 统一的访问入口(单点登录)
——单点登录跟第一点要求冲突,单点登录要求对原有系统进行修改,修改规模可商讨。
3. 各个子系统状态监控(意味着要收集子系统数据)
——看你要搜集到什么级别的状态数据,PHP自身提供了性能监控的能力,可以借助这个来搜集。
问题:
1. 因为各个系统都是一个独立的web系统,现在需要集成到一个web系统然后统一的入口登录,那么每个系统的web部署等方面这么处理?(web service可以吗)
——我觉得你理解错了WebSevice的主要作用吧?在集成领域的话,WS是面向服务集成的。
2. 采用SOA架构的话 有什么好推荐?
——你的需求,跟SOA架构没看出啥关系,何苦去搞SOA架构?更何况你还要求不修改原系统。
3. 有没有其他更好的方式?(简单 快捷)
——自动登录,大家都用它,连集成C/S架构系统都用它。
自动登录,原理可能让你觉得很不够nice,但是在面向内部应用系统集成时,还真的很受欢迎。
简单点说:就是直接把从目标系统中查询出来的用户名+密码,做成POST,然后提交给目标系统登录页面,完成自动登录过程。当然,目标系统中可能没有用户名+密码(因为它被加密了),那么没关系,可以让用户自行设置,并且从数据集成的层面,统一该用户在所有目标系统的密码。
另外,没看出来你有内门户的需求,所以Portal啥的就都省省吧,浪费时间、精力与金钱。
欢迎继续探讨,分不是问题,只要你能积极互动。
------解决方案--------------------------------------------------------
总体思路没太大问题。不过几个点没看明白:
2. 新建一个web应用 然后这个应用对外发布
——你的意思是其它三个遗留系统就不对外发布了么?如果是这样,要做反向代理的,但貌似没必要;
4. 难点是如何取得遗留系统的数据
——视乎你想获取遗留系统的什么类型数据:
——1、数据库中已有的,那么可以直接访问数据库,用DBLink+同义词来简化访问方式并限制可访问内容;另一种方式是将所需访问数据进行复制,比如物化视图或用GoldenGate之类的工具;如果你十分不喜欢数据级的集成,那么就只能作罢;
——2、界面上有的,那么可以直接用IFrame来直接嵌套遗留系统目标页面的方式来共享页面信息,低代价;另一种方式是用HTTPClient去遗留系统上去抓数据,如果是敏感数据不能直接暴露给最终用户的话,也是一种选择,不过总体来说代价高了点,一般用于绝对不能修改遗留系统的情况;
——2、基本只有应用中才有,那么就是应用集成,你需要在遗留系统上开放或者开发用于搜集和暴露相关数据的接口,可以用EJB或WS,一般来说EJB性能会更高。
4. 新系统能得到遗留系统的数据(状态监控:当前在线人数等等)
——所谓监控在线人数,不知道你的遗留系统是否已经有此功能,如果没有的话,另行开发虽然不算麻烦但恐怕不能如你所愿,核心问题是在线这个概念;常规做法就是SessionListener。
SOA跟ESB没有必然关系,SOA是架构思想,ESB用来降低多系统之间基于服务集成的管理复杂度,如果只是几个系统之间的,ESB除了带来性能损耗外,没有太多实际价值。什么服务编排、服务组装、服务质量管理、协议转换、服务审计、服务监控之类的东西,除了监控审计略有点价值外其它都没啥实际意义。当然如果性能并非重点问题,用了也没啥大问题。
内部应用系统整合分几个层面:
1、入口集成,也就是摆几个超链接的事情,复杂度最低,即便你真的用单点登录;
2、资讯集成,涉及到需要从多个系统抽取公共服务信息,如公告、通知、新闻等内容,难度稍高;前面也说了,要么IFrame,要们走服务接口集成;
3、待办事项集成,本身又分两个难度层级,一个是仅集成待办事项列表,另一个是要点击待办事项可直接打开目标遗留系统的办理窗口,后者往往是噩梦级难度;
4、统一界面,这个一般很少做,要求所有应用系统用同一个风格在内门户系统中集成展现,工作量较大而受益较低,除非是新建系统,否则一般没人这么玩。
5、自定义门户(我的办公桌面)之类的东西,其实本身不太涉及整合复杂度,但一般也没啥鸟意义,谁没事总改办公桌面玩,给他几个固定的功能窗口,稍微能支持下最小化就完事了。
------解决方案--------------------------------------------------------
1. 入口集成:超链接解决。当我向新的系统注册一个用户的时候同时也向遗留系统注册一个用户?how?我不直接访问数据库
——这是必须的。因为你做不到统一权限管理,那么遗留系统就必然需要自己的用户和权限表数据来保证系统正常的权限管理和权限控制,包括菜单;复杂的系统还涉及到数据权限。这,是SSO也无法解决的问题。
——如果不能直接访问数据库,那么就只有两种做法:
——1、修改遗留系统,提供增加用户的接口服务,EJB或WS随意;
——2、采用HttpClient来模拟表单POST,操作遗留系统的用户管理模块。
——后者无需修改遗留系统,但风险、代价和可用性偏低。
2. 咨询集成:这好像就是我需要的。每个子系统独立做自己的事情,然后统一的登陆接口(SSO).但我要取出这些子系统的某些数据比如百科系统有一条新消息我要在新系统里有提示。不直接访问数据库。
——是资讯集成。前面说了,四条路:IFrame潜入、HttpClient拉取、数据复制过来、服务接口开发。哪个不理解你再问。
3. 统一的界面我也有考虑,新建一个系统,然后集成所有其他遗留系统的界面。能给我一些这方面的建议吗
——不建议统一界面,性价比太低。
——一般只做到超链接集成,最了不起你就外面做个多子窗体Frame框架(类似浏览器的多标签页),然后里面DIV+IFrame去潜入遗留系统界面。但一般容易因为出现多菜单、影响可操作空间、多滚动条等问题饱受争议;所以效果一般,其实意义也不大,看似一个系统,界面风格迥异,也没多大意思。
——更狠的就是在前者基础上做界面重构,两种方案:
——1、规范统一风格,然后遗留系统的界面,尽量以调整样式风格和色调为主,让各系统长得比较像;需要改造遗留系统,不过主要是JSP、CSS、Image;
——2、将遗留系统当作纯服务端,不再直接访问遗留系统界面,所有界面迁移到门户系统,然后重写;
内部信息系统整合类项目,尽量控制用户需求,以实用性为第一目标,性价比低的东西尽全力抹杀。
------解决方案--------------------------------------------------------
楼上说的最后就变成
"基于模拟登录请求的统一认证需求"
最少最少需要考虑问题
1:http模拟form port
2:登录后页面跳转
3:用户同步问题(当然最好情况就是用户不同步,你的统一web分别到每个数据库中查询用户信息)
用户登录等于认真信息相关的统计数据可以从统一web中获得,不过不一定准确就是了....
以上都能确认...那遗留系统不用改