多线程服务器和SQL通信

时间:2010-01-03 15:11:34

标签: c# sql multithreading

我想请求你的帮助,因为我的做法并不好。在服务器端,有客户端连接(每个客户端由我的客户端类表示)。每个客户端都需要与服务器后面的DB通信,同时还需要多个连接。

我正在考虑在每个客户端实例中使用SQLConnection和SQLReader实例,这肯定会有效,但我不确定是否有更好的方法。当然,性能就是重要的一切。谢谢!

编辑:通常的流量约为5个请求/秒(打开连接通常是滞后的。)最大用户数不高于100。

2 个答案:

答案 0 :(得分:0)

我通常让数据获取方法根据需要创建连接。我还没遇到过这种情况不够快的情况。不要忘记(至少在SqlConnection中)有一些内部连接池来提高性能。这种方法将有效地消除了为每个客户端维护数据对象的需要等等。

简单示例:

private static IEnumerable<SomeType> GetSomeData(string someInput)
{
    IEnumerable<SomeType> result = null;
    using (SqlConnection conn = new SqlConnection(GetConnectionString()))
    {
        // put whatever code is needed to populate the result here
    }
    return result;
}

您还可以考虑使用Linq-to-SQL,这可能会产生非常简单且高性能的数据访问代码。

答案 1 :(得分:0)

我在考虑像连接池这样的东西。我们只创建有限数量的Connection对象并在客户端之间共享它们。由于每个客户端都不使用连接,我认为这是可能的。