我正在为现有的ASP Web服务添加Async Web方法。 我将使用SoapHttpClientProtocol和begininvoke来调用异步方法,传递一个asynccallback对象。
我的问题是 - 我是否需要对客户端\服务器应用程序进行任何配置更改?我不完全理解这个异步调用是如何工作的 - 客户端应用程序是否继续监听端口等待响应?如果是这样,我是否需要确保在客户端计算机的防火墙中打开一个端口?
感谢。
答案 0 :(得分:0)
问题在于细节。推断(由于缺乏细节可能会出错)是因为您有.NET客户端调用经典ASP应用程序提供的Web服务。
您正在考虑在BeginInvoke
的子类中使用SoapHttpClientProtocol
来从客户的角度对调用进行异步处理。
基于我的推论是正确的,您需要对ASP Web服务不做任何特殊操作,只需正常添加服务方法即可。实际上,如果您考虑异步调用现有的,则根本不需要对服务器端代码执行任何操作。 “异步性”完全是一种客户端技巧,客户端API在请求完成时执行回调。
最好理解同步调用是如何工作的,因为事实上它们比明显更复杂的异步调用更“人为”。执行某些网络I / O的首要所有操作 必须异步。在某些时候,当它执行I / O操作时,当它等待一个永恒(从现代CPU的角度来看)时,当前执行的线程将没有任何进一步的操作。
因此,所有Web服务实际上都是异步的,无需您对配置或防火墙有任何特殊要求。只是典型的开发人员友好api将在IO完成时阻止当前线程,并且经常使用语义函数返回响应。
与异步调用唯一真正的区别在于,一旦I / O操作正在进行,线程就不会阻塞,而只会返回。当I / O操作完成后,它将简单地调用提供的回调方法。