সার্লেট এবং ওয়েব পরিষেবার মধ্যে পার্থক্য


89

এই 2 এর মধ্যে পার্থক্য কী? আমি গুগলে কয়েকটি ফলাফল খুঁজে পাইনি চূড়ান্ত কিছুই।

এখানে একটি ফলো আপ প্রশ্ন:

বলুন যে আমি বসন্তের এমভিসি ওয়েব অ্যাপ্লিকেশনটি @ নিয়ন্ত্রণকারী টীকা সহ কয়েকটি ক্লাসের বেনিফিট তৈরি করি এবং এমন কিছু তৈরি করি যা সামনের প্রান্ত -> ব্যাক এন্ড এবং বিপরীতভাবে কিছু তথ্য সফলভাবে স্থানান্তর করে এবং সম্ভবত কিছু ডাটাবেস পিছনের প্রান্তে জড়িত থাকতে পারে।

এটাকে কী বলবে? রেস্ট ওয়েব সার্ভিস বা সার্লেট বা অন্য কিছু?


6
পরামর্শের একটি শব্দ: আপনি যদি কোনও সার্লেট কী তা জানেন না, তবে আপনি সম্ভবত বসন্তের এমভিসি (টীকা সহ) এর সাথে লড়াই করতে পারবেন। একটি সহজ সমাধান (ভ্যানিলা সার্লেট + জেডিবিসি) সম্ভবত আপনাকে বেসিকগুলি আরও দ্রুত শিখতে সহায়তা করবে।
বিজিকলপ

4
যদি কোনও সার্লেটের কেবল একটি অর্থবহ আচরণ থাকে এবং সেই সার্লেটটি একটি স্পষ্টত ইউআরএলটিতে ম্যাপ করা থাকে তবে আমি কোনও কারণ দেখি না যে (1) সারলেটকে (GET) বা পোষ্ট প্যারামিটারগুলি প্রেরণ করা যায়নি (২) সার্ভলেটের প্রতিক্রিয়া অনেকাংশে ফিরে আসতে পারে একটি উপযুক্ত মাইম টাইম সেট (3) সহ এক্সএমএল যে এটি একাডেমিক অর্থে কোনও ওয়েব সার্ভিসের সমান নয়?
বিটজুঙ্কি

@ গ্যান্ডালস্টস্টারমক্রো সার্লেটের সাহায্যে যে আসল ডেটাটি পাস হচ্ছে তা ডেটা নয় বরং এইচটিএমএল ডকুমেন্ট। এইচটিএমএল ডকুমেন্ট অনুরোধের জন্য আরও উপযুক্ত) ১) নথিটি পান 2) নথিটি মানব থেকে কম্পিউটারে প্রদর্শন করুন । তবে, প্রয়োজনটি ছিল একটি মেশিনকে স্বাধীন উপায়ে অ্যাপ-অ্যাপ যোগাযোগ। সুতরাং, ওয়েব সার্ভিস xML- র মাধ্যমে এক্সএমএল ব্যবহার করে ডেটা স্থানান্তর করার বিষয়ে কথা বলে।
ওভাররেঞ্জচেঞ্জ

উত্তর:


91

একটি ওয়েব সার্ভিস এমন একটি পরিষেবা যা তার ক্লায়েন্টদের জন্য আরআরএসটি প্রোগ্রামিং প্যারাডিজম বা যোগাযোগের জন্য এসওএপি প্রোটোকল ব্যবহার করে তার ক্লায়েন্টগুলিকে পরিষেবা পদ্ধতি সরবরাহ করে। ওয়েব পরিষেবা কার্যকর করার বিভিন্ন উপায় রয়েছে are ওয়েব সার্ভিস লেখার সর্বাধিক সহজ উপায় হ'ল কোনও ক্লাস লিখতে এবং এটিকে এর সাথে টীকা @WebServiceএবং @WebMethodটীকাগুলির সাথে মন্তব্য করা javax.jwsএবং তারপরে একে mainস্মৃতি থেকে শুরু করা :

Endpoint.publish("http://localhost:8089/myservice", new MyWebService());

ফলাফলটি হ'ল আপনি নিবন্ধিত ইউআরএলে ডাব্লুএসডিএল দেখতে পারবেন এবং আপনার যদি সোপুআইআই বা অন্য কোনও এসওএপি ক্লায়েন্ট থাকে তবে আপনি নিজের ওয়েব পরিষেবাও পরীক্ষা করে ব্যবহার করতে পারবেন।

