Bina Web Hizmetleri DİNLENME Yolu

The source-page: http://xfront.com/REST-Web-Services.html

Roger L. Costello

Ben ilk REST kısa bir giriş sağlamak ve daha sonra DİNLENME tarzında Web servisleri oluşturma nasıl anlatacağız.

DİNLENME nedir?

DİNLENME doktora tezinde Roy Fielding tarafından icat bir terimdir Tez  Bir açıklamak için mimari tarzı ağ sistemlerinin. DİNLENME rest için duran bir kısaltmadır.

Neden rest denir?

Web kaynakları oluşur. Bir kaynak ilgi herhangi öğedir. Örneğin, Boeing Aircraft Corp 747 kaynak tanımlayabilir. Müşteriler bu URL ile bu kaynaklara erişebilir:

http://www.boeing.com/aircraft/747

Bir temsili kaynağın döndürülür (örneğin, Boeing747.html). Temsili bir istemci uygulaması yerleştirir devlet. Boeing747.html bir köprü geçme müşteri sonucu bir kaynağa erişilebilecek olmasıdır. Yeni gösterimi henüz başka duruma istemci uygulaması yerleştirir. Böylece istemci uygulaması değişiklikleri (aktarım her kaynak gösterimi ile lar) devlet -> rest! İşte rest anlamı Roy Fielding’in açıklama: sonuçlanan kullanıcı bağlantıları (devlet geçişler) seçerek bir uygulama yoluyla ilerler web sayfaları (sanal devlet makinesi), bir ağ: “Rest iyi tasarlanmış bir Web uygulaması nasıl davranacağını bir imajı yaratmak için tasarlanmıştır (uygulamanın sonraki durumunu temsil eden) bir sonraki sayfa kullanıcıya aktarılır ve bunların kullanımı için yitirebilir.”

REST Motivasyon

REST motivasyon Web başarılı kılan Web özelliklerini yakalamak için oldu. Daha sonra bu özellikler Web evrimini rehberlik kullanılmaktadır.

DİNLENME – Bir Mimari Stil, Değil Standart

DİNLENME bir standart değil. Sen W3C REST şartname dışarı koyarak görmez. IBM veya Microsoft veya Güneş REST geliştiricinin araç satan görmez. Niye ya? DİNLENME sadece bir mimari tarzı olduğu için. O tarz bastırmak olamaz. Sadece bunu anlamak ve bu tarzda Web servisleri tasarlayabilirsiniz. (Istemci-sunucu mimari tarzı benzer hiçbir istemci-sunucu standart yoktur.) DİNLENME standart olmasa da, bu kullanım standartları yapar:

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/vb (Kaynak Beyanlar)
  • Metin/XML, metin/html görüntü/GIF, görüntü/JPEG, vb (MIME türleri)

Klasik DİNLENME Sistemi

Web REST sistemidir! Vs, çevrimiçi, sözlük hizmetlerini kitap siparişi hizmetleri, arama hizmetleri – – Bunları yıllar kullanıyoruz bu Web hizmetlerinin birçoğu REST tabanlı Web hizmetleri vardır. Ne yazık ki, sen DİNLENME kullanarak DİNLENME yapı hizmetlerine ve hatta bunu bilmiyordu edilmiştir. DİNLENME Web “büyük resmi” ile ilgilidir. O (bir Web hizmetini uygulamaya Java servlet veya CGI kullanarak, örneğin) uygulama ayrıntılarını ile uğraşmaz. Yani DİNLENME “büyük resmi” bir bakış açısıyla bir Web hizmeti oluşturulmasına ilişkin bir örneği inceleyelim.

Parça Depo Web Hizmetleri

Parça Depo, Inc (hayali şirket) için müşterilerine etkinleştirmek için bazı web hizmetleri yığdı:

  • parçaların bir listesini almak
  • Belirli bir bölümü hakkında detaylı bilgi almak
  • Bir Satın Alma Siparişi teslim (PO)

Şimdi bu hizmetlerin her biri bir RESTful biçimde nasıl uygulandığını düşünelim.

Parça Listesini alın

