JSON'a sahipken Odata'nın ihtiyacı nedir?


23

Odata'nın amacını ve ne zaman anlamlı olacağını anlamaya çalışıyorum. Şu anda nasıl çalıştığım ASP.NET ve MVC / WebApi denetleyicisini kullanarak nesneleri JSON'a seri hale getirmek / seri hale getirmek ve javascript ile bir şeyler yapmak için kullanıyorum.

OData’nın yararına, doğrudan URL’den doğrudan sorgulama yapabildiğimi söyleyebiliyorum ... Ancak istemci ve sunucu kodunu yazdığım için buna gerek yok.

Herhangi biri hiç bir javascript'te ODaya sorgusunun sonuçlarını ayrıştırır mıydı?

Belki de OData, TÜM müşterilere JSON'un sağlamadığı bir sorgudan ayrıntılı bilgi almaları için genel bir son nokta sağlama konusunda daha fazladır? Eğer veri sağlayıcısıysam, sanırım odata bunun için mi?

REST / JSON / ODATA'nın amacını ve kullanımını anlamama yardımcı olun.


2
İşleri "kolaylaştırmak" için, Bağlantılı Veri , Bağlantılı Veri Platformu , SPARQL ve Veri Kataloğu Sözcükleriyle de ilgilenebilirsiniz . Hepsi farklı amaçlara hizmet eden ve JSON ile birleştirilebilecek farklı şeylerdir , örneğin SPARQL 1.1 Query Results JSON Formatı ve tabii ki REST .
13'de Trylks

Yanıtlar:


42

JSON, sadece JavaScript'e dayalı bir veri değişim formatıdır.

REST bir mimarlık tarzıdır, OData ise AtomPub ve JSON olmak üzere iki formatı destekleyen veri üretmek ve tüketmek için tasarlanmış REST'in özel bir uygulamasıdır.

Bu yüzden, düz REST'li JSON ve OData arasındaki fark OData'daki veri manipülasyonu için seçeneklerdir; örneğin, OData protokolünü kullanarak veri sorgularsak, URI’de aşağıdaki seçenekleri belirleyebiliriz,

  • $ orderby
  • $ üst
  • $ atlama
  • $ filtre
  • $ biçim
  • $ seçmek

İzdüşüm yapabilir, kaynakları bağlayabiliriz vb. Ve tüm bu seçenekler kutudan temin edilebilir. Şimdi, tüm bu özellikleri kendi REST hizmetimizde sunmak zorunda olsaydık, o zaman yapmamız gerektiğini düşünün,

  • Hepsini uygulayın
  • Farklı işlemler için kendi konvansiyonumuzu / anahtar kelimelerimizi oluşturun

Çok fazla iş değil, aynı zamanda tutarsızlıklara yol açar ve veri tüketicilerimiz için bir öğrenme eğrisi yaratır.


5

JSON veya JavaScript Object Notation sadece veri için bir format veya standarttır. Giriş adı gibi bir şeyi VEYA REST Servisi tarafından tüketilmesi gereken bir şeyi iletmek için üzerinde anlaşmaya varılmış bir format.

Bu bölüme bakınız: http://en.wikipedia.org/wiki/JSON

Her ne kadar başlangıçta JavaScript kodlama dilden türetilmiş olsa da, JSON dilden bağımsız bir veri formatıdır ve JSON verilerini ayrıştırma ve üretme kodu çok çeşitli programlama dillerinde kullanılabilir.

Herhangi bir özel programlama dilinin parçası değildir, bu yüzden eğer JSON kullandıklarını bilirlerse, farklı sistemler veriyi oldukça kolay bir şekilde geçirebilir.

REST gelince, sadece web hizmetleri için kullanılan bir mimarlık tarzı.

Bu bölüme bakınız: http://en.wikipedia.org/wiki/Representational_state_transfer

Bunu düşünmenin bir yolu, birçok farklı bilgisayarın konuşabileceği bir web servisi yazmak ve .. bilgi alışverişinde bulunmak istiyorsanız. Web servisinizi URL yoluyla veri kabul etmek için yazabilirsiniz.

 http://www.myservice.com/specialRESTService?name=punkouter

Geri dönüş, verilerinizin alındığını gösteren bir JSON nesnesi olabilir.

{
    "name": "punkouter",
    "status": "service downloaded your data",
}

OData'yı hiç duymamıştım, bu yüzden googledim:

