জ্যাকস-আরএস / জার্সি কেন ব্যবহার করবেন?


85

দুঃখিত, এই প্রশ্নগুলি মূর্খ বলে মনে হচ্ছে, তবে জার্সি ব্যবহার করে আমার কিছু রেস্টস্টুল সার্ভিস বিকাশের পরে, আমি নিজেকে প্রশ্নটি জিজ্ঞাসা করেছি - যদি REST কেবল একটি আর্কিটেকচার, এবং এসওএপি-র মতো প্রোটোকল না হয় তবে আমাদের জ্যাকস-আরএসের মতো স্পেসিফিকেশন কেন দরকার?

আমি "এইচটিটিপি-র মাধ্যমে সার্লেটস এবং আরএসটিফুল সার্ভিসের মধ্যে কী পার্থক্য" এবং এই সম্প্রদায়ের উত্তরগুলি সংক্ষিপ্ত করার মত প্রশ্নের জন্য আসলে গুগল করেছি:

  1. RESTful পরিষেবাদি বিকাশ (জার্সিতে) একটি আর্কিটেকচার, যা সহজাতভাবে সার্লেটগুলি ব্যবহার করে।
  2. জ্যাকস-আরএসের আনুষাঙ্গিক সরঞ্জামগুলি জার্সির মতো এক্সএমএল / জেএসএন ডেটার সহজ মার্শেলিং-আনমারশেলিং সরবরাহ করে, বিকাশকারীদের সহায়তা করে।
  3. আরআরইএসটি আমাদের এমন ফ্যাশনে GET / POST / PUT / DELETE ব্যবহার করতে সহায়তা করে যা সাধারণ সার্লেটের তুলনায় অনেক দক্ষ।

এই উত্তরগুলির অনুসারে, আমি অনুমান করি যে আমি যদি এমন কোনও সার্লেট লিখি যা জ্যাকএক্সবি ব্যবহার করে (স্বয়ংক্রিয় সিরিয়ালাইজেশন পরিচালনার জন্য), এবং আমি দক্ষতার সাথে আমার সার্লেট কোডে GET / POST / PUT / DELETE ব্যবহার করি, আমি জার্সির মতো সরঞ্জাম ব্যবহার করি না, এবং অতএব জ্যাক্স-আরএস।

আমি জানি আমি এই বক্তব্যটি পাস করার ক্ষেত্রে ভীষণ ভুল করছি, দয়া করে আমাকে সংশোধন করুন।

পিএস: এই সন্দেহটি আসলে তখন এসেছিল যখন আমাকে পিএইচপি-তে কিছু রেস্টস্টুল সার্ভিস বিকাশ করতে হয়েছিল। কয়েকটি রেস্ট্রুলফুল পিএইচপি কোডগুলির মধ্য দিয়ে যাওয়ার পরে, আমি বুঝতে পারলাম যে তারা এক্সএমএল / জেএসওএন পরিচালনার জন্য কিছু সহায়ক পদ্ধতি সহ কেবল একই পুরাতন পিএইচপি স্ক্রিপ্টগুলি।


আপনার সকল প্রত্যুত্তরের জন্য ধন্যবাদ। তবে কেউ কি আমার প্রথম বক্তব্যের উত্তর দিতে পারবেন? কেন আমাদের একটি "আর্কিটেকচার" এর জন্য একটি স্পেসিফিকেশন দরকার ... সম্ভবত কেউ আমাকে অন্য কোনও স্থাপত্যের দিকে নির্দেশ করতে পারে যা একটি ফর্মাল স্পেস সরবরাহ করে?
উইনআরউইন

আপনি কি সরলতার (কোডের কয়েকটি লাইন) এবং বহনযোগ্যতা (গ্লাস ফিশ, ওয়েবলজিক, ওয়েবস্পিয়ার, জবস, ইত্যাদি) এর চেয়ে আরও বেশি কারণ অনুসন্ধান করছেন? সার্ভলেটস / জ্যাকএক্সপি / জেডিবিসির মতো নিম্ন স্তরের স্পেসিফিকেশনগুলি ব্যবহার করে আপনি একটি রেস্ট্রফুল সার্ভিস বিকাশ করতে পারেন তবে এটিতে সাধারণত জ্যাকস-আরএস / জ্যাকএক্সবি / জেপিএ এর মতো উচ্চ স্তরের স্পেসিফিকেশনগুলির চেয়ে বেশি কোড জড়িত।
বিডৌহান

উত্তর:


72

জ্যাকস-আরএস / জার্সি কেন ব্যবহার করবেন?

সংক্ষিপ্ত উত্তর

কারণ এটি RESTful পরিষেবাদির বিকাশকে আরও সহজ করে তোলে।

দীর্ঘ উত্তর

জ্যাকস-আরএস এমন একটি স্ট্যান্ডার্ড যা একটি আরএএসএসএফুল সার্ভিস তৈরি করা সহজ করে যে কোনও জাভা অ্যাপ্লিকেশন সার্ভারে স্থাপন করা যেতে পারে: গ্লাসফিশ, ওয়েবলজিক, ওয়েবস্পিয়ার, জেবস, ইত্যাদি is

