在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Com.urp.command.FileFrameWork(1) 前一阵子做了个JSF的项目,某个学院的一个管理系统。尽管项目用到了sping,用到了hibernate,不过感觉还都只是一些查询,编辑,添加,删除。在这家公司一年了,所做的项目都是这样,也没跳过槽,不知道外面的世界,不知道别人家是怎么写程序的,总决得自己公司写出来的程序没有技术含量,没有架构,模块的概念,有的永远是一成不变的三层。 毕业刚进公司的时候,看到三层模式,还感觉有点兴奋,哦,原来程序可以这么写,原来这个就是传说中的三层模式,顿时对设计人员顶礼膜拜。可现在,设计来设计去,写来写去都是一样的,感觉是一个人就可以搞得定的,怎一个失落了得。想想外面的程序不该就那么简单吧,至少在博客园上面还是有很多东西看不懂的。 不抱怨了,说说自己要写的吧。项目本身没有多大的新意,不过自己做的一块导入导出感觉还是蛮有意思的。之前是用java写的,而且由于是项目紧张的关系,写的时候也没有多去想,现在空了,发现还有好多可以改进的地方。 写的这些东西,不是要来讨论导入导出该怎么做,上传下载要怎么写,仅仅是做完项目后的一点个人经验,望各位看官不要过于严肃。 主要功能包括是导入和导出。因为是BS结构,所以可能要设计的上传下载。所以打算先从上传下载做起。可能有些朋友要跳出来说,我的写的上传,在上传大文件是会出现问题,所以我要再说一次,这只是我做项目里的一点经验和总结,至少在这个项目里没有对于大文件的需求,对于2,3M的数据库文件似乎并没有出现问题,所以我们暂时不考虑吧。况且如果类和类间关系设计的好的话,再增加这方面需求应该不是难事。 导入导出简化一点看,其实就是下面的两个过程: 现在完成的上传部分的类图: UploadFileFrame继承IfileFrame接口,IfileFrame有一个IFileAPI的属性,和一个Execute的方法。我们希望UploadFileFrame是一个类似外观模式的类,用户只需要调用一个Execute方法。设想以后的DownloadFileFrame,ImportFileFrame,ExportFileFrame都对外只提供这个方法,取成统一的名字,也是为了将来有程序中可能要采用命令模式,方便一些日志或者权限验证的扩展。 IFileAPI是完成具体类型文件读取和写入,比如是excel,mdb等。因为目前来看,在JAVA中对这些文件操作,每个需要不同的包,相信C#应该也是这样。但有部分是统一的,作为2进制文件的简单的写入,创建,删除应该都是一样的,所以把这部分放到了LocalFile中去了。类图如下: 在页面上利用一个HtmlInputFile控件,后台代码调用UploadFileFrame的构造函数,这里需要传入一个System.Web.HttpPostedFile,所有的关于上传文件的信息就都在这里面了。整个上传的过程就是下面这样:
|
请发表评论