从服务器获得即时响应,而无需等待200条消息

时间:2013-08-13 09:00:48

标签: c# asp.net web-services

是否可以立即将响应(200)发送给客户端并在响应发送给客户端后处理请求?

示例:如果我向一个页面发送请求,需要2分钟才能响应。我不想等待2分钟才能得到响应(因为我不需要服务器的任何响应)所以我想要从服务器立即响应。我不担心在发送响应后该过程是否完成。

任何人都有实现这个过程的想法吗?

谢谢。

3 个答案:

答案 0 :(得分:2)

听起来您为网络撰写的服务应该使用离线流程。 Web通信同步工作,因此您不希望客户端在服务器忙于请求时闲逛。我建议在您的Web服务器上运行一个单独的服务,您可以将进程卸载到。也许是这样的:

  1. 客户端向服务器发送请求
  2. 服务器接受客户端数据
  3. 服务器将请求数据插入数据库
    一个。 Windows服务监视数据库请求队列和进程
  4. 服务器以“200”
  5. 响应客户端

答案 1 :(得分:1)

您可以调用Web服务方法的Async方法。它不会等待回应。

for (int i = 0; i < 100; i++)
{
    client.HelloWorldAsync();
}

答案 2 :(得分:0)

我们在项目中做了类似的事情 基本思路就像Sean Kornish建议:服务器接受客户端数据并在安排处理本身时将响应发送给客户端。
以下是示例console client / wcf service
客户

class Program
{
    static void Main(string[] args)
    {
        var client = new Service1Client();

        for (int i = 0; i < 10000; i++)
        {
            string response = client.GetData(42);
            Console.WriteLine("Response: '" + response + "'");

        }
        Console.ReadLine();
    }
}

服务

public class Service1 : IService1
{
    private static int _serviceState = 1;

    public string GetData(int value)
    {
        new Task(DoHeavyLoadWork).Start();
        return string.Format("The server state is {0}", _serviceState);
    }
}

请注意,代码只是一个例子,所以它非常脏。但是我希望能给出一些暗示。