电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

软件系统之间的接口方式

软件系统之间的接口方式_第1页
1/9
软件系统之间的接口方式_第2页
2/9
软件系统之间的接口方式_第3页
3/9
软件系统之间的接口方式• 概述 软件接口是实现一个系统跟另外系统进行信息交互的桥梁,在不同的系统之间,根据系统的关联程度的不同存在紧耦合和松耦合两种:紧耦合要求接口响应反应快,消息不能堵塞;松耦合对响应反应要求比较低。在目前应用中, Socket 、消息队列(Message Queue)、 WebService 等都有相应的应用,但是应用中发现各通讯方式有自己固有的特征,“适合的才是最好的”,这是真理。 在接口和系统信息交互的过程中,两种模式使用得很普遍:同步调用和异步调用,同步调用要求接口发出请求消息后必须等待服务端系统的应答消息,接口堵塞直至超时;异步调用则发出请求消息后,接口可以从事其它处理,定时轮询服务端应答消息和消息或事件通知。同步方式简单,但是很容易造成接口堵塞,造成消息积压超时。 • 技术实现 • Socket 通讯 Socket 通讯相对来说是很古老的通讯方式,也是最常用的通讯方式。 Socket 通讯有堵塞和非堵塞两种方式.在同步方式,采纳堵塞编程比较简单,但是为了防止接口堵塞,我们需要设置 Socket 超时,因此可以使用 Socket 的 SELECT 模型(参考如下示例代码): ReceLen=0; CurReceLen=0; for(;;) { iResult=select(0,&fdread,NULL,NULL,&timeout); if(iResult==0) { AfxMessageBox("接收应答消息超时!!!",MB_OK|MB_ICONERROR); closesocket(Socket); return FALSE; } CurReceLen = recv(Socket, oBuf+ReceLen, len, NO_FLAG_SET); if((CurReceLen〉0) && (CurReceLen != SOCKET_ERROR)) { oBuf[ReceLen+CurReceLen]=’\0'; memcpy((char *)&MsgLen,oBuf,sizeof(WORD32)); MsgLen=ntohl(MsgLen); if(ReceLen+CurReceLen==MsgLen) { ReceLen+=CurReceLen; break; } ReceLen+=CurReceLen; } } 在异步方式下,采纳非堵塞方式实现比较方便,在非堵塞方式下可使用 WSAAsyncSelect 模型和 WSAEventSelect 模型: WSAAsyncSelect 模型基于消息, WSAEventSelect 模型基于事件,下面的示例代码设置了 Socket 进行读写和关闭操作的消息: status = WSAAsyncSelect(TempSocket, hWnd, WSA_READ, FD_READ | FD_CLOSE | FD_WRITE); if (status == SOCKET_ERROR) { WriteLogFile(”Set stream socket module fail!!!IP(%s),Port(%d) and error(%d)",GetIPAddr((PeerMap+node)...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

软件系统之间的接口方式

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部