C#远程数据传输上传问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:17:14
要实现多个WinForm程序上传数据到服务器上的数据库中,具体实现的流程是什么?我是这么想的:先把数据类XML序列化---->数据加密--->然后通过某种(sockets)协议上传到服务器某一文件夹---->服务器检测文件夹数据有更新--->数据解密--->反向序列化--->读入数据库。
大概流程是这样的吗?我是做Asp.Net,对Sockets协议和WinForm不太了解
还有C#中有类似检测某个文件夹中有数据添加的事件吗?如果多个WinForm程序同时像服务器传输数据,服务器该怎么处理呢?一个一个排队等候吗?这样的话如果单个数据量非常大的话队列后面的要等待很长时间。亦或是启用多线程,这样的话大量数据同时上传服务器会崩溃的吧,难道是两者结合??
另外这种网络传输数据一般是用什么方式进行数据加密的??

我给你一种建议:
如果你的系统不要求进行会话保持及服务器向客户端主动通信的话(winform中即有有主动需求也可转主动为被动),可以采用webService模式.

在服务器上设计一个webservice,然后用你的winform调用.
接下来的活就和调用一个DLL是一种效果了.

webService走的是web服务器,例如IIS,所以,基本不用考虑它的多用户下怎么排队的问题,你做asp.net时不是也没有去考虑用户怎么排队的问题吗?

在此基础上,只要你解决了多用户在同时操作时数据不会发生冲突,那就没必要一定要中转一道文件来绕远路了,直接就可以像网站一样与数据库直接交互了.

如果你发现你每一次上传数据行别庞大,那你就要发挥winform的优势了,在网页程序里,想要逐个,逐批的发送数据是很难的,但是在Winform程序里,你可以把大数据量分装成你认为合适的批次发送.还可以实时的看着进度.

原则就是,每一次与webservice的交互响应时间,不要超过一秒钟.
对于一些软件系统来说,用户怕的不是它比别人慢了几秒几分钟,而是用户点一下后,你的程序一点击就死了一样的定在那里,让用户不知所措,直到等它执行完了,才反醒过来,直接给结果.没有中间过程,用户不知道它现在在做什么,做到哪儿了.

数据类XML序列化---->数据加密--->POST到WebServices-->数据解密--->反向序列化--->读入数据库。
因为是Post到WebServices服务器上的,所以就不存在排队问题,

也就不存在检测文件夹中有数据添加的事件了,其实检测就是轮询,很占资源的

至于一次提交的数据比较大的情况,
在客户端:可以在winFrom里面设置进度条,用户不会以为程序死了
在服务端:WebServices的等待时间(最长执行时间)可以设置的稍微长一些,
如果真的非常非常大,那就以提交(上传)文件的形式发送嘛。

先把数据类XML序列化---->数据加密--->然后通过某种(sockets)协议上传到服务器