none
如何将不同的信息系统进行WebService整合 RRS feed

  • 问题

  • 需求是这样的:
                 目前有多个信息管理系统,分别是由不同的编程语言(asp、java、php等)开发,后台数据库也不同。现在要做个统一的SOA系统,共享各个系统的信息。
                 
           
      请问:
                 1.是应该分析每个系统的业务逻辑然后用.net平台的WebService将其业务公开出来,还是用原来的各种语言分别公开他们的业务?
                 2.在哪里可以找到利用.net技术开发跨平台SOA的资料? 
    • 已更改类型 罗晓 2009年7月14日 5:24
    • 已编辑 罗晓 2009年7月14日 5:29
    2009年7月14日 5:24

答案

  • 你先根据各个系统需要的业务对象 设计业务实体  比如说你这是个图书管理系统 你就要在.net上建立

    public class book
    {
        string 作者
        string  书名
      ...
    ...
    }

    然后把这个实体作为  web service 的参数或者返回值暴露出来

    这样  在所有asp  java 和php 等调用webservice 的程序中都会产生一个相同的book类型       你只需要在各个平台上装填book中的数据  传递给.net webservice就好了
    答案900, 目标五颗星
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月14日 5:31
  • 是的


    多个平台间的数据结构不统一  我们就用webservice 公开一组统一的数据结构   作为第三方公共标准引入
    答案900, 目标五颗星
    • 已标记为答案 罗晓 2009年7月17日 3:53
    2009年7月14日 5:50
  • 需求是这样的:
                 目前有多个信息管理系统,分别是由不同的编程语言(asp、java、php等)开发,后台数据库也不同。现在要做个统一的SOA系统,共享各个系统的信息。
                 
           
      请问:
                 1.是应该分析每个系统的业务逻辑然后用.net平台的WebService将其业务公开出来,还是用原来的各种语言分别公开他们的业务?
                 2.在哪里可以找到利用.net技术开发跨平台SOA的资料? 

    Hi,
       参与讨论一下。我有几个问题想确认一下,你现在的系统架构确定了吗?新的系统的起码要确定个框架。不然要走很都弯路。现在SOA这个概念炒得很火。貌似很多人都在关注。SOA重要的一点就是最大限度里利用现有资源,节约开发成本吧。
    1.你们原有的系统,这写业务逻辑是不是已经封装好了。如果封装好了,基于原有的平台来语言开发,这样或许能节约开发的时间,完全重新开发的成本有点高。
    2.SOA其实与语言或者平台无关。微软在推行SOA战略。能做到跨平台、语言的系统集成,以前的技术Web Service(或者说是技术标准)..net 平台上的实现就是 Asp.net Web Service.包括后续的的扩展 WSE。现在推出的WCF,都算是微软SOA战略的一部分。也有说法是,BizTalk是真正的微软面向SOA的企业级产品。
    3.我们也在做SOA架构的系统,也涉及到以前系统的维护和开发。我们使用的是BizTalk。
    4.微软SOA的相关的技术资料,你可以到BizTalk板块咨询一下,斑竹金剑忠。也可以到WCF提问。付仲恺斑竹曾经讲授过,WCF构建面向服务的应用相关的课程,你也可以到Web Cast学习。
       直接搜索,CSDN和博客园也有不少技术文章,你都可以参考。
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月14日 11:30
    版主
  • ...
    感觉整合这些系统到SOA,不管从技术上还是业务上看都是一场硬仗。

    Hi,
       不要客气,互相学习~
    1.如果你选择BizTalk Server 2006来整合现有的系统,做EAI的话,确实是个不错的选择。不过你最好项目内部有人相对有点经验。系统整合后的目标大概确定,再选择技术或者平台。如果你现在的开发团队使用Biztalk开发没有问题,基本可以确定了。Biztalk提供了多种适配器,适合做整合基于异构的数据源的企业的业务系统。它与微软现有开发工具和组件的兼容性也不错,提供的开发配置工具,也能方便开发,提高工作效率。
    2.大部分EAI基本都会涉及到数据或者服务的重用问题,当然业务流程也是很重要的一个方面。如果你系统集成的目标涉及到的功能比较单一,比如只是简单的调用CRUD操作,完全可以简化。如果业务逻辑复杂,牵扯到流程问题,你可能要重写部分业务逻辑了。asp开发的系统,据我所知,asp貌似是脚本+COM组件实现的数据交互。早期的风格是很多业务逻辑习惯封装到SQL的存储过程里,如果这样,还是可以重用数据,至少数据访问的存储过程可以重用。按照你现在的说法,逻辑封装到脚本里,嵌入到aspx文件里,基本不能重用。可以考虑重新写新的业务逻辑了,然后在调用。也就是你提到的数据整合。
    3.如果现有的业务逻辑不是很复杂,或者原有的系统开发的很不规范。可以考虑数据整合。如果现有的10个系统各个业务逻辑都很复杂,而你完全重写的代价还是很高。在要求服务重用的话,你要考虑使用WebService 或者WCF来重新开发和部署这些服务接口。BizTalk提供了多种适配器,整合异构数据源不是问题。
        从你现在的情况来看,原有的各个系统还在继续使用,只是新开发的系统还要在最大限度的利用别的系统功能的基础上。管理系统开发最难的就是业务逻辑,技术到是其次的。你真要做到SOA,重写现有的业务逻辑,也要考虑到以后的服用。这个确实有点难度。
       我个人也是在学习,以后可以多交流~ 呵呵
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月15日 13:01
    版主
  • Hi, 罗晓

    >" 1.是应该分析每个系统的业务逻辑然后用.net平台的WebService将其业务公开出来,还是用原来的各种语言分别公开他们的业务?"

    在你后面的回复中看到,你们已经采用了Biztalk. Biztalk 就是为集成(Integration) 而生的。使用相应的Adapter 便可以与几乎所有的系统进行交互。在你的场景里,如果用.net 重写原来的逻辑的话将是一笔巨大的开支。如果原来的系统公布了 Web Service 接口,Biztalk 里有Web Service Adapter 可以与之交互,如果原来的系统是一个网站,只能用http 协议进行访问,你也可以使用Biztalk 的Http Adapter 与之交互。 也就是说原来的系统差不多可以原封不动拿过来使用。

    由于系统繁杂,消息格式也会千变万化,那么我们需要使用Biztalk 的map ,来统一不同系统的消息格式(一般都会采用XML格式)。

    至于业务逻辑的整合,这个差异很大,不同项目差异也很大,不过可以把一些整体性的,全局性的逻辑提取出来,用 WF 或者直接写成 Biztalk Orchestration。

    我的建议是,既然已经使用了Biztalk ,便把Biztalk 做为一个中心,其他的有待集成的应用程序,能不动尽量不动。


    Microsoft Online Community Support
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月16日 3:50
    版主
  •    呵呵,不要客气,互相交流,互相学习~
    1.希望你能做成啊,最好项目的管理要做好,计划详细点。如果全部白手起家的话,风险肯定不小啊。作为技术人员学习无所谓,但是真到最后做不出东西,这个就影响大了,无论个人还是公司。
    2.对于管理系统,或者EAI,需求永远都是第一位的。呵呵,既然目前的需求不大,你到可以做到满足目前要求的基础上,在考虑系统整合后的可维护性、可扩展性。分阶段实现目标。不要给予求成。这样还容易出成果,而且不会项目进入无限的死循环。
    3.老系统多了,平台差异大,这个也是SOA概念用武之地。Biztalk作为ESB确实适合这样复杂的情况。腐朽了也不可怕,呵呵,枯木也能逢春!以后EAI成功以后,公司节约了成本,你个人也学到了技术~
       多好的机遇~
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月16日 13:41
    版主