JAX-RS জাভা EE এর অংশ, এবং যখন JAX-RS অন্যান্য জাভা EE প্রযুক্তিগুলির সাথে ব্যবহৃত হয় তখন আপনার RESTful পরিষেবাটি তৈরি করা আরও সহজ হয়ে যায়:

  • ইজেবি - একটি অধিবেশন শিমটি পরিষেবা বাস্তবায়ন হিসাবে ব্যবহৃত হয় এবং লেনদেনের শব্দার্থবিদ্যাও পরিচালনা করে।
  • জ্যাকস-আরএস - একটি বিশিষ্ট পরিষেবা হিসাবে সেশন বিনকে প্রকাশ করতে ব্যবহৃত হয়
  • জেপিএ - ডাটাবেজে POJO গুলি অব্যাহত রাখতে ব্যবহৃত হয়। সেশন বিনের মধ্যে কীভাবে সত্তা ম্যানেজারটি ইনজেক্ট করা হয় তা নোট করুন।
  • জ্যাক্সবি - পিওজিওকে এক্সএমএলে / থেকে রূপান্তর করতে ব্যবহৃত হয় (গ্লাস ফিশে এটি জেএসওএন থেকে / পিওজেও রূপান্তর করতেও ব্যবহার করা যেতে পারে)। জ্যাকস-আরএস ডিফল্টভাবে জ্যাকএক্সবি বাস্তবায়নের সাথে ইন্টারঅ্যাকশন পরিচালনা করে।

নমুনা জ্যাক্স-আরএস পরিষেবা

package org.example;

import java.util.List;

import javax.ejb.*;
import javax.persistence.*;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

@Stateless
@LocalBean
@Path("/customers")
public class CustomerService {

    @PersistenceContext(unitName="CustomerService",
                        type=PersistenceContextType.TRANSACTION)
    EntityManager entityManager;

    @POST
    @Consumes(MediaType.APPLICATION_XML)
    public void create(Customer customer) {
        entityManager.persist(customer);
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("{id}")
    public Customer read(@PathParam("id") long id) {
        return entityManager.find(Customer.class, id);
    }

    @PUT
    @Consumes(MediaType.APPLICATION_XML)
    public void update(Customer customer) {
        entityManager.merge(customer);
    }

    @DELETE
    @Path("{id}")
    public void delete(@PathParam("id") long id) {
        Customer customer = read(id);
        if(null != customer) {
            entityManager.remove(customer);
        }
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("findCustomersByCity/{city}")
    public List<Customer> findCustomersByCity(@PathParam("city") String city) {
        Query query = entityManager.createNamedQuery("findCustomersByCity");
        query.setParameter("city", city);
        return query.getResultList();
    }

}

আরও তথ্যের জন্য:


"সেশন বিন" শব্দটি এখানে বিভ্রান্ত করছে। আপনার কোডটি দেখায়, বিশ্রামের শেষ প্রান্তটি রাষ্ট্রবিহীন বলে মনে করা হচ্ছে। কোন সেশন রাখা হয় না।
phi

সুতরাং, জ্যাকস-আরএস আপনার অ্যাসওয়ারের উপর ভিত্তি করে আরও এক্সএমএল বান্ধব যে জেএসএন রূপান্তরটি কেবল গ্লাস ফিশ সার্ভারের সাথেই উপলব্ধ? ধন্যবাদ
পিক্সেল

স্প্রিংবুটের সাথে পার্থক্য নিয়ে কেউ মন্তব্য করতে পারে? একে অপরকে কেন ব্যবহার করবেন? ধন্যবাদ
পিক্সেল

58

REST হ'ল একটি আর্কিটেকচার, যা সহজাতভাবে সার্লেটগুলি ব্যবহার করে lets

না এটা না. আরআরইএসটি হ'ল একটি আর্কিটেকচার শৈলী যা সার্লেলেটগুলি ব্যবহার করে প্রয়োগ করা যেতে পারে তবে এগুলি সহজাতভাবে ব্যবহার করে না, জাভাটির সাথে সহজাতভাবে কিছু করার নেই।

জ্যাকস-আরএস হল একটি জেএসআর স্পেসিফিকেশন যা রেস্টস্টুল ওয়েব সার্ভিসের জন্য একটি জাভা এপিআই সংজ্ঞায়িত করে।

জার্সি জ্যাক্স-আরএসের একটি নির্দিষ্ট প্রয়োগ।

জার্সি ব্যবহার করতে হবে বা জ্যাকস-আরএস স্পেসিফিকেশনটির সাথে অনুগত হওয়ার চেষ্টা করা উচিত, এটি আপনার পক্ষে সাজানো। এটি যদি আপনার কাজটিকে আরও সহজ করে তোলে তবে দুর্দান্ত! না হলে কেউ আপনাকে জোর করে না।


12
+1 অতিরিক্ত দ্রষ্টব্য: জ্যাকস-আরএস ব্যবহার করা সার্লেলেটগুলি ব্যবহার করে আপনার নিজের রিসালফুল বাস্তবায়ন ঘূর্ণন করার চেয়ে প্রায় সহজতর গ্যারান্টিযুক্ত। এটি এর পুরো বিষয়টি।
রায়ান স্টুয়ার্ট

@ রায়ান, ডন: এই প্রশ্নের পুরো উদ্দেশ্য - এটি কি কেবলমাত্র উল্লিখিত কার্যক্রমগুলি সহজ করার জন্য আমাদের জার্সির দরকার? এবং আমি জ্যাক্স-আরএস কী জানি, আমি কেবল জানতে চাই কেন জাভা লোকেরা এর জন্য একটি পৃথক এপিআই দিচ্ছে ... পিএইচপি কোনও প্রস্তাব দেয় নি এবং এখনও তারা ভাল করছে বলে মনে হচ্ছে।
উইনআরউইন

7
@ উইনঅরউইন: আমরা সমাবেশেও সবকিছু করতে পারতাম, তাই জাভা কেন ব্যবহার করবেন? আমি যা বলতে পারি তা হ'ল উভয় উপায়েই একটি রিস্টালফুল এপিআই লিখুন এবং সিদ্ধান্ত নিন আপনি কোনটি বার বার করতে চান।
রায়ান স্টুয়ার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.