Tôi có nên tạo các trường hợp CloudStorageAccount và CloudBlobClient mỗi lần tôi muốn nhận blob từ bộ nhớ không? Ví dụ: tôi đã triển khai Nhà cung cấp đường dẫn ảo tùy chỉnh để làm việc với bộ nhớ blob. Giải pháp thiết kế tốt nhất: tạo CloudStorageAccount và CloudBlobClient một lần là trường riêng của Nhà cung cấp đường dẫn ảo tùy chỉnh của tôi hoặc sử dụng tiện ích với các phương thức tĩnh (được chia sẻ) tạo CloudStorageAccount và CloudBlobClient mỗi khi tôi muốn lấy blob từ lưu trữ? Làm thế nào đắt tiền từ điểm thực hiện?Việc tạo tiền của CloudStorageAccount hoặc CloudBlobClient tốn bao nhiêu từ điểm hiệu suất?
Trả lời
Bạn có thể sử dụng lại CloudStorageAccount và CloudBlobClient vì chúng không giữ trạng thái (xem câu trả lời của Steve Marx trong liên kết của Simon). SDK là mã nguồn mở và bạn có thể chỉ đơn giản là look at the source on GitHub.
Nếu bạn xem qua lớp CloudStorageAccount, bạn có thể thấy rằng mục đích chính của nó là đảm bảo bạn kết thúc với StorageCredentials bằng Blob/Queue và TableEndpoint. Nhìn vào hàm tạo của CloudBlobClient, bạn có thể thấy rằng nó lưu trữ các thông tin lưu trữ, URI điểm cuối và một số giá trị mặc định.
Không có gì phức tạp ở đây và không có bất kỳ mạng I/O nào có nghĩa là quá trình xử lý rất rẻ. Nhưng khi bạn nghĩ về hiệu suất, mọi tối ưu hóa nhỏ có thể giúp bạn lưu trữ an toàn trong một biến tĩnh (điều này có thể ảnh hưởng đến việc kiểm tra đơn vị của bạn) hoặc nếu bạn sử dụng một thùng chứa IoC, bạn có thể chọn sử dụng một cá thể duy nhất cho toàn bộ vùng chứa.
Bây giờ, bạn cần tính đến điều gì đó. Cả CloudStorageAccount và CloudBlobClient của bạn sẽ lưu các thông tin lưu trữ và URI điểm cuối. Nhưng nếu bạn thay đổi thông tin này thông qua cổng thông tin (bạn có thể thay đổi khóa của tài khoản lưu trữ của bạn)? Nếu bạn lưu trữ một cá thể đơn lẻ của CloudStorageAccount/CloudBlobClient, bạn có thể cần phải xử lý sự kiện RoleEnvironment.Changing để 'làm mới' các đối tượng này với thông tin tài khoản lưu trữ mới.
Nếu đây là trường hợp thì tại sao tôi gặp lỗi, http://stackoverflow.com/questions/24229288/parallel-blob-upload-throwing-404-bad-request-intermittently – user960567
- 1. Từ điển Python tốn bao nhiêu để xử lý?
- 2. Các cuộc gọi hàm trong JavaScript tốn bao nhiêu?
- 3. Khoản tiền khóa là bao nhiêu?
- 4. Yếu tố hiệu suất chợ là bao nhiêu?
- 5. Hiệu suất của việc gọi Unmanaged .dll từ C#
- 6. __builtin_prefetch, Số tiền đọc được bao nhiêu?
- 7. Tôi mất bao nhiêu tiền để chọn ASP.NET trên PHP?
- 8. Cải thiện hiệu suất của việc lấy MethodInfo từ MethodCallExpression
- 9. Các trường hợp ngoại lệ là bao nhiêu Tiền mặt
- 10. Hiệu suất của Fortran
- 11. Dự án tốn bao nhiêu thời gian và công sức để tương thích ngược?
- 12. Chi phí tạo quá trình trong Windows là bao nhiêu?
- 13. Hiệu suất của Arrays.asList
- 14. Dưới C# bao nhiêu một hit hiệu suất là một thử, ném và khối catch
- 15. Thời gian gọi điện thoại tốn kém (NULL) trong vòng lặp máy chủ là bao nhiêu?
- 16. đặc điểm hiệu suất của T-SQL CTEs
- 17. Hiệu suất của Bộ đếm hiệu suất
- 18. Có thể tạo bao nhiêu ổ cắm từ cổng?
- 19. Hiệu suất của Java ResourceBundle
- 20. cách cải thiện hiệu suất của purePDF?
- 21. Hiệu suất và cổ chai của Zend_Search_Lucene?
- 22. Hiệu suất của ArrayList
- 23. Hiệu suất của ID dài
- 24. Có bao nhiêu LINQ?
- 25. Ưu điểm và nhược điểm của việc bao gồm các tệp PDB với ứng dụng phát hành của bạn
- 26. Hiệu suất của việc gọi mã không được quản lý từ mã được quản lý
- 27. Chi phí '$ (this)' này là bao nhiêu?
- 28. chuyển đổi điểm nổi và hiệu suất
- 29. Có bao nhiêu đối tượng được tạo
- 30. Hiệu suất của UIView: removeFromSuperview VS ẩn
vui lòng xem http://stackoverflow.com/a/9934393/468244 ... vì việc tạo không phải là "miễn phí" và sử dụng lại bình thường không phải là vấn đề mà bạn nên sử dụng lại. –
Ok. Cảm ơn bạn. Nhưng các chủ đề này có an toàn trong ngữ cảnh của VirtualPathProvider không? Như tôi đã hiểu chỉ có một cá thể của VirtualPathProvider cho mỗi ứng dụng (nếu tôi tạo một cá thể mới và đăng ký nó trong global.asax trên application_start), vì vậy sẽ không có vấn đề gì với thread-safety? – eternity
vì @sandrino cho biết sẽ không có vấn đề gì với chuỗi. Tùy thuộc vào ứng dụng của bạn, nó cũng có thể cần thiết để giữ 'CloudBlobContainer' sau 'CreateIfNotExist'ing chúng. Nhưng điều đó phụ thuộc vào trường hợp sử dụng. –