全部回复

  • 你先根据各个系统需要的业务对象 设计业务实体  比如说你这是个图书管理系统 你就要在.net上建立

    public class book
    {
        string 作者
        string  书名
      ...
    ...
    }

    然后把这个实体作为  web service 的参数或者返回值暴露出来

    这样  在所有asp  java 和php 等调用webservice 的程序中都会产生一个相同的book类型       你只需要在各个平台上装填book中的数据  传递给.net webservice就好了
    答案900, 目标五颗星
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月14日 5:31
  • 非常感谢!


    是不是可以这样理解:
    相当于用WebService把图书管理系统的对外业务封装一下,外界要使用图书管理系统的信息就直接引用图书管理系统的这个WebService,与WebService交互?
    然后图书管理系统要使用其他系统的信息就引用其他系统的外包装公开的WebService?
    2009年7月14日 5:40
  • 是的


    多个平台间的数据结构不统一  我们就用webservice 公开一组统一的数据结构   作为第三方公共标准引入
    答案900, 目标五颗星
    • 已标记为答案 罗晓 2009年7月17日 3:53
    2009年7月14日 5:50
  • 非常感谢! 我没有做过SOA,没有这方面的经验。看了你上面的这些解答,觉得明白多了,呵呵!

    那么这样的话,封装asp应用的webservice怎么重用现有的asp的业务逻辑呢?
          是不是要重新用C#将这个系统的业务逻辑实现一遍?

    2009年7月14日 6:03
  • 需求是这样的:
                 目前有多个信息管理系统,分别是由不同的编程语言(asp、java、php等)开发,后台数据库也不同。现在要做个统一的SOA系统,共享各个系统的信息。
                 
           
      请问:
                 1.是应该分析每个系统的业务逻辑然后用.net平台的WebService将其业务公开出来,还是用原来的各种语言分别公开他们的业务?
                 2.在哪里可以找到利用.net技术开发跨平台SOA的资料? 

    Hi,
       参与讨论一下。我有几个问题想确认一下,你现在的系统架构确定了吗?新的系统的起码要确定个框架。不然要走很都弯路。现在SOA这个概念炒得很火。貌似很多人都在关注。SOA重要的一点就是最大限度里利用现有资源,节约开发成本吧。
    1.你们原有的系统,这写业务逻辑是不是已经封装好了。如果封装好了,基于原有的平台来语言开发,这样或许能节约开发的时间,完全重新开发的成本有点高。
    2.SOA其实与语言或者平台无关。微软在推行SOA战略。能做到跨平台、语言的系统集成,以前的技术Web Service(或者说是技术标准)..net 平台上的实现就是 Asp.net Web Service.包括后续的的扩展 WSE。现在推出的WCF,都算是微软SOA战略的一部分。也有说法是,BizTalk是真正的微软面向SOA的企业级产品。
    3.我们也在做SOA架构的系统,也涉及到以前系统的维护和开发。我们使用的是BizTalk。
    4.微软SOA的相关的技术资料,你可以到BizTalk板块咨询一下,斑竹金剑忠。也可以到WCF提问。付仲恺斑竹曾经讲授过,WCF构建面向服务的应用相关的课程,你也可以到Web Cast学习。
       直接搜索,CSDN和博客园也有不少技术文章,你都可以参考。
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月14日 11:30
    版主
  • 谢谢Frank Xu Lei版主还有韦恩卑鄙的热心解答!

    1. 系统架构是用微软的平台产品,使用.net3.5 跟 BizTalk Server 2006R2。
    大的方向定了之后觉得具体实现起来还是问题重重。

    2. 我从网上的一些文章中了解到整合有几个层次:数据整合、业务整合、流程整合。
    有用asp开发的逻辑都在asp页面里,这样的系统业务逻辑层次估计就没法重用了吧?这种asp的系统就只能从数据层次整合了吧?如果从数据层次整合,是不是就等于业务逻辑得用.net重写了?

    3. 目前要整合的系统有10个左右,
    其他的几个用java、PHP开发的系统,对业务逻辑的封装程度也是参差不齐。总不能先把这些系统重构出一个领域层来,再公开吧?那样也还不如从数据层整合,用.net重写业务逻辑。

    感觉整合这些系统到SOA,不管从技术上还是业务上看都是一场硬仗。
    • 已编辑 罗晓 2009年7月15日 6:42
    2009年7月15日 3:09
  • ...
    感觉整合这些系统到SOA,不管从技术上还是业务上看都是一场硬仗。

    Hi,
       不要客气,互相学习~
    1.如果你选择BizTalk Server 2006来整合现有的系统,做EAI的话,确实是个不错的选择。不过你最好项目内部有人相对有点经验。系统整合后的目标大概确定,再选择技术或者平台。如果你现在的开发团队使用Biztalk开发没有问题,基本可以确定了。Biztalk提供了多种适配器,适合做整合基于异构的数据源的企业的业务系统。它与微软现有开发工具和组件的兼容性也不错,提供的开发配置工具,也能方便开发,提高工作效率。
    2.大部分EAI基本都会涉及到数据或者服务的重用问题,当然业务流程也是很重要的一个方面。如果你系统集成的目标涉及到的功能比较单一,比如只是简单的调用CRUD操作,完全可以简化。如果业务逻辑复杂,牵扯到流程问题,你可能要重写部分业务逻辑了。asp开发的系统,据我所知,asp貌似是脚本+COM组件实现的数据交互。早期的风格是很多业务逻辑习惯封装到SQL的存储过程里,如果这样,还是可以重用数据,至少数据访问的存储过程可以重用。按照你现在的说法,逻辑封装到脚本里,嵌入到aspx文件里,基本不能重用。可以考虑重新写新的业务逻辑了,然后在调用。也就是你提到的数据整合。
    3.如果现有的业务逻辑不是很复杂,或者原有的系统开发的很不规范。可以考虑数据整合。如果现有的10个系统各个业务逻辑都很复杂,而你完全重写的代价还是很高。在要求服务重用的话,你要考虑使用WebService 或者WCF来重新开发和部署这些服务接口。BizTalk提供了多种适配器,整合异构数据源不是问题。
        从你现在的情况来看,原有的各个系统还在继续使用,只是新开发的系统还要在最大限度的利用别的系统功能的基础上。管理系统开发最难的就是业务逻辑,技术到是其次的。你真要做到SOA,重写现有的业务逻辑,也要考虑到以后的服用。这个确实有点难度。
       我个人也是在学习,以后可以多交流~ 呵呵
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月15日 13:01
    版主
  • 谢谢Frank Xu Lei版主,你们两位版主的每次回复都如此细致,真是让人倍受感动,钦佩不已啊!

    1. 还是我们的项目,我们的团队里还真没有对这方面有经验的人。这几天都是在网上狂看SOA的资料,WebCast里SOA、BizTalk的那几个系列也都基本看了。以前很多项目都是从一张白纸开始现学现做,更何况现在还有各位热心版主的解答,我们有信心做好这个项目。

    2. 目前客户的需求还比较简单,就是在这些现有的系统之间公开数据,还没有要组合各个系统的处理逻辑完成更大的业务。看来我们也只能一步步来,看各个系统需要公开那些数据,然后公开取得数据的服务。随着以后的发展客户很有可能要提出业务上的整合需求,到时候再根据不同系统适当重写业务逻辑吧。像这些老系统就像一具具腐朽的尸体,即使SOA的外衣再华丽,也不太好让他们焕发青春了。呵呵,这个比喻好像不是很恰当。
    2009年7月16日 3:00
  • Hi, 罗晓

    >" 1.是应该分析每个系统的业务逻辑然后用.net平台的WebService将其业务公开出来,还是用原来的各种语言分别公开他们的业务?"

    在你后面的回复中看到,你们已经采用了Biztalk. Biztalk 就是为集成(Integration) 而生的。使用相应的Adapter 便可以与几乎所有的系统进行交互。在你的场景里,如果用.net 重写原来的逻辑的话将是一笔巨大的开支。如果原来的系统公布了 Web Service 接口,Biztalk 里有Web Service Adapter 可以与之交互,如果原来的系统是一个网站,只能用http 协议进行访问,你也可以使用Biztalk 的Http Adapter 与之交互。 也就是说原来的系统差不多可以原封不动拿过来使用。

    由于系统繁杂,消息格式也会千变万化,那么我们需要使用Biztalk 的map ,来统一不同系统的消息格式(一般都会采用XML格式)。

    至于业务逻辑的整合,这个差异很大,不同项目差异也很大,不过可以把一些整体性的,全局性的逻辑提取出来,用 WF 或者直接写成 Biztalk Orchestration。

    我的建议是,既然已经使用了Biztalk ,便把Biztalk 做为一个中心,其他的有待集成的应用程序,能不动尽量不动。


    Microsoft Online Community Support
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月16日 3:50
    版主
  •    呵呵,不要客气,互相交流,互相学习~
    1.希望你能做成啊,最好项目的管理要做好,计划详细点。如果全部白手起家的话,风险肯定不小啊。作为技术人员学习无所谓,但是真到最后做不出东西,这个就影响大了,无论个人还是公司。
    2.对于管理系统,或者EAI,需求永远都是第一位的。呵呵,既然目前的需求不大,你到可以做到满足目前要求的基础上,在考虑系统整合后的可维护性、可扩展性。分阶段实现目标。不要给予求成。这样还容易出成果,而且不会项目进入无限的死循环。
    3.老系统多了,平台差异大,这个也是SOA概念用武之地。Biztalk作为ESB确实适合这样复杂的情况。腐朽了也不可怕,呵呵,枯木也能逢春!以后EAI成功以后,公司节约了成本,你个人也学到了技术~
       多好的机遇~
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    • 已标记为答案 罗晓 2009年7月17日 3:52
    2009年7月16日 13:41
    版主
  • 谢谢Andrew_Zhu版主。BizTalk的适配器确实十分强大,得好好的研究研究。现有的系统我们也不想动,那样项目风险更大了。

    也谢谢Frank Xu Lei版主。这次领导一排脑袋就要做这个项目整合的项目,可能是比较值钱吧。
    风险确实比较大,但是有条件得上没有条件创造条件项目也得上啊 。项目难领导总有办法,比如以前的项目有的难度很大的模块就是外包给其他公司做的。 新技术不断在发展,公司的业务也在不断的发展,如果我们因为怕失败而不敢大胆尝试的话,那迟早要落伍啊。

    再次感谢大家的热心帮助,以后的工作中肯定还会有很多问题,到时候再请教大家。
    2009年7月17日 3:52