首页
学习
活动
专区
工具
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

回答 3

Stack Overflow用户

发布于 2010-04-29 03:13:32

看起来官方的库现在是'AWS for .NET',可以在这里找到:http://aws.amazon.com/sdkfornet/

看起来它包括:

  • 代码示例
  • Visual Studio

库代码

它支持:

SimpleDB

  • Amazon关系数据库Service

  • Amazon CloudFront

  • Amazon简单队列Service

  • Amazon简单通知Service

  • Amazon Elastic MapReduce

  • Amazon CloudWatch

  • Elastic Load Balancing

  • Auto Scaling Balancing

  • Auto
  • Amazon Elastic Compute Cloud Scaling
票数 14
EN

Stack Overflow用户

发布于 2009-09-15 20:08:24

我可以插话说,我们使用Affirma ThreeSharp可能已经有一年左右了。我非常确定当我们第一次使用S3的时候,我们使用的是亚马逊的SOAP库,这肯定不像Affirma的ThreeSharp那么简单。

我还发现它非常可靠,即使在进行批处理工作和上传/下载大量数据时也是如此。项目似乎没有那么多的更新,但我们也没有感觉到它需要更新!

代码示例:类似这样的代码将上传一个文件:

代码语言:javascript
复制
m_config = new ThreeSharpConfig
                           {
                               AwsAccessKeyID = Core.ConfigSettings.AmazonS3AccessKey,
                               AwsSecretAccessKey = Core.ConfigSettings.AmazonS3SecretAccessKey,
                               ConnectionLimit = 40,
                               IsSecure = true

                           };
            m_service = new ThreeSharpQuery(m_config);



 using (var request = new ObjectAddRequest(amazonS3BucketName, fileName.Replace(' ', '_')))
            {
                request.Headers.Add("x-amz-acl", "public-read-write");
                request.LoadStreamWithBytes(fileData);

                if (redirectUrl != null)
                {
                    request.RedirectUrl = redirectUrl;
                }

                using (ObjectAddResponse response = m_service.ObjectAdd(request))
                { }
            }

编辑:亚马逊现在已经为他们的网络服务(包括S3)推出了他们自己的.Net库,因此Affirma不再支持他们的库。

http://aws.amazon.com/sdkfornet/

票数 4
EN

Stack Overflow用户

发布于 2009-10-08 20:50:57

我和LitS3的关系更好。ThreeSharp one有时会上传0字节的文件,坦率地说,对于它正在解决的问题来说,它有点过度设计了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1415833

复制
相关文章

相似问题

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