客户端(C) 服务端(S) 请求查询的表数据数量(7千万条左右)
C通过socket向S发送一个查询数据的请求,这个时候S执行查询操作。问题一:S应该如何把这么庞大的数据发送到C?(我已经想到用循环发送,这时候就遇到了问题二)问题二:如果S通过循环每次发送一条数据给C,但是C是通过线程来启动的Socket,并且C#线程不能直接访问控件,这个时候如何将每条数据都添加到dataview表格中?(我想到在线程中使用多维数组来存储每次接收到的数据,然后全部接受完的时候 用一个监听方法来把数组中的数据读取到dataview中,这时候遇到了问题三)问题三:多维数组到底能存储多少数据?如何按照实际的数据来初始化这个庞大的数组?
C通过socket向S发送一个查询数据的请求,这个时候S执行查询操作。问题一:S应该如何把这么庞大的数据发送到C?(我已经想到用循环发送,这时候就遇到了问题二)问题二:如果S通过循环每次发送一条数据给C,但是C是通过线程来启动的Socket,并且C#线程不能直接访问控件,这个时候如何将每条数据都添加到dataview表格中?(我想到在线程中使用多维数组来存储每次接收到的数据,然后全部接受完的时候 用一个监听方法来把数组中的数据读取到dataview中,这时候遇到了问题三)问题三:多维数组到底能存储多少数据?如何按照实际的数据来初始化这个庞大的数组?
问题二,dataview动态绑定数据
问题三,存多少取决于你的机器配置,7千万数据都放内存里也不是什么好事儿,
根据实际的数据量的增加而增加,增量按百分比或者固定大小递增.
2:多线程操作界面要用委托
3:没必要考虑这个问题,每次传送一定量的数据即可,比如,1024.
另外,为什么要用socket?为何不用webservice?
这样设计很烂的,你要转换思路!!!
1。你为什么要思考吧7千万条数据一次发过来?即使发过来了,你什么界面能一次显示7千万条?就算你显示出来了,什么人能一次看七千万条?
所以,你思路走入了死胡同了!很简单!!分页!!!!分页!!!
一次传几页过来,客户需要看下一页的时候再传送新的页过来!!!2。C#可以直接访问控件,这个没问题。只是要用一点判断和委托。
3。数组能存储的数据和你的内存有关系,即使内存不够,还有虚拟内存给你用,理论上2G是可以的。但是这只是理论,没有哪个设计师会真的占用2G内存!!!
七千万条数据啊,就算一条数据20个字节,都是1G好远了吧?综上,你的设计必须修改!