web hizmeti bir parça listesi kaynak kullanımına bir URL yapar. Örneğin, bir müşteri parça listesini almak için bu URL’yi kullanır:

http://www.parts-depot.com/parts

“Nasıl” web hizmeti parça listesini oluşturur müşteriye tamamen şeffaf olduğunu unutmayın.Bilir Tüm istemci o/o daha sonra yukarıdaki URL’yi gönderirse parçaların listesini içeren bir belge ile yanıt olmasıdır. Uygulama müşterilerine şeffaf olduğundan, Parça Depo müşterileri etkilemeden bu kaynağın alt yapısını değiştirmek için serbesttir. Bu gevşek birleştirme. İşte istemci aldığı belge var:

<?xml version="1.0"?>
<p:Parts xmlns:p="http://www.parts-depot.com" 
         xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/>
      <Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/>
      <Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/>
      <Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/>
</p:Parts>

[. Bu içerik müzakereler yoluyla hizmet istemci (makine-to-makine işleme) XML olarak temsilini istediği belirlendi varsayın] parça listesi her bölümü hakkında detaylı bilgi almak için bağlantıları vardır unutmayın. Bu REST kilit özelliğidir. inceleyerek ve yanıt belgede alternatif URL’lerin arasından seçerek sonraki bir durumdan istemci transferleri.

Detaylı Bölüm Veri Al

Web hizmeti her bir parça kaynak kullanımına bir URL yapar. Bir istemci kısmı 00.345 istekleri nasıl Örnek, burada:

http://www.parts-depot.com/parts/00345

İşte istemci aldığı belge var:

<?xml version="1.0"?>
<p:Part xmlns:p="http://www.parts-depot.com"   
        xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part-ID>00345</Part-ID>
      <Name>Widget-A</Name>
      <Description>This part is used within the frap assembly</Description>
      <Specification xlink:href="http://www.parts-depot.com/parts/00345/specification"/>
      <UnitCost currency="USD">0.10</UnitCost>
      <Quantity>10</Quantity>
</p:Part>

Yine bu veriler daha da veri nasıl bağlı olduğunu gözlemlemek – bu bölümü için spesifikasyon köprü geçme bulunabilir. Her yanıtı belgesinden daha detaylı bilgi almak için detaya müşteri verir.

PO Gönder

Web hizmeti bir PO göndermek için kullanılabilir bir URL yapar. İstemci Parçaları Depo tasarlanmış (ve WSDL belgesinde kamuoyuna) olan PO şemaya uyan PO örneği belgesi oluşturur. istemci, bir HTTP POST yük olarak PO.xml gönderir.

PO hizmeti sunulan PO için bir URL ile HTTP POST yanıt verir. Böylece, müşteri (/ düzenlemek güncellemek için) daha sonra PO her zaman alabilir. PO istemci ve sunucu arasında paylaşılan bilgi parçası haline gelmiştir. Paylaşılan bilgiler (PO) sunucusu tarafından bir adres (URL) verilir ve bir Web hizmeti olarak maruz kalmaktadır.

Fiziksel URL’lerin karşı Mantıksal URL’ler

Bir kaynak kavramsal bir varlıktır. Bir temsili kaynağın somut bir göstergesidir. Bu URL:

http://www.parts-depot.com/parts/00345

Mantıksal URL değil fiziksel bir URL. Böylece, örneğin, olmak her bölümü için statik bir HTML sayfası var ihtiyacı yoktur. Bir milyon parça olsaydı Aslında, daha sonra bir milyon statik HTML sayfaları çok cazip bir tasarım olmayacaktır. [Uygulama detay: Parça Depo konak adından sonra dizeyi ayrıştırır Java Servlet kullanılarak belirli bir bölümü hakkında detaylı verileri alır hizmetini uygulamak olabilir, parça veritabanını sorgulamak XML olarak sorgu sonuçlarını formüle etmek parça numarasını kullanır ve Daha sonra HTTP yanıtı yükü olarak XML döndürmek.] Kullanılan uygulama tekniğini ortaya olmamalıdır tarzı URL’lerin bir mesele olarak. Sen müşterileri etkileyen veya yanıltıcı URL’leri kalmadan uygulamasını değiştirme özgür olması gerekir.

