You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: BreakingChanges.txt
+3Lines changed: 3 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,6 @@
1
+
Tracking Breaking Changes since 0.12.0
2
+
- Changed parameter isServiceCopy of bool value to copyMethod which is an enumeration value in interfaces of CopyAsync and CopyDirectoryAsync.
3
+
1
4
Tracking Breaking Changes since 0.10.1
2
5
- Changed base namespace from Microsoft.WindowsAzure.Storage.DataMovement to Microsoft.Azure.Storage.DataMovement,
3
6
to keep align with azure storage client libraries' namespace change from Microsoft.WindowsAzure.Storage to Microsoft.Azure.Storage, assembly name is changed accordingly.
Copy file name to clipboardExpand all lines: README.md
+112-3Lines changed: 112 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Microsoft Azure Storage Data Movement Library (0.12.0)
1
+
# Microsoft Azure Storage Data Movement Library (1.0.0)
2
2
3
3
The Microsoft Azure Storage Data Movement Library designed for high-performance uploading, downloading and copying Azure Storage Blob and File. This library is based on the core data movement framework that powers [AzCopy](https://azure.microsoft.com/documentation/articles/storage-use-azcopy/).
4
4
@@ -11,13 +11,13 @@ For more information about the Azure Storage, please visit [Microsoft Azure Stor
11
11
12
12
- Blobs
13
13
- Download/Upload/Copy Blobs.
14
-
-Synchronous and asynchronous copy Blobs
14
+
-Copy Blobs with synchronous copying, service side asynchronous copying and service side synchronous copying.
15
15
- Concurrently transfer Blobs and Blob chunks, define number of concurrent operations
16
16
- Download Specific Blob Snapshot
17
17
18
18
- Files
19
19
- Download/Upload/Copy Files.
20
-
- Synchronous and asynchronous copy Files
20
+
- Copy File with synchronous copying and service side asynchronous copying.
21
21
- Concurrently transfer Files and File ranges, define number of concurrent operations
22
22
23
23
- General
@@ -120,6 +120,55 @@ var task = TransferManager.UploadAsync(
First, include the classes you need, which is the same as the sample to Upload a blob.
127
+
128
+
```csharp
129
+
usingSystem;
130
+
usingSystem.Threading;
131
+
usingMicrosoft.Azure.Storage;
132
+
usingMicrosoft.Azure.Storage.Blob;
133
+
usingMicrosoft.Azure.Storage.DataMovement;
134
+
```
135
+
136
+
Now use the interfaces provided by Storage client lib to setup the storage contexts (find more details at [how to use Blob Storage from .NET](https://azure.microsoft.com/documentation/articles/storage-dotnet-how-to-use-blobs/)):
Once you setup the storage blob contexts, you can start to use `WindowsAzure.Storage.DataMovement.TransferManager` to copy the blob and track the copy progress:
DMLib supports three different copying methods: Synchronous Copy, Service Side Asynchronous Copy and Service Side Synchronous Copy. The above sample uses Service Side Synchronous Copy. See [Choose Copy Method](#choose-copy-method) for details on how to choose the copy method.
171
+
123
172
# Best Practice
124
173
125
174
### Increase .NET HTTP connections limit
@@ -200,6 +249,66 @@ The following matrix explains how the DirectoryOptions.Recursive and DirectoryOp
200
249
201
250
- Default recursive option: false
202
251
252
+
### Choose Copy Method
253
+
DMLib supports three copy methods:
254
+
- Synchronous Copy
255
+
DMLib downloads data from source to memory, and uploads the data from memory to destination.
256
+
257
+
- Service Side Asynchronous Copy
258
+
DMLib sends request to Azure Storage Server to start the copying, and monitors its status until the copying is completed.
259
+
260
+
- Service Side Synchronous Copy
261
+
DMLib leverages [Put Block From URL](https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url), [Append Block From URL](https://docs.microsoft.com/en-us/rest/api/storageservices/append-block-from-url), [Put Page From URL](https://docs.microsoft.com/en-us/rest/api/storageservices/put-page-from-url) to copy Azure Storage Blobs.
262
+
263
+
Following is suggested copy method for different scenarios:
264
+
- From performance aspect: <br>
265
+
Based on Azure Storage Server's [SLA for Storage Accounts](https://azure.microsoft.com/en-us/support/legal/sla/storage/v1_5/), following are suggestions when copying performance is most important to you:
266
+
- To copy between blobs or files inner storage account, Service Side Asynchronous Copy would be suggested.
267
+
- To copy Blobs, Service Side Synchronous Copy would be suggested.
268
+
- To copy Files or copy between Blobs and Files, Synchronous Copy would be suggested. To achieve best copying performance, Synchronous Copy would need a powerful machine in Azure.
269
+
- From cost aspect, Service Side Asynchronous Copy would cost least.
270
+
- From data flow approach, Synchronous Copy would be well controlled. With Synchronous Copy, the data will go through the network configured by you.
271
+
- From supported directions, Synchronous Copy and Service Side Asynchronous Copy support more directions than Service Side Synchronous Copy. See details in below table
272
+
273
+
Following table shows supported directions with different copy method.
274
+
<table>
275
+
<tr>
276
+
<td></td>
277
+
<th scope="col">Append Blob</th>
278
+
<th scope="col">Block Blob</th>
279
+
<th scope="col">Page Blob</th>
280
+
<th scope="col">Azure File</th>
281
+
</tr>
282
+
<tr>
283
+
<th scope="row">Append Blob</th>
284
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy <br> Service Side Synchronous Copy</td>
285
+
<td>N/A</td>
286
+
<td>N/A</td>
287
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy</td>
288
+
</tr>
289
+
<tr>
290
+
<th scope="row">Block Blob</th>
291
+
<td>N/A</td>
292
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy <br> Service Side Synchronous Copy</td>
293
+
<td>N/A</td>
294
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy</td>
295
+
</tr>
296
+
<tr>
297
+
<th scope="row">Page Blob</th>
298
+
<td>N/A</td>
299
+
<td>N/A</td>
300
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy <br> Service Side Synchronous Copy</td>
301
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy</td>
302
+
</tr>
303
+
<tr>
304
+
<th scope="row">File</th>
305
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy</td>
306
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy</td>
307
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy</td>
308
+
<td>Synchronous Copy <br> Service Side Asynchronous Copy</td>
309
+
</tr>
310
+
</table>
311
+
203
312
# Need Help?
204
313
Be sure to check out the Microsoft Azure [Developer Forums on MSDN](http://go.microsoft.com/fwlink/?LinkId=234489) if you have trouble with the provided code or use StackOverflow.
0 commit comments