Что Amazon S3.NET Library является наиболее полезным и эффективным?
Существуют две основные библиотеки open source.net Amazon S3.
В настоящее время я использую LitS3 в нашем демонстрационном проекте MVC, но есть некоторые критические замечания по этому поводу. Кто-нибудь здесь использовал обе библиотеки, чтобы они могли дать объективную точку зрения.
Ниже некоторых примеров вызовов с использованием 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:
Поскольку этот вопрос не привлекает внимания, я объединил обе библиотеки в своем веб-приложении, чтобы увидеть различия в дизайне, я знаю, что это, вероятно, талия времени, но я действительно хочу хорошее долгосрочное решение. Ниже вы увидите два образца одного и того же действия с двумя библиотеками, возможно, это побудит некоторых из вас сообщить мне свои мысли.
С ТРИ ОБОРОТНОЙ БИБЛИОТЕКИ:
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 LIBRARY:
public IQueryable<T> FindAllBuckets<T>()
{
return _repository.GetAllBuckets()
.Cast<T>()
.AsQueryable();
}
Ответы
Ответ 1
Похоже, что официальная библиотека теперь " AWS SDK для .NET", доступна здесь: http://aws.amazon.com/sdkfornet/
Похоже, он включает в себя:
- Примеры кода
- Интеграция с Visual Studio
- код библиотеки .NET
Он поддерживает:
- Amazon Elastic Compute Cloud
- Amazon Simple Storage Service
- Виртуальное частное облако Amazon
- Amazon SimpleDB
- Служба реляционной базы данных Amazon
- Amazon CloudFront
- Служба простой очереди Amazon
- Простая служба уведомлений Amazon.
- Amazon Elastic MapReduce
- Amazon CloudWatch
- Эластичная балансировка нагрузки
- Автоматическое масштабирование
Ответ 2
Я могу перезвонить, сказав, что мы используем Affirma ThreeSharp, возможно, год или около того. Я почти уверен, что в первый раз, когда мы использовали S3, мы использовали Amazon SOAP-библиотеку, которая, конечно же, не так просто, как Affirma ThreeSharp.
Я также считаю его очень надежным даже при выполнении пакетной работы и загрузке/загрузке больших объемов данных. Похоже, что проект не так сильно обновился, но потом мы не чувствовали, что он когда-либо нуждается в обновлении!
Пример кода:
Что-то вроде этого выгрузит файл:
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))
{ }
}
Изменить: Amazon теперь запустила собственную библиотеку .Net для своих веб-сервисов (включая S3), поэтому Affirma больше не поддерживает свою библиотеку.
http://aws.amazon.com/sdkfornet/
Ответ 3
Мне повезло с LitS3. Время от времени ThreeSharp загружало файлы с 0 байтами и, откровенно говоря, немного переработано для решения этой проблемы.