有两个主要的开源.net Amazon S3库。
我目前在我们的 MVC 演示项目中使用 LitS3,但是有些人对它提出了批评。这里是否有任何人同时使用过这两个库,以便可以给出客观的观点。
以下是一些使用 LitS3 的示例调用:
在演示控制器中:
private S3Service s3 = new S3Service()
{
AccessKeyID = "Thekey",
SecretAccessKey = "testing"
};
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View("Index",s3.GetAllBuckets());
}
在演示视图上:
<% foreach (var item in Model)
{ %>
<p>
<%= Html.Encode(item.Name) %>
</p>
<% } %>
编辑 1:
由于我需要不断地前进,而且没有明确的迹象表明哪个库更有效并更新得更快,因此我已经实现了一个具有接口的仓库模式,这将允许我在需要时更改库。以下是我创建的S3Repository部分,它将让我在需要时更改库:
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
如果您对这个问题有任何信息,请在评论中让我知道,我会回来编辑这个问题。编辑2: 由于这个问题没有得到关注,我在我的Web应用程序中集成了两个库,以查看设计上的区别。我知道这可能是浪费时间,但我真的想要一个长期解决方案。下面您将看到两个库执行相同操作的两个示例,也许这会激励你们中的一些人让我知道你们的想法。
使用Three Sharp库:
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();
}
使用LITS3库:
public IQueryable<T> FindAllBuckets<T>()
{
return _repository.GetAllBuckets()
.Cast<T>()
.AsQueryable();
}