物聯(lián)網(wǎng)與WEB服務(wù)(1)
單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,*,物聯(lián)網(wǎng)與,WEB,服務(wù),肖微,物聯(lián)網(wǎng)概論回顧,物聯(lián)網(wǎng)的分層,感知識(shí)別層,網(wǎng)絡(luò)構(gòu)建層,管理服務(wù)層(有爭(zhēng)議),綜合應(yīng)用層,信息的傳輸,依賴,于計(jì)算機(jī)網(wǎng)絡(luò)(可以預(yù)見的未來),架構(gòu)在傳統(tǒng)都協(xié)議之上,TCP/IP,、,HTTP,、,HTTPS,以,WEB,服務(wù)為載體的信息交互將占有較大的份額,WEB,服務(wù)的優(yōu)勢(shì),適應(yīng)性強(qiáng):按照共同約定的,schema,來進(jìn)行數(shù)據(jù)交互??梢员欢喾N語言、平臺(tái)支持。,便于,B2B,協(xié)作,有成熟的商業(yè)化平臺(tái)、工具的支持(,WCF,,,Java WebService Developer Pack,),軟件巨頭的強(qiáng)力推動(dòng)(,IBM,、微軟、谷歌、亞馬遜、甲骨文,),發(fā)展趨勢(shì),基于應(yīng)用層協(xié)議的遠(yuǎn)程協(xié)作將繼續(xù)存在,Web,服務(wù)的機(jī)動(dòng)性加強(qiáng)(以,WCF,為例,其前身為,XML Web Service,、,.NET Remoting,、,DCOM,等系列技術(shù)),開發(fā)趨于便捷化,TCP/IP,通訊回顧,計(jì)算機(jī)網(wǎng)絡(luò)通訊技術(shù)的基礎(chǔ),IP,地址,+TCP,端口號(hào),基于,TCP,的連接通訊與基于,UDP,的無連接通訊,以,socket,為編程基礎(chǔ)(,Windows,下以,WinSock,為例),各種軟件開發(fā)環(huán)境中提供了各樣的高層封裝,(,如:,.NET,中的,TcpClient,TcpListener,,,MFC,中的,C,等高層封裝),服務(wù)器,Socket C/S,交互模型,客戶端,s=socket,(),listen(s,),s=socket(),bind(s,),t=accept(s,),read(t,),write(t,),close(t),connect(s,),write(s,),read(s,),close(t),C#,中,TCP/IP,通訊舉例(,server,),private void OnStartListen(object sender,EventArgs e),try,InitServer();,catch(Exception excp),MessageBox.Show(string.Format(Exception catched with message:,excp.Message);,private void OnClientAccepted(IAsyncResult ar),TcpListener svr=(TcpListener)ar.AsyncState;,TcpClient client=svr.EndAcceptTcpClient(ar);,NetworkStream stream=client.GetStream();,stream.BeginRead(m_buffer,0,1024,Callback,stream);,svr.BeginAcceptTcpClient(OnClientAccepted,svr);,private void Callback(IAsyncResult ar),try,NetworkStream ns=(NetworkStream)ar.AsyncState;,int dataLen=ns.EndRead(ar);,/do something,ns.BeginRead(m_buffer,0,1024,Callback,ns);,catch,C#,中,TCP/IP,通訊舉例(,client,),private void OnConnect(object sender,EventArgs e),if(m_client=null),m_client=new System.Net.Sockets.TcpClient();,IPAddress ip=IPAddress.Parse(m_textIP.Text);,int port=int.Parse(m_textPort.Text);,m_client.Connect(ip,port);,m_buttonConnect.Text=Disconnect;,else,m_client.Close();,m_client=null;,m_buttonConnect.Text=Connect;,private void OnSendMessage(object sender,EventArgs e),string txt=m_textSend.Text;,byte buf=System.Text.Encoding.ASCII.GetBytes(txt);,NetworkStream stream=m_client.GetStream();,stream.Write(buf,0,buf.Length);,stream.Flush();,應(yīng)用層協(xié)議,多數(shù)應(yīng)用層協(xié)議建立在,TCP,/IP,協(xié)議上或建立在,HTTP,/,HTTPS,上,協(xié)議一般包含協(xié)議頭、,body,、協(xié)議尾。,頭可以定義,telegram,的長(zhǎng)度,也可以用特征結(jié)尾來定義,telegram,的結(jié)束。,基于狀態(tài)的協(xié)議和無狀態(tài)協(xié)議,