OData ve REST web hizmetleri arasındaki fark


196

Bazı web hizmetlerine bakarken, Microsoft'un OData adını verdiği bu "yeni" teknolojiyle karşılaştım . OData nedir hakkında SSS içindeki açıklamalarını okurken, OData'yı REST-ful web hizmetlerinden ayırmakta zorlanıyorum. Birisi lütfen farklılıkları anlamama yardımcı olabilir mi?


2
Biri üretici, diğeri tüketiciler için kolaylaştırıcı.
Kangkan

Yanıtlar:


98

GÜNCELLEME Uyarı, OData V4 kullanıma sunulduğundan bu yanıt son derece güncel değil.


Bir süre önce burada konuyla ilgili bir yazı yazdım .

Franci'nin dediği gibi, OData Atom Pub'a dayanıyor. Bununla birlikte, üstte bazı işlevleri katmanlandırdılar ve maalesef süreçteki bazı REST kısıtlamalarını göz ardı ettiler.

Bir OData hizmetinin sorgulama yeteneği, yanıtta mevcut olmayan veya yanıt olarak bağlantılı bilgilere dayanarak URI'ler oluşturmanızı gerektirir. REST çalışanlarının bant dışı bilgi dediği ve istemci ile sunucu arasında gizli bağlantı sağlayan şeydir.

Girilen diğer bağlantı, giriş içeriğinde bulunan özellikleri tanımlamak için EDMX meta verilerinin kullanılmasıdır. Bu meta veriler $ metadata adı verilen sabit bir uç noktada bulunabilir. Yine, müşterinin bunu önceden bilmesi gerekir, keşfedilemez.

Ne yazık ki, Microsoft bu önemli veri parçalarını tanımlamak için medya türleri oluşturmak için uygun görmedi, bu nedenle herhangi bir OData istemcisinin konuştuğu hizmet ve aldığı veriler hakkında bir sürü varsayım yapması gerekiyor.


1
@felickz Üzgünüm. DNS sorunları yaşıyordum. Şimdi çalışıyor olmalı. Veya dns önbelleğinizin süresi dolduğunda olacaktır.
Darrel Miller

6
Aslında bu bir güncel değil. OData'nın V3'ü, bu endişelerin her ikisini de ele alan 'JSON Light'ı ekledi (ki bu gerçekten bir tanesidir), yani $ meta veriler, sorgu oluşturmayı nasıl bildiğinizdir, bu nedenle eksik olan tek şey kaynak temsillerinde $ metadata bağlantısıdır. Bu eklendi, böylece her iki sorun da bir seferde kayboluyor.
Alex James

10
@DarrelMiller Cevabınızın artık güncel olmadığını söylediniz. Konuyla ilgili görüşünüzü içeren bir güncelleme eklemek ister misiniz? OData 4 ve REST arasındaki farkı bilmekle ilgileniyorum. Çok teşekkürler
Kurren

2
@Kurren Benim yapılacaklar listemde, ama ne yazık ki uzun bir liste.
Darrel Miller

2
@DarrelMiller Umarız yakında OData V4 ile güncellemeyi yapmak için yayını güncellemek için biraz zaman bulacaksınız.
LCJ

64

OData protokolü AtomPub protokolünün üzerine kurulmuştur. AtomPub protokolü, REST API tasarımının en iyi örneklerinden biridir. Yani, bir anlamda haklısınız - OData sadece başka bir REST API'sidir ve her OData uygulaması bir REST-ful web hizmetidir.

Aradaki fark OData'nın belirli bir protokol olmasıdır; REST mimari tarzı ve tasarım örüntüsüdür.


Bu konuda yanlış olabilirim (sadece odata hakkında bilgi edinmeye başladım), ancak [protokol] [ odata.org/documentation] sürümünün 3 sürümünden itibaren, alternatif olarak kullanabileceğiniz bir JSON biçimi de belirir. Buna biraz ışık tutabilir misin?
Johannes Rudolph

1
@JohannesRudolph, dürüstçe hiçbir fikrim yok. Son iki yıldır OData'ya bakmadım. Ancak Microsoft'un JSON desteği eklemesi muhtemeldir. Yine de, bunun hiçbir şekilde buradaki yanıtları değiştirmediğini unutmayın. JSON ve XML, REST kaynaklarının sunumu meselesidir.
Franci Penov