অন্যদিকে একটি সার্লেট এটি HTTP অনুরোধ এবং প্রতিক্রিয়া পরিবহনে ব্যবহৃত হয় । এটি জেএসপি এবং এইচটিএমএল সহ একটি ওয়েব অ্যাপ্লিকেশন লিখতে ব্যবহার করতে বা এক্সএমএল এবং জেএসওএন প্রতিক্রিয়াগুলি (একটি রিস্টফুল সার্ভিসে হিসাবে) পরিবেশন করতে এবং অবশ্যই এসওএপি বার্তা গ্রহণ ও ফিরে পেতে ব্যবহার করা যেতে পারে। আপনি ওয়েব পরিষেবাদির নীচে এক স্তর হিসাবে এটি ভাবতে পারেন । সার্লেলেটগুলির নিজস্ব মান রয়েছে যা বর্তমানে জাভা সার্লেলেট স্পেসিফিকেশন সংস্করণ 4.0 4.0

আরও বিস্তৃত এবং ব্যবহারিক পদ্ধতি হ'ল একটি ফ্রেমওয়ার্ক সহ একটি ওয়েব পরিষেবা লিখুন এবং এটি কোনও অ্যাপ্লিকেশন সার্ভারে বা টমক্যাট বা জবাসের মতো সার্লেট পাত্রে প্রকাশ করা। এই ক্ষেত্রে আপনি এইচটিটিপি অনুরোধগুলির পরিবহন পরিচালনা করার জন্য একটি সার্লেট ব্যবহার করবেন যা আপনার এসওএপি বা আরএসটি বার্তাগুলি প্রেরণ করে।

সার্লেট প্রযুক্তি সহ একটি ওয়েব পরিষেবা লিখতে আপনি উদাহরণস্বরূপ জ্যাক্স-ডাব্লুএস ব্যবহার করতে পারেন (যেমন এসওএপি জন্য) for RESTful পরিষেবাদি লিখতে, আপনি হয় JAX-RS ব্যবহার করতে পারেন (রেফারেন্স বাস্তবায়নটি জার্সি হিসাবে ), অথবা বিকল্পভাবে আপনি স্প্রিং ওয়েবএমভিসি ব্যবহার করতে পারেন , তবে যতদূর আমি জানি যে এই কাঠামোর মূল উদ্দেশ্য নয় এবং জার্সি যথেষ্ট পরিমাণে রয়েছে ব্যবহার করা সহজ।

দ্বিতীয় প্রশ্ন সম্পর্কিত: @Controllerটিকাটি একটি স্প্রিং নির্দিষ্ট স্টেরিওটাইপ টিকা that যা আপনার শিমের কী করা উচিত সে সম্পর্কে বসন্তকে কিছু বলে। নিয়ামকের কোন পদ্ধতিটি ঠিক কী ফিরিয়ে দেবে তা আপনার পদ্ধতির প্রকৃত বাস্তবায়নের উপর নির্ভর করে, আপনি সাদামাটা পাঠ্য, এইচটিএমএল, জেএসএন, এক্সএমএল, বাইনারি ডেটা বা আপনি যা চান তা ফেরত দিতে স্প্রিংকে কনফিগার করতে পারেন।

পাশের একটি নোট, একটি শ্রেণীর সাথে টীকাযুক্ত করা @Controllerএখনও কোনও সার্লেট নয়, এটি কেবল বিন। আপনি কীভাবে সার্লেটলেট ব্যবহার করবেন তা নির্ভর করে আপনি যে ফ্রেমওয়ার্কটি ব্যবহার করেন তার উপর। উদাহরণস্বরূপ, আপনি যখন স্প্রিং ব্যবহার করেন, সার্লেট কাজটি স্প্রিংস দ্বারা সম্পন্ন হয় DispatcherServletযা ঘুরে ফিরে সঠিক মটরশুটিগুলিকে অনুরোধ জানায়। আপনি যদি টোম্যাট ব্যবহার করেন, তবে আপনি কেবলমাত্র সাবক্ল্যাসিং করে নিজের সার্ভলেটগুলি সরাসরি লিখতে পারেনjavax.servlet.http.HttpServlet ক্লাসটি এবং প্রয়োজনীয় পদ্ধতিগুলিকে ওভাররাইট করেdoGet যা আপনার ব্রাউজার থেকে এইচটিটিপি জিইটি অনুরোধের প্রতিক্রিয়া জানায়।


