此刻我正在开发一个 android 数据库访问 servicestack web api。
当用户与数据库交互时,我需要显示“请稍等...”的消息,我阅读了一些文档:
Calling from client side an async method
但是我找不到如何在服务器端的 webapi 中实现异步方法。
能否分享文档链接?还是一个简单的工作样本?
在尝试将其转换为异步调用之前,我有这个。
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 };
}
如何将其转换为异步方法?
提前致谢。
最佳答案
服务器端和客户端异步是不透明且无关的,即客户端上的异步调用以相同的方式工作,无论它是调用同步还是异步服务,同步客户端也没有区别。从本质上讲,服务器的实现方式对其在客户端的调用方式没有影响。
要在服务器上创建一个异步服务,你只需要返回一个Task
,你可以查看AsyncTaskTests有关如何创建异步服务的不同示例。
在客户端进行非阻塞异步调用有很多好处,因为这可以从 UI 线程调用而不会阻塞 UI。但是服务器端异步的值(value)较低,它增加了很多隐藏的人为复杂性,是 easy to deadlock ,需要将 I/O 操作重写为异步,并且在许多情况下不会提高性能,除非 I/O 是瓶颈,例如calling a single RDBMS 时异步没有帮助.使用 Caching 将获得更多性能优势相反。
关于asynchronous - Servicestack 异步方法 (v4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28121723/