论软件接口中几种底层通讯的实现
2010-02-19 20:32:58 来源:WEB开发网3、SOAP通讯
SOAP作为一种协议,同服务端Web Service进行通讯。IBM和微软提供了SOAP协议的SDK,我使用的是微软的SOAP Toolkit3.0,这是基于COM的一套组件,因此具有COM的特征,在调用参数的处理,windows和unix顺序恰好相反,下面的代码实现了调用一个Web Service:
if(!m_bFlatType)
{
for(i=paramNum,j=0;i>j;i--,j++)
{
VARIANTARG argTemp;
VariantInit(&argTemp);
argTemp=va[i-1];
va[i-1]=va[j];
va[j]=argTemp;
}
}
params.cArgs = paramNum;
params.rgvarg = va;
params.cNamedArgs = 0;
params.rgdispidNamedArgs = NULL;
hr = SoapConnect.pSoapClient[index]->Invoke(dispidFn,IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,¶ms,&result, 0, 0);
if(FAILED(hr))
{
HandleHResult(_T("Invoke of "+strService+" method failed."), hr);
VariantClear(&result);
for(i=0;i<MAX_PARAM_NUM;i++) VariantClear(&va[i]);
SysFreeString(bstrServiceName);
CoUninitialize();
return FALSE;
}
三、总结
在三种通讯方式中,各有优缺点,但是主要还在于服务端采用什么技术方案来实现,接口必须对应采用相应的通讯模式。
除了上面的通讯模式,当然还有很多其它的方式,如管道、消息队列等,目前我在紧耦合的接口中使用得不多。
更多精彩
赞助商链接