有两个主要的开源.net亚马逊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
如果你有任何关于这个问题的信息,请在评论中告诉我,我会回来编辑这个问题。
EDIT 2:由于这个问题没有得到关注,我在我的web应用程序中集成了这两个库,以查看设计上的差异,我知道这可能是时间上的差距,但我真的想要一个好的长期解决方案。下面你会看到两个库的相同动作的两个示例,也许这会激励你们中的一些人让我知道你们的想法。
有三个锐化库:
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();
}
https://stackoverflow.com/questions/1415833
复制相似问题