2009-09-12 7 views
17

Istnieją dwie główne biblioteki. S3 Amazon S3.Co jest najbardziej przydatne i wydajne w bibliotece Amazon S3 .NET?

  1. Three Sharp
  2. LitS3

Obecnie używam LitS3 w naszym projekcie demo MVC, ale jest jakaś krytyka o nim. Czy ktoś tutaj użył obu bibliotek, aby móc podać obiektywny punkt widzenia.

Poniżej kilka połączeń próbnych z wykorzystaniem LitS3:

Na kontrolerze demo:

private S3Service s3 = new S3Service() 
    { 
     AccessKeyID = "Thekey", 
     SecretAccessKey = "testing" 
    }; 

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

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

Na widok demo:

<% foreach (var item in Model) 
    { %> 
    <p> 
    <%= Html.Encode(item.Name) %> 
    </p> 
<% } %> 

EDIT 1:

Ponieważ muszę ruszać i nie ma jasnego wskazania, która biblioteka jest bardziej skuteczna i bardziej aktualna zaimplementowałem wzorzec repozytorium z interfejsem, który pozwoli mi zmienić bibliotekę, jeśli będę potrzebował w przyszłości. Poniżej znajduje się sekcja S3Repository że zostały utworzone i pozwoli mi zmienić bibliotek w przypadku muszę:

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 

Jeśli masz jakiekolwiek informacje na temat tego pytania proszę dać mi znać w komentarzu, a ja dostanę wróć i edytuj pytanie.

EDIT 2: Ponieważ kwestia ta nie jest coraz uwagę, że zintegrowane obu bibliotek w mojej aplikacji internetowej, aby zobaczyć różnice w projektowaniu, wiem, że jest to prawdopodobnie strata czasu, ale naprawdę chcę to dobry długi uruchom rozwiązanie. Poniżej zobaczysz dwie próbki tego samego działania z dwiema bibliotekami, może to zmotywuje niektórych z was, aby poinformowali mnie o swoich myślach.

z trzema SHARP Biblioteka:

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(); 
    } 

Z LITS3 Biblioteka:

public IQueryable<T> FindAllBuckets<T>() 
    { 
     return _repository.GetAllBuckets() 
      .Cast<T>() 
      .AsQueryable(); 
    } 
+0

Dlaczego nie lubisz LitS3? Używam ThreeSharp bez żadnych problemów. –

+0

Nie mam żadnych skarg na LitS3. Chcę tylko upewnić się, że będę mógł mieć pełną kontrolę nad S3 API i że będzie to skuteczne. Dzięki za komentarz. – Geo

+0

Nie użyłem LitS3, ale użyłem mocno ThreeSharp i pomyślałem, że jest dobrze zaprojektowany. – skalb

Odpowiedz

4

mogę dostroić się mówiąc, że używamy Affirma ThreeSharp być może za rok lub dwa. Jestem pewien, że przy pierwszym użyciu S3 używaliśmy biblioteki SOAP Amazon, która z pewnością nie była tak łatwa jak ThreeSharp Affirmy.

Stwierdziłem również, że jest bardzo niezawodny, nawet podczas wykonywania zadań wsadowych i przesyłania/pobierania dużych ilości danych. Projekt nie wydaje się zbytnio aktualizowany, ale nie mamy wrażenia, że ​​kiedykolwiek trzeba go zaktualizować!

przykładem Kod: Coś jak to będzie przesłać plik:

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)) 
       { } 
      } 

Edit: Amazon teraz uruchomiły własne biblioteki .NET dla swoich usług internetowych (m.in. S3), więc co za tym idzie nie są już Affirma wspieranie ich biblioteka.
http://aws.amazon.com/sdkfornet/

+0

Witaj Perhentian: Co myślisz o braku projektowania obiektów w bibliotece Affirmy. Sprawiają, że przetwarzasz kod XML, czy istnieje inny sposób, że czegoś mi brakuje? jakiekolwiek wejście w tym? – Geo

+0

Cześć Geo, właściwie nie zbliżyłem się do żadnego XML-a. Powinieneś być w stanie przesłać plik w zaledwie kilku liniach C#. Zobacz przykładowy projekt. – Perhentian

1

Miałem więcej szczęścia z LitS3. Urządzenie ThreeSharp od czasu do czasu ładowało pliki z 0 bajtami i szczerze mówiąc, jest nieco nadprogramowe z powodu problemu, który rozwiązuje.

14

Wygląda oficjalna biblioteka jest teraz 'AWS SDK for .NET', dostępny tutaj: http://aws.amazon.com/sdkfornet/

Wygląda na to, że zawiera:

  • próbki kodu
  • Integracja Visual Studio
  • Kod biblioteki .NET

Obsługuje:

  • Amazon Elastic Compute Cloud
  • Amazon Proste Storage Service
  • Amazon Virtual Private Chmura
  • Amazon SimpleDB
  • usługi
  • Amazon relacyjnej bazy danych
  • Amazon CloudFront
  • Amazon Proste Usługa kolejki
  • Amaz na prostej usługi powiadomień
  • Amazon Elastic MapReduce
  • Amazon CloudWatch
  • Elastic Równoważenie obciążenia
  • Auto Scaling