Java'da Web Hizmetlerini öğrenmem gerekiyor. İçindeki farklı türler nelerdir? [kapalı]


91

Son zamanlarda, java web hizmetleri hakkında bilgi edinmeye karar verdim ve google'da java web hizmetleri için bir eğitici aramaya başladığımda, XML tabanlı, SOAP tabanlı ve ayrıca RESTful web hizmetleri olan birçok web hizmeti türü olduğunu öğrendim.

Ayrıca, xml tabanlı web servisleri için bir JAX-WS spesifikasyonu ve RESTful web servisleri oluşturmak için JAX-RS spesifikasyonu olduğunu buldum.

S1) Kafam karıştı, bu farklı türdeki web hizmetleri arasındaki farkı anlamama yardım eden biri olabilir, böylece hangisini önce öğreneceğime karar verebilirim.

S2) Ayrıca, java'da farklı web hizmetleri türleri oluşturma hakkında derinlemesine bilgi edinmek istiyorum. Her tür web hizmetine bir fikir verebilecek ve aralarında bir karşılaştırma yapabilecek herhangi bir öğretici veya kaynak var mı?

S3) hangi senaryolara ve koşullara göre bir SOAP servisi yerine XML tabanlı bir web servisi oluşturmak istediğime veya RESTful servisiyle gitmem gerektiğine karar vermeliyim.


Yanıtlar:


142
  1. SABUN Web Servisleri standart tabanlıdır ve hemen hemen her yazılım platformu tarafından desteklenir: Büyük ölçüde XML'e güvenirler ve işlemler, güvenlik, eşzamansız mesajlar ve diğer birçok konu için desteğe sahiptirler. Oldukça büyük ve karmaşık bir standarttır, ancak hemen hemen her mesajlaşma durumunu kapsar. Öte yandan, RESTful hizmetleri , herhangi bir formatta, tercih edilen JSON ve XML'de mesaj alışverişi yapmak için HTTP protokolü ve fiilleri (GET, POST, PUT, DELETE) kullanır. Oldukça basit ve zarif bir mimari yaklaşım.
  2. Java Dünyasındaki her konuda olduğu gibi, Web Hizmetlerini oluşturmak / kullanmak için birkaç kitaplık vardır. SOAP Side'da JAX-WS standardına ve Apache Axis'e sahipsiniz ve REST'te diğer kütüphanelerin yanı sıra Restlets veya Spring REST Tesislerini kullanabilirsiniz .

Soru 3 ile birlikte, bu makale RESTful Services'in bu senaryolara uygun olduğunu belirtir:

  • Sınırlı bant genişliğiniz varsa
  • İşlemleriniz vatansız ise: Bir çağrıdan diğerine hiçbir bilgi korunmaz ve her istek bağımsız olarak ele alınır.
  • Müşterilerinizin önbelleğe alınması gerekiyorsa.

SOAP şu durumlarda gitmenin yoludur:

  • Eşzamansız işlemeye ihtiyacınız varsa
  • Resmi sözleşmeye / Arayüzlere ihtiyacınız varsa
  • Hizmet operasyonlarınızda durum bilgisi vardır: Örneğin, bir talep üzerine bilgi / veri depolamak ve bu depolanan verileri bir sonrakinde kullanmak.

11
Çok net olduğu ve senaryoları ifade ettiği için +1 :)
Rajesh Pantula

Net ve net cevap.
Krishna

İyi cevap için +1 ... !!!
Shailesh Saxena

Güzel cevap, bana vatansız / durum bilgisi olan operasyonların ne olduğunu söyleyebilir misiniz?
Keerthivasan

Bu kavramları içeren yanıtı düzenledim.
Carlos Gavidia-Calderon

13

S1) İşte okuyacak veya daha fazla google'a sahip olacak birkaç şey:

SOAP ve RESTful web servisleri arasındaki temel farklar java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

İlk olarak ne öğrenmek istediğiniz size kalmış. CXF çerçevesine bir göz atmanızı tavsiye ederim . Hem dinlenme / sabun hizmetleri oluşturabilirsiniz.

S2) İşte sabun için birkaç iyi eğitim (onları yer imlerine ekledim):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

Öğrenmenin en iyi yolu sadece dersleri okumak değildir. Ama önce temel bir fikir edinmek için öğreticilerden geçersiniz, böylece bir şeyler üretebildiğinizi (veya üretemeyeceğinizi) ve bu sizi motive edeceğini görebilirsiniz.

