asynchronous - Servicestack 异步方法 (v4)

标签 asynchronous methods servicestack

此刻我正在开发一个 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/

相关文章:

servicestack - WSDL - 允许 SOAP 消息的 DataMember 的不同顺序

javascript - XMLHttpRequest 在保存时加载到调用对象

c# - 如何在 C# 中捕获等待的异步方法的异常?

java - 解释阶乘方法中的递归

java - ActionListener 内的 JFrame 实例溢出

servicestack - 为什么ServiceStack的New API提升 "object"返回类型而不是更强类型的返回类型?

c# - ServiceStack自定义注册功能

java - 在我定制的 Servlet 中使用 GWT RPC 机制

javascript - 当一个已经运行时如何处理返回 promise ?

java - 在方法上找不到符号