简单的说,ASP.NET使我们可以很容易地给应用程序代码建立XML接口,我们所要做的知识编写应用程序逻辑,并用WebMethod属性标记方法。
Web服务功能很强大,而且容易使用,不过,由于它们通过网络进行调用,而且会受到网络的限制,所以我们不希望在web应用程序(这里指所有的web应用程序,不单指ASP.NET)中调用许多web服务,原因在于那些网络调用会存在阻碍用于处理ASP.NET请求的线程的可能。比如说,如果应用程序中有20个同时出现的请求,处理每个请求的应用程序代码都要调用一次web服务,我们就可能由于等待调用了web服务的线程返回而阻碍请求,并给后续的请求排队。
但是通过使用异步事件,我们至少可以让没有被ASP.NET用于web服务调用的线程获得自由。当网络事件发生时,“socket窗口”接收WM_SOCKET_NOTIFY消息,消息处理函数OnSocketNotify被调用。“socket窗口”的定义和消息处理是MFC实现的。从创建socket到网络I/O,CAsyncSocket直接封装了低层的WinSock API,简化了WinSock编程,实现了一个异步操作的界面。如果希望某个操作是阻塞操作,则在调用Create时不要指定该操作对应的网络事件。