ファイルシステムの抽象化により、ローカルとクラウド(Azure)ストレージを簡単に切り替えることができます。一つのファイルに私たちのアプリケーション「バンドル」のドキュメントのCloudBlockBlobストリームに追加
Stream OpenRead();
Stream OpenWrite();
パート:私たちは、以下のメンバーを持っているファイルの読み書きのために
。 追記ストリームを返しOpenWrite
私たちのローカル・ストレージ・プロバイダーの場合:
public Stream OpenWrite()
{
return new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, BufferSize, useAsync: true);
}
Azureのブロブストレージのために私たちは、次の操作を行います。
public Stream OpenWrite()
{
return blob.OpenWrite();
}
は、残念ながら、これは、blobの内容たびに上書きされます。追加可能な書き込み可能なストリームを返すことは可能ですか?あなたが行うことができ、ここでOpenWrite
http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.cloudblockblob.openwrite.aspxのドキュメントに基づいて
これは私がやったことです。推奨されるアプローチは 'CloudBlockBlob.PutBlock'と思われますが、私たちはPDFライブラリを利用して、単一の入力ストリームでしか動作しない"バンドル "を実行しています。 –
'CloudBlockBlob.PutBlock'が推奨されています。これは、ファイルが大きくなると、ブロブ全体をダウンロードしてもう一度アップロードするため、上記のアプローチが効率的でないためです。 'PutBlock'では、追加された部分だけをアップロードします。 –
はい、毎回ブロブを置き換える*の大きな欠点です。しかし、前述のように、私たちはPDFライブラリによって制限されています。これが問題になる場合は、ブロブのローカルコピーをキャッシュすることがあります。 –