我有一个使用n层方法构建的网站。我遇到的问题是我需要客户端调用应用程序层,其他层之一将调用世界某个地方的另一个Web服务。另一个Web服务可能需要一些时间才能回来,所以我想做的事情,如果可能的话,使用异步请求的下面的内容:
客户端是HTML& JavaScript,服务器层是用C#(.NET 4.5)编写的,第三方Web服务只是我需要使用的Web服务
你会怎么写这个? 任何帮助将不胜感激
答案 0 :(得分:0)
服务器端代码需要看起来不像是异步调用外部服务。我没有看到这样做的优势。
当然,客户端代码将异步调用服务器端代码。 (一个AJAX请求,例如使用jQuery。)在处理该响应之前,它将以异步方式等待响应表单。但由于此请求中的服务器端代码仅为该一个请求提供服务,因此可以同步执行此操作。
实际上,如果服务器端代码本身也是异步的,那么它会在它有任何有用的代码之前将控制权返回给客户端代码。这意味着客户端异步处理程序无法执行任何操作。相反,当服务器端代码从外部服务获得响应时,它需要推送对客户端代码的响应。这可能与websockets等等有关,但可能比这种情况要复杂得多。
只有链中的第一个链接需要异步才能提供异步性的用户体验,系统的其余部分不需要。
答案 1 :(得分:0)
每当您拥有“客户端/服务器”边界时,您可以选择使服务器异步,也可以选择使客户端异步。这些决定是独立的。
我会假设您的第三方网络服务是可扩展的,或,除了这一个请求之外,您的服务器还有其他事情要做。在这种情况下,我建议您的服务器是异步的。
异步编程在ASP.NET 4.5中与async
/ await
一样自然。您可能希望使用HttpClient
或async
兼容的WCF或Web服务代理,具体取决于您的第三方服务。 ASP.NET MVC和WebAPI都支持您的服务的异步调用。
在客户端,你别无选择; 中的JavaScript必须是异步的。