4
"হয় REST বা SOAP এর প্রোটোকল হিসাবে" ... তবে REST কোনও প্রোটোকল নয় !!
বাগ নেই

4
দৃ not়ভাবে এটি না বলার জন্য, এটি একটি প্রোগ্রামিং দৃষ্টান্ত। আমি প্রতিবিম্বিত করতে আমার সূত্র সংশোধন করেছি।
ল্যানক্সিক্স

একটি ওয়েব সার্ভিসের @ ললোনক্স লক্ষ্য হ'ল একটি এন্টারপ্রাইজ অ্যাপ্লিকেশনকে সহজেই অন্যের সাথে সংহত করতে সহায়তা করা, সেই অ্যাপ্লিকেশনগুলি নতুনভাবে ধরে নেওয়া, একে অপরের সাথে কথা বলা দরকার। এন্টারপ্রাইজ অ্যাপ্লিকেশন একীকরণ
30:34

জাভা সার্লেট নির্দিষ্টকরণের উপরে (এখন ) .০
মনোহর রেড্ডি পোরেডি

43

আপনি যা বর্ণনা করছেন তা হ'ল একটি ওয়েব অ্যাপ্লিকেশন , যেখানে কোনও মানুষ কোনও সফ্টওয়্যার সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি ব্রাউজার ব্যবহার করে।

কোনও ওয়েব সার্ভিস হ'ল সফ্টওয়্যার সিস্টেমগুলির জন্য এইচটিটিপি এবং এক্সএমএল বা জেএসএন ব্যবহার করে একে অপরের সাথে যোগাযোগ করার উপায়, কোনও মানুষকে জড়িত না করে।

একজন সার্ভলেট HTTP অনুরোধ করতে একটি সফটওয়্যার যা সাড়া লেখার একটি জাভা-নির্দিষ্ট উপায়। ওয়েব অ্যাপ্লিকেশন রচনা সহজ করে তুলতে স্প্রিং এমভিসি বাস্তবায়ন বিশদটি প্রচুর পরিমাণে সরিয়ে দেয়, তবে কভারগুলির নীচে সার্লেটলেটগুলি ব্যবহার করে।


প্রোগ্রামিংয়ের ওয়েব অ্যাপ্লিকেশন স্টাইলটি একে অপরের সাথে যোগাযোগের জন্য সফ্টওয়্যার সিস্টেমগুলির জন্যও ব্যবহার করা যেতে পারে, তবে আমি ধরে নিই এটি প্রোগ্রামিংয়ের কাঠামোগত উপায় নয় এবং এটি আইটি শিল্পে ব্যবহৃত মান নয়।
মোহাম্মদ ইকজাস

10

আমার গ্রহণযোগ্যতাটি হ'ল ওয়েব পরিষেবা উচ্চ স্তরের বিমূর্ততা যেমন কিছু ব্যবসায়ের নির্দিষ্ট কার্যকারিতা হিসাবে সংজ্ঞায়িত করে। সার্ভলেট কেবলমাত্র একটি সফ্টওয়্যার প্রয়োগকারী উপাদান হিসাবে ডেটা পরিবহনের জন্য দায়ী।

ওয়েব পরিষেবা বাস্তবায়ন ডেটা পাওয়ার জন্য সার্ভলেটের উপর নির্ভর করে। তবে এটি প্রোটোকল ডেটা ব্যবহারের কাস্টম স্তরও ব্যবহার করতে পারে।

@ কনট্রোলার সম্ভবত সার্ভিলের চেয়ে ওয়েব সার্ভিসের সাথে সম্পর্কিত যা আবার পরিবহণ বাস্তবায়নের একটি উপায়।


4
@Controllerস্প্রিং ওয়েব এমভিসি ফ্রেমওয়ার্কের অংশ (এটি সি), সুতরাং এটি অবশ্যই কোনও ওয়েব পরিষেবা জিনিস নয়, তবে এটি সার্লেটগুলির সাথেও নিবিড়ভাবে সম্পর্কিত নয়।
বিজিকলপ

আমি সম্মত, @ নিয়ন্ত্রণকারী কোনওভাবেই নিজের দ্বারা ওয়েব পরিষেবা নয়। তবে ব্যক্তিগতভাবে আমি প্রায়শই আরআরএসটি পরিষেবাদির শেষ পয়েন্ট হিসাবে @ নিয়ন্ত্রণকারীকে ব্যবহার করি। আমার সন্দেহ হয় যে এটি স্প্রিং এমভিসির কম জনপ্রিয় ব্যবহার।
অ্যালেক্স গিটেলম্যান

