时不时地还会去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