关于webservice的经典理解

时不时地还会去csdn的社区看看,已经不止一次了,发现那里的很多问题是因为对web services的基本概念还不清楚。看到到别人用,自己也来用,走着走着就把自己领入了死胡同。

下面是一些个人的看法,欢迎讨论。

典型的几个:

1.web services怎么主动把信息反馈回客户端?(已经不止一次有人问了)

问这个问题可能多数对services的概念不清楚,web services是service的provider,既然是provider,那概念上就应该客户向web services请求服务,倒过来是不行的。有人会说“推”技术,其实推也是客户向services请求的,只不过变成了自动的轮询。想想,server连client开不开机都不知道,怎么推?客户开机了,向服务供应商询问“昨天12点以来有什么新东西?”provider才会向客户端“推”。


从数据流动的方面想,数据流动总有一个发起者和接收者,如果发起者是web services,那么接收者是谁呢?有人以为是那个使用web service的应用程序,可如果那个程序被用户关掉了呢?或者因为什么原因ip地址改变了呢(拨号上网,DSL,DHCP环境都有可能)?在这样的情况下,services的反馈信息就没有接收者了。连基本的连接都建立不了,更不要说传递信息了。

还有一个更基本的概念,就是web连接的无态性(stateless),就是每次web连接都是独立的。http的连接每一次请求都和前后文无关,这是优点,当然在某些情况下也是缺点。理解了这个,也就知道了web services是不会向客户端主动发送了反馈了。因为它根本不知道刚才的客户端是谁,即便他什么都没有改变。

2.怎么给web services加个界面?

既然是service,就没有界面的,这应该是老外当初起名时候的用意,它提供的是service,不是带界面的应用程序。试想老外们当初想出这个主意来,就是想把functionality和interface分开,所以才有了service这一说,而且通过xml和http,使这种services更具广泛性。现在又想把它和在一起?这种看法是完全违背了web services初衷的。

说来说去,还是一句话,概念不清。现在很多技术的门槛是很低,但这是在我们概念清楚的前提下的。不然把自己走进死胡同的可能性是很大的。

 

社区里又有人在问关于webservices的基本问题:请问什么是webservicse 作什么用的?

以下是我的回复:

这是个好问题,所有初学webservices的人都应该问这样的问题。类似的问题还有,为什么要用webservicess,而不是类似的服务,象remoting,或者java里的东西?

之所以这么说,是的确发现很多人连这种基本的问题都没有弄明白,就开始堆CODE,瞎打瞎撞,就进了死胡同。

废话一堆,说说我自己的看法,算是抛砖引玉:

什么东西webservices能做而别的(以前的)技术不能或者很困难的?

最重要的有两点:

1、连通性好,
99%的webservices都使用http协议来实现传输,而标准的http协议所使用的80端口几乎在所有的防火墙都是打开的。换句话说,如果你的机器能够访问网站,就能够使用webservices。之前还没有一种技术可以这么说,因为他们大都使用专有的协议(端口)。在内部网络,这些协议是没有区别的,但防火墙使他们内外有别了。

CORBA, DCOM, RMI,这些东东都有些年头了,可没有一个可以说是十分普及的,问题之一不是技术有多难,而是应用领域非常有限。供应商说他们的系统支持COBRA,这样我们可以得到即时的最新报价和现货库存,可是我们的即使装了那个他们提供的客户端软件也用不了,除非他们可以在防火墙上网开一面。

2、鸡同鸭讲
香港电影经常看到这个短语,如果我们让Java的JMS和.NET的Remoting说话,基本就是这种情况。看起来好像那么回事,其实是牛头对马嘴。这应该算是另外一种连通性好表现。其实,让RMI和Remoting对话,可能比鸡同鸭讲还难。

但webservices却真的可以让鸡同鸭讲,不但如此,几乎可以让任何语言沟通,因为他要求你用一种世界语(SOAP)。任何可以用这种语言沟通的技术(们)之间,现在都可以加入到webservices的大家族里来了。这里包括了常用的网页描述语言(peel,php,jsp,asp,等),常见的通用语言(c/c++,pascal,basic,java,c#,等),只要你可以发出符合SOAP格式的XML包,就可以和其他的webservices供应商通讯。所以,你不用任何语言工具,手敲一个SOAP包,也一样可以得到回应。而XML属于不磨损的自描述语言,即使过了几百年,你也可以不借助复杂工具看懂其中的内容。


可以参考我以前的另一篇东西:web services的基本概念

在中国,不像ASP.NET已经风风火火,webservices还处于起步阶段,真希望社区webservices的管理员能给大家系统的讲讲这些基本的东西。

 

摘自:http://blog.csdn.net/dawave/archive/2004/07/31/57669.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值