SO, belirli bir teknolojiyi (veya daha fazlasını) öğrenmenin harika bir yoludur, insanlar çok tuhaf sorular sorar ve her zamankinden daha garip cevaplar vardır. Ancak genel olarak sorunları başka şekilde çözmenin yollarını öğreneceksiniz. Belki o yolu bilmiyordun, belki kendi başına düşünemiyordun.

İlginizi çeken ve ısrarcı olan birkaç etikete abone olun, iyi sorular sorun ve iyi yanıtlar vermeye çalışın ve size garanti ederim ki bunu zaman geçtikçe öğreneceksiniz (eğer ısrarcıysanız).

S3) Bunu kendiniz cevaplamanız gerekecek. İlk önce ne inşa edeceğinize karar vererek, sonuçta küçük bir proje veya başka bir şey düşünmeniz ve oradan almanız gerekecek.

REST / SOAP hizmetlerini oluşturmak için çerçeve olarak CXF kullanmaya karar verirseniz, bu kitaba bakmanızı tavsiye ederim Apache CXF Web Service Development. Fantastik, okumak zor değil ve çok da büyük değil (kazan-kazan).


7

SOAP WS, hem uzak yordam çağrısını (yani, RPC) hem de ileti yönelimli ara yazılım (MOM) entegrasyon stillerini destekler. Restful Web Service yalnızca RPC entegrasyon stilini destekler.

SOAP WS, taşıma protokolü açısından tarafsızdır. HTTP (S), Mesajlaşma, TCP, UDP SMTP, vb. Gibi birden çok protokolü destekler. REST, aktarım protokolüne özgüdür. Yalnızca HTTP veya HTTPS protokollerini destekler.

SOAP WS yalnızca XML veri biçimine izin verir. POST aracılığıyla tünel oluşturan işlemleri tanımlarsınız. Odak noktası, adlandırılmış işlemlere erişmek ve uygulama mantığını bir hizmet olarak sunmaktır. REST, XML, JSON verileri, metin, HTML, vb. Gibi çoklu veri formatlarına izin verir. REST yaklaşımı standart GET, PUT, POST ve DELETE Web işlemlerini kullandığı için herhangi bir tarayıcı kullanılabilir. Odak noktası, adlandırılmış kaynaklara erişmek ve verileri bir hizmet olarak ortaya çıkarmaktır. REST, AJAX desteğine sahiptir. XMLHttpRequest nesnesini kullanabilir. Durum bilgisi olmayan CRUD (Oluşturma, Okuma, Güncelleme ve Silme) işlemleri için idealdir. GET - temsil () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

SOAP tabanlı okumalar önbelleğe alınamaz. REST tabanlı okumalar önbelleğe alınabilir. Daha iyi performans gösterir ve ölçeklenir. SOAP WS, hem SSL güvenliğini hem de WS güvenliğini destekleyerek, güvenliği ihtiyaç duyulan noktaya kadar sürdürme, aracılar aracılığıyla kimlikleri koruma ve yalnızca SSL'yi işaret etmekle kalmayıp, mesajın farklı bölümlerini güvenli hale getirme gibi bazı kurumsal güvenlik özellikleri ekler. farklı güvenlik algoritmaları vb. REST yalnızca noktadan noktaya SSL güvenliğini destekler. SSL, tümü hassas olsun veya olmasın, tüm mesajı şifreler. SOAP, hem kısa ömürlü işlemler için ACID tabanlı işlem yönetimi hem de uzun süreli işlemler için tazminat tabanlı işlem yönetimi için kapsamlı desteğe sahiptir. Ayrıca, dağıtılmış kaynaklar arasında iki aşamalı kesinlemeyi destekler. REST işlemleri destekler,

SOAP, yerleşik başarı veya yeniden deneme mantığına sahiptir ve SOAP aracıları aracılığıyla bile uçtan uca güvenilirlik sağlar. REST'in standart bir mesajlaşma sistemi yoktur ve hizmeti başlatan istemcilerin, yeniden deneyerek iletişim hatalarını ele almasını bekler.

kaynak http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html


> Restful Web Service yalnızca RPC entegrasyon stilini destekler. REST, RPC değil, RPC diyor, "bir şeyler yapan bazı yöntemleri tanımla", REST ise "bazı kaynakları tanımla ve bu yöntemlere sahip olacaklar" diyor. peej.co.uk/articles/rest.html
urmalp

0

Uygulamanız sıklıkla http protokolünü kullanıyorsa, hafif olması nedeniyle REST en iyisidir ve uygulamanızın yalnızca http protokolünü kullandığını bilmek, SOAP'ı seçmek o kadar iyi değildir çünkü ağırdır, Kullandığımız protokollere göre web hizmeti seçimine karar vermek daha iyidir uygulamalarımızda.

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.