我正在开发一个库存管理应用程序。我可以创建的每一种项目都继承了一个带有一些字段(创建日期、描述等)的通用基类。所有这些项目都可以有文档文件(pdf、文本文件、图片,没关系)。这些文件存储在公开可用的网络共享上。我已经有了一个基本的功能原型,它可以:要求用户选择一个文件,上传它,打开它并将相关信息保存在数据库中。这是一个基本示例:
//choosing and copying the file
string filename;
string destination;
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
filename = dlg.FileName;
destination = @"\\theshare\Data\Doc\";
textBox1.Text = filename;//just for test/display purpose
File.Copy(filename, destination + dlg.SafeFileName);
SaveInfoInDatabase(dlg);//description, path
}
//open the file with default application, called by a button press
System.Diagnostics.Process.Start(destination + dlg.SafeFileName);
在继续之前,我问自己以下问题:
- 我应该异步运行这段代码吗?目前最大的文件约为 50 MB
- 我应该对文件名使用 GUID 而不是原始名称,还是在文件名相同的情况下在末尾添加一个数字?
- 我应该如何处理重复?(假设 20 个不同的项目都共享相同的
pdf 文档) - 我应该保存绝对路径还是只保存文件名并为目录使用 const 字符串?
- 如果可以修改文件,我应该制作本地副本,打开然后复制回来,还是打开原始文件?并发不是一个大问题,它主要是参考资料。
- 我走错路了吗?这类任务可能有设计模式/指南,但我没有发现任何重要的东西。
- 我应该以其他方式打开文件吗?也许问用户?