此时我正在开发一个对servicestack web api的android db访问。
当用户与数据库交互时,我需要显示“等待请...”的消息,我读了一些文档:
Calling from client side an async method
但我无法找到如何在webapi,serverside中实现异步方法。
您能否分享一份文档链接?还是一个简单的工作样本?
在尝试将其转换为异步调用之前,我有这个。
var response = jsonClient.Send(new UsuarioLogin { Cuenta = txtCuenta.Text, P = txtPass.Text});
经过一些阅读后,后一个代码转换为:
var response = await jsonClient.SendAsync(new UsuarioLogin { Cuenta = txtCuenta.Text, P = txtPass.Text});
所以,在服务器端我有这个(只是摘录):
public object Post(UsuarioLogin request)
{
var _usuario = usuarioRepo.Login(_cuenta, _password);
if (_usuario != null)
{
if (_usuario.UsuarioPerfilId != 2 )
{
return new UsuarioLoginResponse { Ret = -3 };
}
如何将其转换为异步方法?
提前致谢。
答案 0 :(得分:2)
服务器端和客户端异步是不透明和无关的,即客户端上的异步调用以相同的方式工作,无论它是在调用同步服务还是异步服务,对于同步客户端也没有区别。本质上,服务器的实现方式对客户端的调用方式没有影响。
要在服务器上创建异步服务,只需返回Task
,您可以查看AsyncTaskTests,了解有关如何创建异步服务的不同示例。
在客户端上进行非阻塞异步调用有很多好处,因为可以从UI线程调用它而不会阻止UI。但是,服务器端异步的价值较低,这增加了许多隐藏的人为复杂性,easy to deadlock,要求重写I / O操作是异步的,并且在许多情况下不会提高性能,除非I / O是瓶颈,例如: calling a single RDBMS时,async无效。使用Caching代替您将获得更多性能优势。