Servicestack异步方法(v4)

时间:2015-01-24 02:32:45

标签: asynchronous methods servicestack

此时我正在开发一个对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 }; 
            }

如何将其转换为异步方法?

提前致谢。

1 个答案:

答案 0 :(得分:2)

服务器端和客户端异步是不透明和无关的,即客户端上的异步调用以相同的方式工作,无论它是在调用同步服务还是异步服务,对于同步客户端也没有区别。本质上,服务器的实现方式对客户端的调用方式没有影响。

要在服务器上创建异步服务,只需返回Task,您可以查看AsyncTaskTests,了解有关如何创建异步服务的不同示例。

在客户端上进行非阻塞异步调用有很多好处,因为可以从UI线程调用它而不会阻止UI。但是,服务器端异步的价值较低,这增加了许多隐藏的人为复杂性,easy to deadlock,要求重写I / O操作是异步的,并且在许多情况下不会提高性能,除非I / O是瓶颈,例如: calling a single RDBMS时,async无效。使用Caching代替您将获得更多性能优势。