关于webservice常见问题的问题

关于WEBSERVICE的问题
[问题点数:28分,结帖人daiweilovezj]
关于WEBSERVICE的问题
[问题点数:28分,结帖人daiweilovezj]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年5月 总版技术专家分月排行榜第一
2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2013年5月 总版技术专家分月排行榜第一
2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2013年5月 总版技术专家分月排行榜第一
2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2011年11月 PHP大版内专家分月排行榜第二
2011年11月 PHP大版内专家分月排行榜第二
2013年5月 总版技术专家分月排行榜第一
2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2013年5月 总版技术专家分月排行榜第一
2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。关于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的基本问题:
以下是我的回复:
这是个好问题,所有初学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属于不磨损的自描述语言,即使过了几百年,你也可以不借助复杂工具看懂其中的内容。
可以参考我以前的另一篇东西:&
在中国,不像ASP.NET已经风风火火,webservices还处于起步阶段,真希望社区webservices的管理员能给大家系统的讲讲这些基本的东西。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。今天学习了一下asp.net
ajax调用webservice的方面的知识,主要是看了赵劼webcast课程,然后自己练习了一下,在练习课程中第四个实例的时候,发现我单独运行webservice报错,而在客户端调用webservice居然可以返回正确结果。
错误信息如下:
无法序列化接口
System.Collections.Generic.IDictionary`2[[System.String, mscorlib,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c],[Employee,
App_Code.kymkjpvf, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]。
百思不得其解,运行赵老师的的代码,错误依旧,郁闷,在网上找,老赵的博客看看,恩,有人和我提出一样的问题,结果赵老师没给结果,继续找,发现很多人也有IDictionary无法序列化的问题,很多人都说字典是不能序列化的,最终也没得到一个准确的答案。
自己又认真的思考一下,认为IDictionary不能被序列化的可能性很高,但是为什么在客户端可以访问呢?
仔细回想一下赵老师的课程,课程的最后赵老师说asp.net
客户端调用webservice实际上不是使用的soap协议,而是直接利用反射原理得到对象。
如果是这样,那么这个问题基本上可以解释了,因为asp.net
ajax在客户端调用webservice不使用soap协议,哪么就不会使用xml序列化对象,而我们直接调试因为使用了soap协议,所以报错,看似合理的解释,但是毕竟是我这个出学者一家之言,还有待继续验证......
希望能和有类似体验的同仁们讨论讨论......
阅读(...) 评论()

我要回帖

更多关于 引用webservice问题 的文章

 

随机推荐