1
İstekte hangi formata sahip olmak istediğinizi belirtebilirsiniz. XML ve JSON, örneğin Accept üstbilgisini application / json (
OData

32

REST, bir web servisine nasıl erişilebileceğini tanımlamak için kullanılan genel bir tasarım tekniğidir. REST'i kullanarak veri almak için http istekleri yapabilirsiniz. Tarayıcınızda denerseniz, bir web sayfasına dönmek yerine XML'i geri almak dışında bir web sitesine gitmek gibi bir şey olacaktır. Bazı hizmetler ayrıca Javascript ile kullanımı daha kolay olan verileri JSON biçiminde döndürür.

OData, verileri REST yoluyla ortaya çıkaran özel bir teknolojidir.

Gerçekten hızlı bir şekilde özetlemek isterseniz, şöyle düşünün:

  • REST - tasarım deseni
  • OData - etkinleştirme teknolojisi

REST HTTP veya web ile sınırlı değil
user27874

20

2012 yılında OData standardizasyona girdi, bu yüzden buraya bir güncelleme ekleyeceğim ..

İlk olarak tanımlar:

REST - HTTP üzerinden mesaj gönderme yöntemidir.

OData V4 - REST'in spesifik bir uygulamasıdır, mesajların içeriğini gerçekten farklı formatlarda tanımlar (şu anda AtomPub ve JSON olduğunu düşünüyorum). ODataV4 dinlenme ilkelerini takip eder.

Örneğin, asp.net kullanıcıları çoğunlukla nesneleri JSON'a serileştirmek / serisini kaldırmak için WebApi denetleyicisini kullanır ve javascript'in onunla bir şeyler yapmasını sağlar. Odata'nın noktası, hazır seçeneklerle doğrudan URL'den sorgulama yapabiliyor.


REST sadece HTTP üzerinde değil, herhangi bir protokolde çalışır
user27874

10

OData belgelerinden :

OData Protokolü, RESTful web servisleri aracılığıyla verilerle etkileşim kurmak için uygulama düzeyinde bir protokoldür.

...

OData Protokolü, hem verileri hem de veri modelini tanımlamak için tek tip bir yol sağlaması nedeniyle diğer REST tabanlı web hizmeti yaklaşımlarından farklıdır.


4

OData (Açık Veri Protokolü), RESTful API'leri oluşturmak ve tüketmek için en iyi uygulamayı tanımlayan bir OASIS standardıdır. OData, istek ve yanıt başlıkları, durum kodları, HTTP yöntemleri, URL kuralları, medya türleri, yük biçimleri ve sorgu seçenekleri vb. değişiklikleri izleme, yeniden kullanılabilir prosedürler için işlevleri / eylemleri tanımlama ve eşzamansız / toplu istek gönderme vb.

OData RESTful API'lerinin kullanımı kolaydır. API'lerin veri modelinin makine tarafından okunabilir bir açıklaması olan OData meta verileri, güçlü genel istemci proxy'lerinin ve araçlarının oluşturulmasını sağlar. Bazıları protokol hakkında hiçbir şey bilmeden bile OData ile etkileşim yardımcı olabilir. Aşağıdaki 6 adım, farklı programlama platformlarında OData tüketiminin 6 ilginç senaryosunu göstermektedir. Ancak geliştirici değilseniz ve OData ile oynamak istiyorsanız, XOData sizin için en iyi başlangıçtır.

daha fazla bilgi için http://www.odata.org/


4

OData özel bir türüdür DİNLENME biz edebilirsiniz düzgün verilerini sorgulamak URL'den.


2

DİNLENME açılımı RE sunumsal S Tate T ransfer kaynak tabanlı mimari tarzı olan. Kaynak temelli, veri ve işlevselliklerin kaynak olarak kabul edildiği anlamına gelir.

OData , RESTful web hizmetleri oluşturmak ve kullanmak için en iyi uygulamaları tanımlayan web tabanlı bir protokoldür. OData RESTful web hizmetleri oluşturmak için bir yoludur bu nedenle REST bir uygulamasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.