socket是一種協議
socket用於底層的數據傳輸 2進制的數據傳輸
HTTP也是協議 傳輸的是HTML文本
SOAP是一種基於HTTP的協議 常用於實現webservice數據傳輸
WebService的優點在於:
1、跨平台
2、使用XML
3、可穿過防火牆
4、技術難度比CORBA小得多
5、低成本實現
6、也可用於C/S結構
缺點:
效率比CORBA、Socket低
數據量較大
webservice 就是個對外的接口,裡面有函數可供外部客戶調用(注意:裡面同樣有客戶不可調用的函數).假若我們是服務端,我們寫好了個webservice,然後把它給了客戶(同時我們給了他們調用規則),客戶就可以在從服務端獲取信息時處於一個相對透明的狀態.即是客戶不了解(也不需要)其過程,他們只獲取數據.
webservice傳遞的數據只能是序列化的數據,典型的就是xml數據,這裡我們也只討論xml數據的傳輸.
這個函數就是外部可調用的接口函數,對用戶來說相當於一個API.如果某用戶在引用了這個服務後,他調用HelloWorld()方法,他就將獲得"HelloWorld"這個返回值.
其實webservice並不是那麼的神秘,它也不過只是個接口,對我們而言,側重點依然是接口函數的編寫.下面,我將給出我們的例子所需要的接口函數.
網路上看到的問題,可以釐清一些觀念
Q: 用C#在本機做好的WEBSERVICE服務要佈屬到其他機器上運行,運行的機器一定要安裝.NET嗎?
把目錄COPY到SERVER後訪問該SERVICE.ASMX,只顯示<%@ WebService Language="c#" Codebehind="Service1.asmx.cs" Class="WebService1.Service1" %>,
A:必需安裝.net Framework。
Q: C#不是可以跨平台運行嗎? 為什麼就一定要裝.net Framework框架呢?
那用.net Framework框架寫的WEBSERVICE可以在LINUX上運行嗎?
A:編譯為DLL,就可以了
A: C#的跨平台,是建立在.net Framework的支持上的,沒有.net frameWork的支持,c#什麼也做不了
所以,C#寫的程序必須在安裝了.net framework上運行
由於現在還沒有在LINUX上的.net framework
所以,C#寫的程序,是不可能在LINUX下運行的
不過,Web Service是一項Web服務,並不是在你本機上運行
因此,你的Web Service配置在支持.net framework的機器上
在LINUX下調用這個web service是可以的
特殊需求,需要在linux下運行.NET的web服務,不知有什麼解決方案。 另外,IIS能用mono在linux下跑成功吗?另外,IIS能用mono在linux下跑成功嗎?
不知道你的Linux是哪個發行商的,
Ubuntu Linux上可安裝libapache2-mod-module
其實這就是Apache的MONO模塊,安裝了以後應該就可以跑ASP.NET了。
不過我沒試過在Linux上使用ASP.NET請你自己試試。
這兒是Mod_MONO的項目主頁:
http://www.mono-project.com/Mod_mono http://www.mono-project.com/Mod_mono
linux下有mono項目,可以在linux下跑.net,不管是c/s還是b/s,都可以簡單移植過去。
http://www.mono-project.com/Main_Page
这是官方网站,要想在linux下跑.net可以装这个。 這是官方網站,要想在linux下跑.net可以裝這個。
[RemObjects_SDK.rar] - 利用RemObjects SDK创建的客户和服务器应用程序可以容易的通过网络相互通讯。 RemObjects SDK可提供.NET和Delphi版本,带来一个创建分布式应用的快速方法,利用Service Builder简单的建模您的服务器接口,Service Tester用于性能和稳定性测试,并可
在linux下用C或C++访问Web Service的资料
gSOAP: Generator Tools for Coding SOAP/XML Web Services in C and C++
2 月 11 日「微軟線上專家對談」主題: 以 Web services 實現應用程式整合
开发,配置,调用-三步走构建简单的asp.net webservice(C#)-适合初学者阅读
據說delphi可以將Web Service編譯成dll,放在IIS下可運行,是不是這樣?
Socket提供了进程通信的端点,最重要的是,socket 是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的socket 系统调用。Socket 接口是访问 Internet 使用得最广泛的方法。
Remoting是一种分布式处理方式。在Remoting中是通过通道(channel)来实现两个应用程序域之间对象的通信的。
Web services是建立可互操作的分布式应用程序的新平台。Web service 从表面上看,就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。
根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布式 应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相 关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙.WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的并集。
Socket,Remoting,Enterprise Services,Web Service,WCF
-------这些都不是通信技术...
现在通信技术基本上只用TCP/IP...
http://www.ad0.cn/netfetch/read.php/341.htm
Socket模拟Http协议,读取http header,根据content-length的值,读取Http body
[心得]在php中使用Web Service [心得]使用php提供Web service
webservice的實現在socket層面上的解釋是:
1、作為客戶端,調用webservice服務即是向socket服務端(80端口)發送一定格式(xml格式的?)的字符串,然後在本次socket連接中接收服務端返回的字符串?
2、作為服務端,打開socket服務,監聽80端口,接收客戶端發來的字符串,然後向該連接返回字符串?
網友回复:沒有關係! 你那是强行将两个东西扯在一起!你那是強行將兩個東西扯在一起! 網友回复:看這個你就明白了
webservice用soap協議,soap協議只是用來封裝消息用的。 封装后的消息你可以通过各种已有的协议来传输,比如http,tcp/ip,smtp,等等封裝後的消息你可以通過各種已有的協議來傳輸,比如http,tcp/ip,smtp,等等
http://topic.csdn.net/t/20031123/15/2485964.html http://topic.csdn.net/t/20031123/15/2485964.html
網友回复:要一層一層分析它的本質,而不是只看表面現象網友回复:socket是通訊協議,web service是數據協議你可以坐火車出門,但是你不能說你是鐵路實現的網友回复:剛才學習了http://www.w3school.com.cn /webservices/ws_use.asp,截下了“華氏、攝氏溫度轉換”的通訊報文。分析了下, 我填了攝氏轉華氏,500攝氏度,結果是933.8華氏度。下面是交互的數據。
典型的Web Service结构(转)
是否可以認為webservice是通過socket實現的?webservice的實現在socket層面上的解釋是:
1、作為客戶端,調用webservice服務即是向socket服務端(80端口)發送一定格式(xml格式的?)的字符串,然後在本次socket連接中接收服務端返回的字符串?
2、作為服務端,打開socket服務,監聽80端口,接收客戶端發來的字符串,然後向該連接返回字符串?
網友回复:沒有關係! 你那是强行将两个东西扯在一起!你那是強行將兩個東西扯在一起! 網友回复:看這個你就明白了
webservice用soap協議,soap協議只是用來封裝消息用的。 封装后的消息你可以通过各种已有的协议来传输,比如http,tcp/ip,smtp,等等封裝後的消息你可以通過各種已有的協議來傳輸,比如http,tcp/ip,smtp,等等
http://topic.csdn.net/t/20031123/15/2485964.html http://topic.csdn.net/t/20031123/15/2485964.html
網友回复:要一層一層分析它的本質,而不是只看表面現象網友回复:socket是通訊協議,web service是數據協議你可以坐火車出門,但是你不能說你是鐵路實現的網友回复:剛才學習了http://www.w3school.com.cn /webservices/ws_use.asp,截下了“華氏、攝氏溫度轉換”的通訊報文。分析了下, 我填了攝氏轉華氏,500攝氏度,結果是933.8華氏度。下面是交互的數據。
發送:
POST http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit
HTTP/1.0..Accept: */*..Referer: http://www.w3school.com.cn/webservices/ws_use.asp. .Accept-Language: zh-cn..Content-Type: application/x-www-form-urlencoded..UA-CPU: x86..Proxy-Connection: Keep-Alive..User-Agent: Mozilla/4.0 (compatible ; MSIE 7.0; Windows NT 5.1; WPS; Maxthon; CIBA)..Pragma: no-cache..Content-Length: 11..Host: www.w3schools.com..Cookie: ASPSESSIONIDACCRBRCA=GMAEHIABLCIJEKEMDDKAPKAM;
__utma=119627022.1292411626.1210746833.1210746833 .1210749095.2;
__utmc=119627022;
__utmz=119627022.1210746833.1.1.utmcsr=(direct) ¦utmccn=(direct) ¦utmcmd=(none)....Celsius=501
接收:
HTTP/1.1 200 OK..Via: 1.1 XXXXXXXXXXX..Connection: Keep-Alive..Proxy-Connection: Keep-Alive..Content-Length: 90..Date: Wed, 14 May 2008 08:07:23 GMT. .Content-Type: text/xml;
charset=utf-8..Server: Microsoft-IIS/6.0..MicrosoftOfficeWebServer: 5.0_Pub..X-Powered-By: ASP.NET..X-AspNet-Version: 2.0. 50727..Cache-Control: private, max-age=0.... <?xml version="1.0" encoding="utf-8"?>.. <string xmlns="http://tempuri.org/ ">933.8 </string>
就這個溫度轉換的例子而言,可以看出調用webservice服務並不是“xml”格式化的字符串,服務端返回的包含有“xml”化的數據。
這些數據理論上通過socket是可以發送和接收的,但實際上自己生成第一次發送的內容基本上是不可能的,對於接收的內容倒是可以按照要害字進行篩選。
首先webservice可以通過http實現,也可以通過其他很多種協議實現,socket比http更底層,就像人和大便的關係,呵呵。
webservice假如用http協議來實現的話,那在socket層面上的解釋是:
客戶端調用 webservice服務,即是向socket服務端(80端口?)發送一定格式(按照http協議打包?針對501,就會有第一次的數據那麼多,想要搞明白,估計還得去研究http協議,對我是不可能的任務了)的字符串,然後在本次socket連接中接收服務端返回的字符串(字符串是將 webservice處理產生的的實際內容“933.8”經過soap協議打包,即按照xml格式處理,也就是標紅的部分,然後再經http協議處理(又包了一層網絡通訊需要的內容,不過這和soap打包的性質不一樣,soap是在數據內容層面上加上xml的格式),形成最終收到內容)
網友回复:更正下,上面應該是:
接收:
HTTP/1.1 200 OK..Via: 1.1 XXXXXXXXXXX..Connection: Keep-Alive..Proxy-Connection: Keep-Alive..Content-Length: 90..Date: Wed, 14 May 2008 08:07:23 GMT. .Content-Type: text/xml; charset=utf-8..Server: Microsoft-IIS/6.0..MicrosoftOfficeWebServer: 5.0_Pub..X-Powered-By: ASP.NET..X-AspNet-Version: 2.0. 50727..Cache-Control: private, max-age=0.... <?xml version="1.0" encoding="utf-8"?>.. <string xmlns="http://tempuri.org/ ">933.8 </string>
.net以soap调用php的WebService
沒有留言:
張貼留言
try comments