OData, AtomPub protokolüne ve JSON'a dayanmaktadır; buradaki Atom yapısı, her bir OData isteğinden döndürülen verileri içeren zarftır. Bir OData isteği, tüm istekler için REST modelini kullanır. Her REST komutu, komutun özelliklerinin url'de olduğu POST, GET, PUT, PATCH veya DELETE http isteğidir (CRUD ile eşlenir).

GET: Bir varlık koleksiyonu (bir besleme belgesi olarak) veya tek bir varlık (bir giriş belgesi olarak) edinin.

POST: Bir giriş belgesinden yeni bir varlık oluşturun.

PUT: Mevcut bir varlığı giriş belgesiyle güncelleyin.

PATCH: Mevcut bir varlığı kısmi bir giriş belgesiyle güncelleyin.

DELETE: Bir öğeyi kaldırın.

OData, bir vanilya REST tarzı mimariyi arttırmak için yazılmış bir şey gibi gözüküyor. Fakat C # ile çizdiğiniz şeyleri veya kullanmakta olduğunuz dili yazmak yerine, sizi ilerletmek için bazı şeyler ekleyebilecek gibi görünüyor.

Eğer çalışıyorsanız, sizi OData'yı kullanmaya zorluyorsanız, hala JSON..but'u kullanıyor olmalısınız, ancak Microsoft ve ark.

Biri hiç javascript'te OData (sic) sorgusunun sonuçlarını ayrıştırır mıydı?

Evet, (sanki kulağa benziyor) JSON kullanıyor. JS kullanmak tamamen doğal olurdu.

Belki de OData, TÜM müşterilere JSON'un sağlamadığı bir sorgudan ayrıntılı bilgi almaları için genel bir son nokta sağlama konusunda daha fazladır? Öyleyse eğer bir veri sağlayıcıysam, sanırım Odata bunun için mi?

Odata bir REST hizmeti veriyordu .. ama sade bir "genel" REST servis uç noktası üzerine bazı standart servisler ekleniyordu .. müşteriler OData kullanıyorsanız ya da kendi C # hizmetinizi yuvarlarken umurunda değil .. Yanıtlar kararlaştırılmış bir formattaydı (JSON gibi). Ancak, çalışmanız için belki OData'yı kullanmak istiyorlar çünkü çok fazla 'kutudan çıkma' özelliği sunuyor.


İş umrumda değil .. Ben sadece Odata'nın amacının ne olduğunu bilmek istedim ... JSON sadece verileri temsil etmenin bir yoludur .. ve ODATA da öyle .. ama .. sanırım sahip olduğum soru senaryo nedir REST kullanmak ve JSON döndürmek yeterli değildir .. ve ODATA kullanmak bir avantaj olur mu?
punkouter

hayır hayır, OData, verileri temsil etmek için JSON kullanan ... RESTful bir hizmet mimarisidir. Sen OData kitaplıkları / standartlarını kullanarak hiçbir şey elde ediyorum .. teknik olarak kendiniz yazılamadı .. ama OData kullanarak zamandan tasarruf olabilir şey varsa şeyleri kendiniz yazmaya aksine onunla sen bina şeyler ..
Erik

Jackson? Ama bana öyle geliyor ki OData XML döndürüyor ?? Yoksa ikisi de mi? kafam karıştı.
punkouter,


Bağlantınızdaki "OData, kaynakları temsil etmek için iki formatı (Koleksiyonlar, Girişler, Bağlantılar, vb.) Sunar: XML tabanlı Atom formatı ve JSON formatı."
Erik

2

"Neden" sorusu için, RESTful Web API'leri kitabında gerçekten iyi bir tanım vardır - esasen OData, bir koleksiyonun bağlantılar yoluyla kaynakların listesini sağlayan bir kaynak olduğu bir koleksiyon deseni uygular.


2

OData, RESTful servisinin arayüz standardıyla özel bir uygulamasıdır. Ürününüzün API'sini ifşa ederken ve bunun OData standardına uygun olduğunu söylerken ortaya çıkan avantaj, OData'yı zaten tanıyan kullanıcılar için, API belgelerini okumak için çok fazla zaman harcamaksızın kolayca kullanabilirsiniz.

Dezavantaj: OData altta yatan veritabanını göstermede harika olsa da, şartname işlemler için destek içermez ve hem DB arayüzü hem de işlem arayüzü olarak hizmet veren bir RESTful hizmeti alabileceğimiz uygulamalarda kullanılamaz.

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.