3

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


2

একটি সার্লেট একটি HTTP ক্যোয়ারী হ্যান্ডলার। আপনার আগত ক্যোয়ারীগুলি দিয়ে আপনি যা চান তা করতে পারেন। জেভিএম-তে চালিত একটি সার্লেট।

একটি ওয়েব পরিষেবা কম বা কম অনমনীয় প্রোটোকলের সাথে আবদ্ধ: একটি ইন্টারফেস (এপিআই) উপলব্ধ পদ্ধতি এবং তাদের যুক্তি এবং পরিষেবার জন্য রিটার্ন মানগুলির সাথে সংজ্ঞায়িত।

প্রোটোকল প্রক্রিয়া ব্যবহার করে এই ইন্টারফেসটি উন্মোচিত হয়েছে। এই প্রোটোকলগুলি হোস্টটি যে পরিষেবাটি চালাবে তা সম্পর্কে অজ্ঞেয়বাদী: আপনি পিএইচপি, জাভা, সি # বা আপনার নিজস্ব ভাষা ব্যবহার করে একই ওয়েব পরিষেবা সংজ্ঞায়িত করতে পারেন। প্রোটোকলের জন্য অনুসন্ধানগুলি বুঝতে এবং ক্লায়েন্টের দ্বারা পঠনযোগ্য উত্তরগুলি প্রস্তুত করতে সক্ষম হতে কেবল আপনার একটি কোডের টুকরো থাকা দরকার।

উদাহরণস্বরূপ SOAP একটি ওয়েব পরিষেবা প্রোটোকল: উইকিপিডিয়া সংজ্ঞা:

মূলত সিম্পল অবজেক্ট অ্যাক্সেস প্রোটোকল হিসাবে সংজ্ঞায়িত এসওএপি কম্পিউটার কম্পিউটারে ওয়েব সার্ভিসেস প্রয়োগের ক্ষেত্রে কাঠামোগত তথ্য আদান-প্রদানের জন্য একটি প্রোটোকল স্পেসিফিকেশন।


2

ওয়েব পরিষেবাদি সার্লেটের চেয়ে উচ্চ স্তরে কাজ করে। সার্লেলেটগুলি এমন এপিআই যা সহজ এবং সার্ভারের পার্শ্ব উপাদানগুলি লেখার ক্ষমতা সরবরাহ করে।

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

<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>jersey.rest.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

এটি সার্ভলেট ছাড়া আর কিছুই নয়


2

ওয়েব পরিষেবাদি সার্লেটলেট কনটেনার ক্লাস ব্যবহার করে যা আবার সার্ভলেট শ্রেণি, যা অনুরোধটি পরিষ্কার এবং কাঠামোগত উপায়ে পরিচালনা করে। আরইএসটি হ'ল রিপ্রেসেন্টেশনাল স্টেটলেস প্রোটোকল। এখানে অনুরোধটি কোনও ডেটা সঞ্চয় করবে না।

আরআরএসটি ওয়েব পরিষেবা এইচটিটিপি পদ্ধতিগুলিকে সমর্থন করে

  1. GET - সাধারণত ডেটা আনার জন্য।
  2. পোস্ট - নতুন অবজেক্ট Toোকানোর জন্য।
  3. পুট - বিদ্যমান অবজেক্টটি আপডেট করতে।
  4. মুছে ফেলুন-অবজেক্ট মুছতে।

আমরা ওয়েব সার্ভিস শ্রেণিতে যে কোনও সংখ্যক ইউআরএল ম্যাপ করতে পারি যার মধ্যে যে কোনও ধরণের HTTP পদ্ধতি থাকতে পারে।

অন্যদিকে, প্রতিটি সার্লেটের জন্য কেবলমাত্র 1 টি ইউআরএল ম্যাপিং করা যেতে পারে। যদিও অনুরোধের প্যারামিটার শর্তগুলির সাহায্যে শেষের প্রয়োজনীয়তা অর্জন করা যায় তবে আজকাল সার্ভলেট ব্যবহার করা পরিষ্কার উপায় দেয় না।

ওয়েবসার্চিতে আমরা ক্লাস স্তরের পাশাপাশি পদ্ধতি স্তরের ইউআরএল পাথ সংজ্ঞায়িত করতে পারি , যা আমাদের আরও কাঠামোগত উপায়ে কোড করার অনুমতি দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.