日期:2014-05-17  浏览次数:20813 次

程序设计的几个方法的比较,求大师指导
业务是这样的:做了一个C# Web程序的一个页面是供用户上传txt文件,后台做的是就是先上传文件到服务器后解析文件把数据加载到服务器的数据库里面去,文件很大,处理逻辑很复杂所以这样的速度很慢,所以我现在在考虑把上传和解析文件分开,以下有两个方法:

1.C# Web程序的页面只做上传,把文件上传到文件就完事了;再在服务器上做一个开机就启动的CS程序,一直在监测是否有文件上传,有文件上传就处理,并把处理结果记录下来,当用户登录Web程序时就会把处理结果弹出来告诉用户;

2.也是一个Web程序和一个CS程序,当用户在Web程序上上传好文件后就触发调用CS程序去处理文件,并把处理结果记录下来,当用户登录Web程序时就会把处理结果弹出来告诉用户;

(线程是不做考虑的,因为希望即使网站关了,文件处理工作还是要继续的)

第一个方法的优点是,不依赖网站,完全独立,缺点是,因为我的文件是做权限控制的,不同的用户提交的文件要有用户标记,所以要为每个用户建不同的文件夹;

第二个方法的优点是可以把用户的编号和文件名作为cs程序的参数,这样很好的控制了权限;第二个方法我不知道的是当很多用户同时上传,这样就同时触发了cs程序会不会有冲突?或者还有我没想到的别的可能错误,不知道哪个好,也不知道哪个更可行,求大师帮忙啊,谢谢了,大家各抒己见,不胜感激啊
程序设计

------解决方案--------------------
是的。但是你可以使用配置文件的形式来动态的创建FileSystemWatcher。
------解决方案--------------------
你可以找一个教程。应该不超过一袋烟的功夫。


先说一下最简单的那一个问题。你所谓的“第一个程序、第二个程序”,看起来就是纠结在“用户的编号和文件名”上。

但是这应该是你的数据库中的字段,不管你的第一个桌面程序还是第二个桌面程序,它读取任务时都不应该直接读取txt文件内容,而是查询读取数据库,看看有几条任务还没有处理,第一条任务是什么。例如

select top 1 用户名,用户角色,上传文件名,上传文件保存路径,上传文件时间 from 上传记录 where 处理完标志=0


这样的数据,才来读取txt文件的。因此不需要给“第二个桌面程序”写死什么“用户编号”,你的第一个桌面程序也完全不需要考虑什么文件夹。

既然你想把一个任务分成两个阶段来完成,那么你应该好好规划一下中间的数据结构,不要丢掉必要的信息。