在庫管理アプリケーションを開発しています。私が作成できるすべての種類のアイテムは、いくつかのフィールド (作成日、説明など) を持つ一般的な基本クラスを継承します。これらすべてのアイテムには、ドキュメント ファイル (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 文字列を使用する必要がありますか?
- ファイルを変更できる場合、ローカル コピーを作成するか、ファイルを開いてコピーし直すか、元のファイルを開く必要がありますか? 並行性は大きな問題ではなく、ほとんどが参考資料です。
- 私は間違った道を進んでいますか?この種のタスクにはおそらく設計パターン/ガイドラインがありますが、重要なものは見つかりませんでした。
- 別の方法でファイルを開く必要がありますか? たぶんユーザーに尋ねますか?