发信人: opc (CC), 信区: Java
标 题: Re: webservice用在什么场合比较好
发信站: 水木社区 (Fri Mar 15 11:44:16 2013), 站内
webservice的目的是用统一的方法(HTTP+XML)去访问异构的系统。
esb是连接webservice的工具。
比如你银行系统有个转账的功能,用.Net做的,而有个B2C商家,他的电子商务系统是用
java做的。
那么银行可以把转账的业务做成有个webservice,这样电子商务的系统只要发一个xml过
来,银行就可以做转账了。
而ESB是多个webservice之间交流的通道,比如电子商务,银行,物流都有各自的webse
rvice,电商只要把订单提交到ESB,而ESB负责把这个订单提交给银行和物流。
发信人: Alassius (饿了索食), 信区: Java
标 题: Re: webservice用在什么场合比较好
发信站: 水木社区 (Fri Mar 15 20:02:49 2013), 站内
举个例子。我之前的公司运行大概五六个不同的网站。这些网站都是不同的小组开发的,有两个网站将近二十年了,C++后台。新一些的用python,或者cherrypy, 或者Django.
现在有个需求,要做federated search, 集成搜索,也就是一个搜索框要返回所有网站的内容。但是各个网站后台搜索的实现都不一样。一个就是手写的C++. 一个直接用Apache Lucene. 一个用基于Lucene的Solr. 新一点的用基于Solr的python绑定。等等。如果用RPC来做,每个网站的后台界面都不一样。怎么搞?
答案就是web services. 这东西的好处是你可以制定一个和实现完全无关的格式。我们用Atom. 集成搜索就是简单地对所有服务器各发一个web service请求,返回的结果都是XML, 没有各种语言不同数据结构的问题。已有的web service因为客户在用,不能改格式,我们就用XSLT把格式换成Atom. 新写的web service就直接返回Atom. 不同网站不同实现都可以用一个客户端。网站之间的区别封装到XSLT里。这样整个集成搜索的结构都很简单。每来一个搜索需求,对每个网站创建一个并发任务,各任务独自执行搜索,然后把结果逐条存到缓存数据库里。返回搜索结果就是简单地到数据库里把已经找到的东西都拿出来。这些代码全部是各网站之间通用的。