Có hai thư viện Amazon S3 nguồn mở chính.Thư viện IBM S3 .NET nào hữu ích và hiệu quả nhất?
Tôi hiện đang sử dụng LitS3 trong dự án trình diễn MVC của chúng tôi, nhưng có một số lời chỉ trích về điều đó. Có ai ở đây sử dụng cả hai thư viện để họ có thể đưa ra một quan điểm khách quan.
Dưới đây một số cuộc gọi mẫu sử dụng LitS3:
On khiển demo:
private S3Service s3 = new S3Service()
{
AccessKeyID = "Thekey",
SecretAccessKey = "testing"
};
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View("Index",s3.GetAllBuckets());
}
Vào xem demo:
<% foreach (var item in Model)
{ %>
<p>
<%= Html.Encode(item.Name) %>
</p>
<% } %>
EDIT 1:
Vì tôi phải tiếp tục di chuyển và không có chỉ dẫn rõ ràng về thư viện nào hiệu quả hơn và được cập nhật nhiều hơn, tôi có đã triển khai một mẫu kho lưu trữ với một giao diện cho phép tôi thay đổi thư viện nếu tôi cần trong tương lai. Dưới đây là một phần của S3Repository mà tôi đã tạo ra và sẽ cho phép tôi thay đổi các thư viện trong trường hợp tôi cần phải:
using LitS3;
namespace S3Helper.Models
{
public class S3Repository : IS3Repository
{
private S3Service _repository;
#region IS3Repository Members
public IQueryable<Bucket> FindAllBuckets()
{
return _repository.GetAllBuckets().AsQueryable();
}
public IQueryable<ListEntry> FindAllObjects(string BucketName)
{
return _repository.ListAllObjects(BucketName).AsQueryable();
}
#endregion
Nếu bạn có bất kỳ thông tin về câu hỏi này xin vui lòng cho tôi biết trong một chú thích, và tôi sẽ nhận được quay lại và chỉnh sửa câu hỏi.
EDIT 2: Kể từ khi câu hỏi này là không nhận được sự chú ý, tôi tích hợp cả các thư viện trong ứng dụng web của tôi để thấy sự khác biệt trong thiết kế, tôi biết điều này có lẽ là một eo của thời gian, nhưng tôi thực sự muốn có một dài tốt chạy giải pháp. Dưới đây bạn sẽ thấy hai mẫu của cùng một hành động với hai thư viện, có lẽ điều này sẽ thúc đẩy một số bạn cho tôi biết suy nghĩ của bạn.
VỚI BA SHARP THƯ VIỆN:
public IQueryable<T> FindAllBuckets<T>()
{
List<string> list = new List<string>();
using (BucketListRequest request = new BucketListRequest(null))
using (BucketListResponse response = service.BucketList(request))
{
XmlDocument bucketXml = response.StreamResponseToXmlDocument();
XmlNodeList buckets = bucketXml.SelectNodes("//*[local-name()='Name']");
foreach (XmlNode bucket in buckets)
{
list.Add(bucket.InnerXml);
}
}
return list.Cast<T>().AsQueryable();
}
VỚI LITS3 THƯ VIỆN:
public IQueryable<T> FindAllBuckets<T>()
{
return _repository.GetAllBuckets()
.Cast<T>()
.AsQueryable();
}
Tại sao bạn không như LitS3? Tôi đang sử dụng ThreeSharp mà không gặp bất kỳ vấn đề gì. –
Tôi không có khiếu nại về LitS3. Tôi chỉ muốn đảm bảo rằng tôi sẽ có thể có toàn quyền kiểm soát S3 API và nó sẽ có hiệu quả. Cám ơn bạn đã góp ý. – Geo
Tôi đã không sử dụng LitS3 nhưng tôi sử dụng rất nhiều ThreeSharp và tôi nghĩ rằng nó đã được thiết kế tốt. – skalb