DİNLENME Web Hizmetleri Özellikleri

İşte REST özellikleri şunlardır:

  • İstemci-Sunucu: Bir çekme bazlı etkileşim stili: tüketen bileşenler temsillerini çekin.
  • Vatansız: istemciden sunucuya her istek isteğini anlamak için gerekli olan tüm bilgiler içermeli, ve sunucuda depolanan tüm bağlam yararlanmak mümkün değil.
  • Önbellek: ağ verimliliği tepkilerini iyileştirmek için önbelleklenebilir veya tamponlanamaz olarak etiketlenmiş olma yeteneğine sahip olmalıdır.
  • Üniforma arayüzü: Tüm kaynaklar genel arayüzü ile erişilen (örneğin HTTP GET, POST, PUT, DELETE).
  • Adlandırılan kaynakları – Sistem bir URL kullanarak adlandırılır kaynaklardan oluşur.
  • Birbirine bağlı kaynak gösterimleri – kaynakların gösterimleri böylece bir durumdan bir başka ilerleme için bir istemci sağlayan URL’ler kullanarak birbirine bağlanır.
  • Katmanlı bileşenler – aracılar, vb proxy sunucular, önbellek sunucuları, ağ geçitleri gibi, performans, güvenlik, vb desteklemek için istemciler ve kaynaklar arasında eklenebilir

DİNLENME Web Servis Tasarım Prensipleri

1. REST ağında Web Hizmetleri yaratmanın anahtarı (yani Web) Eğer hizmetleri olarak açığa isteyen kavramsal tarafın bütün belirlemektir. Parça listesi, detaylı parça verileri, satın alma siparişi: Biz kaynakların bir kısmını örnekler gördüm üstünde.
2. Her kaynak için bir URL oluşturun. Kaynaklar isimler değil fiiller olmalıdır. Örneğin, bu kullanmayın:

http://www.parts-depot.com/parts/getPart?id=00345

 GetPart fiil unutmayın. Bunun yerine bir isim kullanın:

http://www.parts-depot.com/parts/00345

3. Müşteriler sadece kaynağın bir temsilini alıp alamayacağını göre Kaynaklarınızı kategorize veya istemciler değiştirebilir olmadığını kaynak (eklemek). Eski, bir HTTP GET kullanarak bu kaynaklar erişilebilir hale. Sonrası için, HTTP POST kullanarak bu kaynakların erişilebilir hale PUT ve/veya DELETE.
4. HTTP GET erişilebilen tüm kaynaklar yan etkisi özgür olmalıdır. Yani kaynak sadece kaynağın bir temsilini dönmelidir. Kaynak çağırma kaynak değiştirerek neden olmamalıdır.
5. Hiçbir erkek/kadın bir ada değildir. Aynı şekilde, hiçbir gösterimi bir ada olmalıdır. Başka bir deyişle, daha fazla bilgi için detaya istemcileri mümkün kılmak ve/veya ilgili bilgi almak için kaynak temsiller içinde köprüler koydu.
6. Tasarım kademeli verileri ortaya koymaktır. Tek bir yanıtı belgedeki her şeyi açığa etmeyin. Daha fazla bilgi edinmek için köprüler sağlayın.
7. bir şema (DTD W3C Şeması, RelaxNG veya Schematron) kullanılarak tepki verileri biçimini belirtir. Bir POST gerektiren veya buna PUT Bu hizmetler için ayrıca yanıtın biçimini belirtmek için bir şema sunar.
8. Hizmetler WSDL belgesi, ya da sadece bir HTML belgesi kullanılarak çağrılacak açıklayın.

Özet

Bu makale bir mimari tarzı olarak DİNLENME tanımladı. Aslında, Web mimari tarzı. DİNLENME Web de işe kılan açıklar. DİNLENME ilkelerine bağlılık hizmetlerinizi Web bağlamında iyi iş yapacaktır. Gelecekteki bir yazımda DİNLENME prensiplerini kullanarak Web evrimi hakkında yazacak.

Alındı

Bu belgeyi oluştururken onların çok yararlı yorumlar için Robert Leftwich’in Philip Eskelin teşekkürler.