টিসিপি / আইপি অ্যাপ্লিকেশন বনাম এইচটিটিপি অ্যাপ্লিকেশনগুলির তুলনা [বন্ধ]


13

আমি জাভাতে লেখা একটি বৃহত্তর ব্যবহারকারী ব্যবহারকারী-মুখোমুখি ওয়েবসাইট বিকাশ করতে আগ্রহী।

ডিজাইনের ক্ষেত্রে, আমি স্বাধীন, মডুলার পরিষেবাগুলি বিকাশের কথা ভাবছি যা আমার মূল ওয়েব অ্যাপ্লিকেশনটিতে ডেটা সরবরাহকারী হিসাবে কাজ করতে পারে।

এই মডুলার পরিষেবাগুলি (ডেটা সরবরাহকারী) লেখার জন্য, আমি স্প্রিংয়ের মতো একটি বিদ্যমান কাঠামোটি উপস্থাপন করতে এবং বিশিষ্ট নকশার প্যাটার্ন অনুসরণ করে এই পরিষেবাদিগুলি বিকাশ করতে পারি এবং জেএসএনের মতো একটি বার্তা ফর্ম্যাট দিয়ে এইচটিটিপি এর মাধ্যমে সংস্থানগুলি উন্মোচন করতে পারি ... বা আমি একটি বিদ্যমান নেটওয়ার্কের জন্য সুবিধা অর্জন করতে পারি নেটটির মতো ফ্রেমওয়ার্ক ( http://netty.io/ ) এবং প্রোটোবুফস ( https://developers.google.com/protocol-buffers/docs/overview ) এর মতো সিরিয়ালাইজেশন ফর্ম্যাট এবং সিরিয়ালযুক্ত প্রোটোবফকে পিছনে পিছনে প্রেরণ করে এমন একটি টিসিপি সার্ভার বিকাশ করে পে লোড।

যখন আপনি একটি অপরটি থেকে বেছে নেওয়া উচিত? প্রোটোবুফসের মতো সিরিয়ালাইজেশন ফর্ম্যাট ব্যবহার করে এবং তারের উপর দিয়ে বাইটের প্রবাহ প্রেরণের কোনও সুবিধা কি হবে? শুধু JSON ব্যবহার করে কি ওভারহেড থাকবে? টিসিপি / আইপি ব্যবহার এবং এইচটিটিপি ব্যবহারের মধ্যে কতটা ওভারহেড রয়েছে? আপনার কখন এই জাতীয় পরিষেবা তৈরির জন্য স্প্রিং ওভার নেটটি ব্যবহার করা উচিত?


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

3
আমি মনে করি না ওপি আমাদের জন্য তাঁর পছন্দ বেছে নিতে বলছে। এই জাতীয় পছন্দগুলি কীভাবে করা হয় এবং কোন কারণগুলি বিবেচনা করা হয় সে সম্পর্কে তিনি কেবল একটি উচ্চ-স্তরের প্রশ্ন জিজ্ঞাসা করছেন। এটির জন্য একটি উচ্চ-স্তরের উত্তর সরবরাহ করার কোনও ভুল আছে বলে মনে করবেন না .... এবং আমি তা করেছিলাম।
ডিএক্সএম

আমি সাধারণত বাইনারি ফর্ম্যাটগুলি ব্যবহার করার বিরোধিতা করি যদি না আপনি সত্যিই না চান। কোনও বাইনারি ফাইল ফর্ম্যাট, কোনও বাইনারি সিরিয়ালাইজেশন ইত্যাদি নেই উদাহরণস্বরূপ, জাভাতে, বাইনারি সিরিয়ালাইজেশন জাভা সংস্করণ এবং আপনার নিজের সফ্টওয়্যারগুলির সংস্করণগুলির মধ্যে অসঙ্গতি সৃষ্টি করে, তবে আমি বিশ্বাস করি যে এক্সএমএল প্রায় ততটা হয় না। আমি মনে করি নিচের টিসিপি </ IP> HTTP> এক্সএমএল অবশ্যই এটি আপনি যা করছেন তার উপর নির্ভর করবে। আমি মনে করি যে জেএসএন এক্সএমএল এর বিকল্প। আমি স্প্রিং বা নেট সম্পর্কে খুব বেশি কিছু জানি না, যদিও আমি পড়তে পারি যে লোকেরা স্প্রিং ব্যবহার করছে।
কায়ডেল

+1 ডিএক্সএম, এই জাতীয় সিদ্ধান্ত নেওয়ার বিষয়ে চিন্তাভাবনা করার সময় আমি চিন্তা-ভাবনার জন্য উচ্চ-স্তরের প্রশ্ন জিজ্ঞাসা করি।
হাইচিউজ 123

উত্তর:


21

বাইনারি প্রোটোকল সহ সরাসরি জেএসওএন বনাম জাস্টস টিসিপি / আইপি ব্যবহার করার বিষয়ে উপকারিতা / ধারণা রয়েছে এবং আমি মনে করি আপনি ইতিমধ্যে সন্দেহ করছেন যে বাইনারি প্রোটোকলটি আরও দ্রুত হবে। আমি আপনাকে ঠিক কতটা দ্রুত বলতে পারি না (এবং এটি অনেকগুলি কারণের উপর নির্ভর করবে) তবে আমি অনুমান করব 1-2 মাত্রার পার্থক্যের অর্ডারগুলি।

প্রথম নজরে যদি কোনও কিছুর চেয়ে 10-100 গুণ ধীরে ধীরে হয় তবে আপনার হাঁটু-ঝাঁকুনির প্রতিক্রিয়া হতে পারে এবং "দ্রুত জিনিস" পেতে পারেন। তবে, এই গতির পার্থক্য কেবলমাত্র প্রোটোকলটিতে। যদি সার্ভারে ডাটাবেস / ফাইল অ্যাক্সেস থাকে তবে তা স্থানান্তর স্তরটি আপনার পছন্দ দ্বারা প্রভাবিত হবে না। কিছু ক্ষেত্রে এটি আপনার স্থানান্তর স্তরের গতিটিকে অনেক কম তাৎপর্যপূর্ণ করে তুলতে পারে।

HTTP REST এবং JSON বিভিন্ন কারণে ভাল:

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

টিসিপি / আইপি-র মাধ্যমে প্রোটবফগুলি:

  • তারা দ্রুত হয়

যদি এটি আমার পছন্দ হয়, তবে আমি HTTP REST এবং JSON এর সাথে যেতে চাই। এরকম আরও অনেকগুলি সংস্থা এবং ওয়েবসাইটগুলি সেই পথে চলে যাওয়ার একটি কারণ রয়েছে। এছাড়াও মনে রাখবেন যে ভবিষ্যতে আপনি সর্বদা 2 টি শেষ পয়েন্টকে সমর্থন করতে পারেন। যদি আপনার নকশাটি সঠিক হয়, আপনার শেষ-পয়েন্ট পছন্দটি আপনার সার্ভার-পাশের ব্যবসায় যুক্তি বা ডেটাবেস থেকে সম্পূর্ণ ডিকপল করা উচিত। সুতরাং আপনি যদি পরে বুঝতে পারেন যে সমস্ত / কিছু অনুরোধগুলির জন্য আপনার আরও গতির প্রয়োজন হয় তবে আপনার ন্যূনতম গোলমাল সহ প্রোটোবফগুলি যুক্ত করতে সক্ষম হওয়া উচিত। তবে ব্যাট থেকে ডানদিকেই, আরইএসটি / জেএসওন আপনাকে দ্রুত মাটি থেকে নামিয়ে আপনাকে আরও এগিয়ে নেবে।

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

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

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


1
+1, বিশেষত "এই গতির পার্থক্যটি কেবলমাত্র প্রোটোকলের মধ্যে। যদি সার্ভারে ডাটাবেস / ফাইল অ্যাক্সেস থাকে তবে এটি স্থানান্তর স্তরটি আপনার পছন্দ দ্বারা প্রভাবিত হবে না"। 99% ঠিক এটি কেমন হবে এবং অকাল অপটিমাইজেশন (ভুল জায়গায়) এটিকে মোটেই সহায়তা করবে না।
শিবান ড্রাগন

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

REST কেবল সর্বজনীন নয়, সমস্ত ক্লায়েন্টদের দ্বারা গ্রাস করা সহজ তবে এগুলি অবশ্যই অন্তর্ভুক্ত রয়েছে। আমার সংস্থার একটি পণ্য রয়েছে যা আমরা প্রায় এক বছর ধরে তৈরি করছি। আমাদের কাছে "মালিকানাধীন" প্রোটোকল ছিল যা বিশ্রামে ঘটেছিল। আমরা এটি অন্যদের জন্য উন্মুক্ত করেছি। ব্যবসায়িক বিদ্যালয়ে তারা আপনাকে যে একটি বিষয় শেখায় তা হ'ল "বিকল্প চিন্তাভাবনা", যথাসম্ভব অপশন রেখে যাওয়ার সিদ্ধান্ত নিন যাতে আপনি পরবর্তী কোনও দিন সিদ্ধান্ত নিতে পারেন। সুতরাং সমস্ত সেট সমানভাবে দেওয়া, আমি বিশ্রামটি বেছে নেব না কারণ আমার কাছে আজ জেএস ক্লায়েন্ট বা এপিআই অ্যাক্সেস রয়েছে, তবে আমার প্রয়োজন হলে ভবিষ্যতে এটি রাখার বিকল্প আমার আছে। তারপরে আবার, যদি ...
DXM

... আপনি বাইনারি প্রোটোকল ব্যবহার শুরু করেছেন, এটির জন্য যান। Prot৯% সুযোগ আপনার প্রোটোকলের পছন্দ আপনার চূড়ান্ত প্রয়োগের উপর কোনও প্রভাব ফেলবে না, তাই আমি এই সিদ্ধান্তটিকে খুব বেশি ঘাম দেব না। এবং আমি উত্তরে যেমনটি বলেছিলাম, শালীন নকশা সহ, আপনার পরবর্তী তারিখে যে কোনও উপায়ে প্রোটোকল অদলবদল করতে সক্ষম হওয়া উচিত। আমি আর একটি জিনিস করতে চাই তা উভয় ক্ষেত্রেই চেষ্টা করা, যদি আমি সিদ্ধান্ত নেওয়ার বেড়াতে থাকি তবে আমি একটি মুদ্রা ফ্লিপ করি এবং বিকল্পটি বেছে নেব Next এবং আমার অভিজ্ঞতা তুলনা / বিপরীতে। কখনও কখনও, আপনি নিজের পক্ষে সিদ্ধান্ত নেওয়ার একমাত্র উপায় এটি
DXM

@ ডিএক্সএম, দুর্দান্ত প্রতিক্রিয়া, ব্র্যাভো!
হাইচিউজ 123

0

এটি আসলে একটি অ প্রশ্ন নয়। ইন্টারনেট প্রোটোকল স্যুট অনুসারে টিসিপি হ'ল পরিবহন স্তরের একটি প্রোটোকল এবং HTTP অ্যাপ্লিকেশন স্তরের একটি প্রোটোকল। আপনি একে অপরের সাথে সম্পূর্ণ ভিন্ন জিনিস তুলনা করছেন। (এখানে আরও দেখুন: http://en.wikedia.org/wiki/Internet_protocol_suite )

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

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

ডেটা উপস্থাপনের ফর্ম্যাট (জসন, এক্সএমএল, এইচটিএমএল, প্রোটবফ, ইত্যাদি) চয়ন করার জন্য এটি আপনার ব্যান্ডউইথ, পাঠযোগ্যতা, ভাষা / সরঞ্জাম সমর্থন ইত্যাদির উপর নির্ভর করে

আপনি http টিসিপি-র সাথে তুলনা করতে পারবেন না।

মনে রাখবেন গতি সব কিছু নয়। আপনি নিজেকে বুদ্ধিমান উপায়ে প্রকাশ করতে না পারলে গতি কোনও কাজে আসে না।


5
তার প্রশ্নের মধ্যে এমন কিছু নেই যা পরামর্শ দেয় যে তিনি নেটওয়ার্কিং স্ট্যাকের স্তরগুলির মধ্যে পার্থক্য জানেন না। তিনি জিজ্ঞাসা করেছিলেন তিনি কি এইচটিটিপি ব্যবহার করবেন (এইচটিটিপিটি টিসিপি / আইপি-র উপরে একটি স্তর হিসাবে ধরে নেওয়া হয়) বা নিজের কাস্টম প্রোটোকল দিয়ে টিসিপি / আইপি ব্যবহার করবেন। তার প্রশ্নে কোন ভুল নেই।
মাইকেল

আমি অবশ্যই অসমত। এটিই আমি তাকে বুঝতে পারি নি
iveqy

1
হ্যাঁ, আমি বুঝতে পেরেছি যে এইচটিটিপি টিসিপি / আইপি-র উপরে রয়েছে, আমার প্রশ্নটি অবশ্যই ট্রেড অফের ক্ষেত্রে কোনও সিদ্ধান্ত নেওয়ার বিষয়ে চিন্তাভাবনা - বিলম্বিতা, বিকাশের গতি ইত্যাদি সম্পর্কে চিন্তাভাবনা করার জন্য প্রশ্ন উত্থাপন করার জন্য ধন্যবাদ!
হাইচিউজ 123

2
@ এসএসপিডি 7 আমি আপনার নিজের প্রোটোকল তৈরি করা এড়াতে চাই, সেখানে ইতিমধ্যে প্রচুর প্রমাণিত প্রোটোকল রয়েছে এবং যতক্ষণ না আপনার প্রোটোকল এমন কিছু না ঘটে যা আপনাকে আপনার প্রতিযোগীদের উপর একটি সুবিধা দেয়, আপনি সম্ভবত একটি প্রমিত প্রোটোকল দিয়ে ভাল off আমি একটি কাস্টম প্রোটোকল প্রয়োগ করেছি, এটি প্রচুর মজাদার ছিল! তবে এনক্রিপশন, গর্ত পঞ্চিং, অ্যালাইভগুলি রাখুন, হ্যান্ডশেকিং (বিভিন্ন নেটওয়ার্কের বিভিন্ন ফ্রেমলেন্থের প্রয়োজন হয়) ইত্যাদি things এটি ভাল কাজ করার জন্য অনেক কাজ। আপনার প্রয়োজন সমস্ত ডকুমেন্টেশন উল্লেখ না করে to কিছু কাস্টম করার আগে ফিচারগুলিতে আপনার কী দরকার তা ভেবে দেখুন।
iveqy

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