首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哪种亚马逊S3 .NET库最有用、最高效?

哪种亚马逊S3 .NET库最有用、最高效?
EN

Stack Overflow用户
提问于 2009-09-12 18:52:41
回答 3查看 5.2K关注 0票数 17

有两个主要的开源.net亚马逊S3库。

  1. Three Sharp
  2. LitS3

我目前在我们的MVC演示项目中使用了LitS3,但是有一些批评。这里有没有人用过这两个库,这样他们就可以给出一个客观的观点。

下面是一些使用LitS3的示例调用:

在演示控制器上:

代码语言:javascript
复制
    private S3Service s3 = new S3Service()
    {
        AccessKeyID = "Thekey",
        SecretAccessKey = "testing"
    };

    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View("Index",s3.GetAllBuckets());
    }

在演示视图中:

代码语言:javascript
复制
<% foreach (var item in Model)
   { %>
   <p>
    <%= Html.Encode(item.Name) %>
   </p>
<% } %>

编辑1:

由于我必须不断移动,并且没有明确的指示表明哪个库更有效,并且保持更新,因此我实现了一个存储库模式,该模式具有一个接口,允许我在将来需要时更改库。下面是我创建的S3Repository的一部分,它允许我在需要的情况下更改库:

代码语言:javascript
复制
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应用程序中集成了这两个库,以查看设计上的差异,我知道这可能是时间上的差距,但我真的想要一个好的长期解决方案。下面你会看到两个库的相同动作的两个示例,也许这会激励你们中的一些人让我知道你们的想法。

有三个锐化库:

代码语言:javascript
复制
    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库:

代码语言:javascript
复制
    public IQueryable<T> FindAllBuckets<T>()
    {
        return _repository.GetAllBuckets()
            .Cast<T>()
            .AsQueryable();
    }
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1415833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档