(word完整版)软件系统之间的接口方式.doc 立即下载
2024-09-09
约6.6千字
约11页
0
44KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

(word完整版)软件系统之间的接口方式.doc

(word完整版)软件系统之间的接口方式.doc

预览

免费试读已结束,剩余 6 页请下载文档后查看

5 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(word完整版)软件系统之间的接口方式
(word完整版)软件系统之间的接口方式
(word完整版)软件系统之间的接口方式
软件系统之间的接口方式
•概述
软件接口是实现一个系统跟另外系统进行信息交互的桥梁,在不同的系统之间,根据系统的关联程度的不同存在紧耦合和松耦合两种:紧耦合要求接口响应反应快,消息不能阻塞;松耦合对响应反应要求比较低。在目前应用中,Socket、消息队列(MessageQueue)、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);
returnFALSE;
}
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(”Setstreamsocketmodulefail!!!IP(%s),Port(%d)anderror(%d)",GetIPAddr((PeerMap+node)-〉IPAddr),(PeerMap+node)—>PeerPortNo,WSAGetLastError());
CloseSocket(TempSocket,__LINE__,__FILE__);
returnFALSE;
}
无论使用阻塞方式或非阻塞方式编程,需要重点考虑的一个问题:粘包现象,即应用发送两个或以上的数据包,在Socket通讯层将数据包合并成一个发送出去,因此接收端收到数据包以后需要对数据包根据应用定义的长度进行拆分,否则导致应用层丢包.
应用方式可以由用户封转成DLL供使用方使用。

•消息队列(MessageQueue)
利用MSMQ(MicrosoftMessageQueue),应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信。消息处理为您提供了有保障的消息传递和执行许多业务处理的可靠的防故障方法。MSMQ与XMLWebServices和.NetRemoting一样,是一种分布式开发技术。但是在使用XMLWebServices或。NetRemoting组件时,Client端需要和Server端实时交换信息,Server需要保持联机.MSMQ则可以在Server离线的情况下工作,将Message临时保存在Client端的消息队列中,以后联机时再发送到Server端处理.显然,MSMQ不适合于Client需要Server端及时响应的这种情况,MSMQ以异步的方式和Server端交互,不用担心等待Server端的长时间
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

(word完整版)软件系统之间的接口方式

文档大小:44KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用