SORU
28 Ocak 2011, Cuma


Nasıl akarsu kaynakları Dinlendirici bir paradigma içinde uygun mu?

Dinlendirici bir hizmet oluşturmak, okuma, güncelleştirme ve kaynaklarını silebilirsiniz. Bu tüm veritabanı bir varlık gibi bir şey - ama nasıl bu veri akışı için çevirmek? uğraştığın zaman çalışır (Ya?) Video örneğinde mesela, saçma bir zamanda bir sorgu ben kaynak olarak her kare tedavisinde görünüyor. Yerine soket bağlantısı kurmak ve akış kare bir dizi istiyorum. Ama bu Huzurlu bir paradigmanın sonu mu? Eğer geri sarma edebilmek veya hızlı ileri akışı için ne yapmalıyım? Bu mümkün Dinlendirici bir paradigma içinde mi? Yani:Nasıl akarsu kaynakları Dinlendirici bir paradigma içinde uygun mu?

Uygulama meselesi, bu veri akışı bir hizmet oluşturmak için hazır alıyorum, ve bunu yaptığıma emin olmak istiyorum olarak "yol". en iyi Bu sorun daha önce çözüldü eminim. Birisi iyi malzeme için beni işaret edebilir?

CEVAP
28 Ocak 2011, Cuma


Gerçekten RESTful streaming - sonuçlar çoğunlukla başka bir hizmet akışı için temsilci seçme hakkında kötü bir çözüm değildir) gibi kaynaklar yer bulmayı başardım. Benim en iyi kendim çözmek - akış alanım değil unutmayın yaparım ama benim 2 sent eklemek için çalışacağım.

Akış yönü, iki bağımsız parçaya sorunu ayırmamız gerektiğini düşünüyorum

  1. medya kaynakları (meta veri) erişim
  2. orta/kendi akımı (ikili veriler)

1.) Medya kaynaklarına erişim< / ^ br . Bu oldukça basittir, temiz ve Rahat bir şekilde ele alınabilir. Örnek olarak, diyelim bizi akışları listesine erişmek için izin verir: XML tabanlı bir API var

GET /media/

<?xml version="1.0" encoding="UTF-8" ?>
<media-list uri="/media">
    <media uri="/media/1" />
    <media uri="/media/2" />
    ...
</media-list>

...ve aynı zamanda bireysel akışı için:

GET /media/1

<?xml version="1.0" encoding="UTF-8" ?>
<media uri="/media/1">
    <id>1</id>
    <title>Some video</title>
    <stream>rtsp://example.com/media/1.3gp</stream>
</media>

2.) Orta Akış için kendi erişim< / ^ br . Bu daha zor kısmı. Zaten söz konusu bir seçeneği işaret etti, ve o karelere erişimi, Dinlendirici bir API üzerinden izin vermektir. Bu iş olmasa bile, uygun bir seçenek olmadığını size katılıyorum.

Arasında yapılacak bir seçim olduğunu düşünüyorum

  1. devrederek özel bir akış protokolü üzerinden özel bir hizmet (örneğin, PNG) için akış
  2. kullanan HTTP seçenekler mevcut

Eski bir gerektirse de daha verimli olmak için inanıyorumözel hizmet akışı(ve/veya donanım). Bu belki biraz kenar nedir kabul Dinlendirici, ancak unutmayın bizim API huzur vericidir tüm yönleri ve olsa bile özel akış hizmeti uygun üniforma arayüzü (GET/POST/PUT/DELETE), bizim API yok. Bizim API/POST/DELETE PUT/GET) kaynakları ve meta verileri üzerinde bize doğru düzgün kontrol sağlar, ve gerçek zamanlı aktarım servisi (böylece DİNLENME bağlılık yönüyle kalarak) bağlantılar sağlıyoruz.

İkinci seçenekHTTP üzerinden akış- yukarıdaki kadar etkili olmayabilir, ama kesinlikle mümkün. Teknik olarak, HTTP üzerinden ikili içerik herhangi bir şekilde erişim sağlayan, daha farklı değil. Bu durumda bizim API ikili kaynak HTTP üzerinden erişilebilir bir bağlantı sağlayacak ve aynı zamanda kaynağın büyüklüğü hakkında bize tavsiyelerde bulunur:

GET /media/1

<?xml version="1.0" encoding="UTF-8" ?>
<media uri="/media/1">
    <id>1</id>
    <title>Some video</title>
    <bytes>1048576</bytes>
    <stream>/media/1.3gp</stream>
</media>

İstemci GET /media/1.3gp kullanarak HTTP üzerinden kaynak erişebilir. Bir seçenek, istemci tüm kaynak HTTP progressive download indirmek için. Daha temiz bir alternatif istemci HTTP Range headers kullanarak parçalar kaynağa erişmek için. 1MB bir dosya ikinci 256 KB chunk çekici için büyük, istemci isteği bu gibi görünecektir:

GET /media/1.3gp
...
Range: bytes=131072-262143
...

Aralıkları destekleyen bir server Content-Range header, kaynak kısmi gösterimi izledi: ile cevap verirdim

HTTP/1.1 206 Partial content
...
Content-Range: bytes 131072-262143/1048576
Content-Length: 1048576
...

Bizim API zaten bayt (1 MB) client dosyasının tam boyutunu anlattı unutmayın. Durumlarda müşteri değil biliyorum boyutta kaynak gerektiğini İlk Çağrı HEAD /media/1.3gp tanı amacıyla, boyutu, diğer türlü riske sunucu yanıt 416 Requested Range Not Satisfiable.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dope2111

    dope2111

    29 HAZİRAN 2009
  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007
  • tseyina

    tseyina

    2 AĞUSTOS 2006