CodeGym/Java Blog/এলোমেলো/পর্ব 2। সফটওয়্যার আর্কিটেকচার সম্পর্কে একটু কথা বলি
John Squirrels
লেভেল 41
San Francisco

পর্ব 2। সফটওয়্যার আর্কিটেকচার সম্পর্কে একটু কথা বলি

এলোমেলো দলে প্রকাশিত
সদস্যগণ
এই উপাদানটি "এন্টারপ্রাইজ ডেভেলপমেন্টের ভূমিকা" সিরিজের অংশ । প্রথম অংশ, নেটওয়ার্কিং সম্পর্কে, এখানে . পার্ট 2. সফটওয়্যার আর্কিটেকচার সম্পর্কে একটু কথা বলা যাক - 1সফ্টওয়্যার আর্কিটেকচার একটি অ্যাপ্লিকেশনের মধ্যে তৈরি করা কাঠামোকে বোঝায়, যেমন সমগ্র প্রোগ্রামের মডিউল এবং উপাদানগুলি এবং তারা কীভাবে ইন্টারঅ্যাক্ট করে। প্রোগ্রামাররা খুব দীর্ঘ সময়ের জন্য ভাল স্থাপত্যের উপর কাজ করছে, তাই এটি আশ্চর্যজনক নয় যে আমরা প্রচুর স্থাপত্য নিদর্শন শুনেছি। আপনাকে সেগুলি বুঝতে হবে: একটি ওয়েব অ্যাপ্লিকেশন লেখার সময়, একটি ভাল আর্কিটেকচার নিয়ে আসা গুরুত্বপূর্ণ, কারণ একটি ওয়েব অ্যাপ্লিকেশনে একটি নিয়মিত অ্যাপ্লিকেশনের চেয়ে বেশি উপাদান এবং মডিউল থাকে। একটি স্থাপত্য নিদর্শনকিছু সফটওয়্যার ডিজাইন সমস্যা সমাধানের একটি স্মার্ট উপায়। আপনি সম্ভবত ফ্যাক্টরি পদ্ধতি, বিমূর্ত কারখানা, নির্মাতা, প্রোটোটাইপ, সিঙ্গলটন এবং সম্ভবত অন্যদের মতো ডিজাইনের প্যাটার্ন জুড়ে এসেছেন। আমরা কোড লেখার সময়, ক্লাস তৈরি করার সময় এবং ক্লাসগুলি কীভাবে ইন্টারঅ্যাক্ট করবে তা পরিকল্পনা করতে ব্যবহার করি। সার্ভার, ডেটা এবং অন্যান্য উপাদানগুলির সাথে ব্যবহারকারীর মিথস্ক্রিয়া পরিকল্পনা করার সময় স্থাপত্য নিদর্শনগুলি বিমূর্ততার উচ্চ স্তরে ব্যবহৃত হয়। আসুন কিছু নিদর্শন এবং কীভাবে সেগুলি ব্যবহার করবেন তা দ্রুত দেখে নেওয়া যাক।

ক্লায়েন্ট-সার্ভার আর্কিটেকচার

নামটি এমন ধারণা তৈরি করে যে এই প্যাটার্ন সম্পর্কে সবকিছুই সহজ এবং পরিষ্কার। তবে আসুন কিছু বিষয় স্পষ্ট করি, যাতে আপনি যখন বসন্ত অধ্যয়ন শুরু করবেন তখন আপনি বুঝতে পারবেন আমরা কী নিয়ে কথা বলছি। ধরা যাক আপনি একটি চ্যাট অ্যাপ লিখেছেন, এবং আপনি এবং একজন বন্ধু এটি ব্যবহার করা শুরু করুন৷ আপনি পরিচিত আইপি ঠিকানাগুলি ব্যবহার করে সরাসরি ইন্টারনেটের মাধ্যমে একে অপরকে বার্তা পাঠাতে খুব সহজ পদ্ধতি অবলম্বন করতে পারেন: পার্ট 2। সফটওয়্যার আর্কিটেকচার সম্পর্কে একটু কথা বলা যাক - 2প্রথমে, আপাতদৃষ্টিতে সবকিছু ঠিকঠাক কাজ করে যতক্ষণ না আপনার অন্য একজন বন্ধু চ্যাটে যোগ দিতে বলে। সুতরাং আপনি যখন আপনার পারস্পরিক বন্ধুকে চ্যাটে যুক্ত করার সিদ্ধান্ত নেন, তখন আপনি একটি স্থাপত্য সমস্যার সম্মুখীন হন: প্রতিটি চ্যাট অংশগ্রহণকারীর জন্য, আপনাকে ব্যবহারকারীর সংখ্যা এবং নতুন ব্যবহারকারীদের IP ঠিকানা সম্পর্কে বর্তমান তথ্য প্রদান করতে হবে। এবং যখন একটি বার্তা পাঠানো হয়, এটি সমস্ত অংশগ্রহণকারীদের কাছে পৌঁছে দেওয়া প্রয়োজন৷ এগুলি হল সবচেয়ে সুস্পষ্ট সমস্যা যা দেখা দেবে। আরও একটি গুচ্ছ সমস্যা কোডের মধ্যেই লুকিয়ে থাকবে। এগুলি এড়াতে আপনাকে একটি সার্ভার ব্যবহার করতে হবে, যা ব্যবহারকারীদের সম্পর্কে তাদের ঠিকানা সহ সমস্ত তথ্য সংরক্ষণ করবে। বার্তা শুধুমাত্র সার্ভারে পাঠানো প্রয়োজন. এটি, ঘুরে, প্রতিটি প্রাপককে বার্তা পাঠায়। আপনি যখন আপনার চ্যাট অ্যাপে একটি সার্ভার অংশ যোগ করার সিদ্ধান্ত নেন, তখন আপনি একটি ক্লায়েন্ট-সার্ভার আর্কিটেকচার তৈরি করতে শুরু করেন।

ক্লায়েন্ট-সার্ভার আর্কিটেকচারের উপাদান

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

  2. সার্ভার — এখানেই আপনার ওয়েব অ্যাপ্লিকেশন বা সার্ভারের অংশটি অবস্থিত। এটি প্রয়োজনীয় ব্যবহারকারীর তথ্য সংরক্ষণ করে বা এটি অনুরোধ করতে পারে। উপরন্তু, যখন একটি ক্লায়েন্ট একটি অনুরোধ পাঠায়, এটি সার্ভার যা অনুরোধ করা তথ্য ফেরত দেয়।

  3. নেটওয়ার্ক - এই অংশটি সহজ। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য আদান-প্রদানের সুবিধা দেয়।

সার্ভার বিভিন্ন ব্যবহারকারীদের কাছ থেকে বিপুল সংখ্যক অনুরোধ পরিচালনা করতে পারে। এর মানে হল অনেক ক্লায়েন্ট থাকতে পারে। তাদের নিজেদের মধ্যে তথ্য আদান-প্রদানের প্রয়োজন হলে সার্ভারের মাধ্যমে তা ঘটতে হবে। সুতরাং, সার্ভারের আরেকটি ফাংশন রয়েছে: ট্রাফিক নিয়ন্ত্রণ। আমাদের মাল্টি-ইউজার চ্যাট প্রোগ্রামের সাথে সম্পর্কিত, সমস্ত সম্পূর্ণ অ্যাপ্লিকেশন দুটি মডিউল নিয়ে গঠিত:
  • একটি ক্লায়েন্ট মডিউল — সাইন ইন করার এবং বার্তা পাঠানো/গ্রহণ করার জন্য একটি গ্রাফিক্যাল ইন্টারফেস রয়েছে

  • একটি সার্ভার মডিউল - একটি ওয়েব অ্যাপ্লিকেশন যা একটি সার্ভারে হোস্ট করা হয় এবং ব্যবহারকারীদের কাছ থেকে বার্তা গ্রহণ করে, সেগুলি প্রক্রিয়া করে এবং তারপর সেগুলি প্রাপকদের কাছে পাঠায়

পার্ট 2. সফটওয়্যার আর্কিটেকচার সম্পর্কে একটু কথা বলা যাক - 4আমরা যখন ইন্টারনেটে দরকারী (বা খুব দরকারী নয়) তথ্য দেখতে চাই, তখন আমরা একটি ব্রাউজার খুলি, অনুসন্ধান বারে একটি প্রশ্ন লিখি এবং প্রতিক্রিয়া হিসাবে অনুসন্ধান ইঞ্জিন থেকে তথ্য পাই। এই চেইনে, ব্রাউজার হল ক্লায়েন্ট। এটি সার্ভারে আমরা কী খুঁজছি সে সম্পর্কে তথ্য সহ একটি অনুরোধ পাঠায়। সার্ভার অনুরোধটি প্রক্রিয়া করে, সবচেয়ে প্রাসঙ্গিক ফলাফল খুঁজে পায়, ব্রাউজার (ক্লায়েন্ট) বুঝতে পারে এমন একটি বিন্যাসে সেগুলি প্যাকেজ করে এবং সেগুলি ফেরত পাঠায়। সার্চ ইঞ্জিনের মতো জটিল পরিষেবাগুলিতে প্রচুর সার্ভার থাকতে পারে। উদাহরণস্বরূপ, একটি অনুমোদন সার্ভার, তথ্য খোঁজার জন্য একটি সার্ভার, প্রতিক্রিয়া তৈরি করার জন্য একটি সার্ভার, ইত্যাদি৷ কিন্তু ক্লায়েন্ট এইগুলির কোনটি সম্পর্কে অবগত এবং উদ্বিগ্ন নয়: ক্লায়েন্টের জন্য, সার্ভারটি একটি ঐক্যবদ্ধ সত্তা৷ ক্লায়েন্ট শুধুমাত্র এন্ট্রি পয়েন্ট সম্পর্কে জানে, অর্থাৎ, সার্ভারের ঠিকানা যেখানে অনুরোধ পাঠানো উচিত। আমরা যে আবেদন পরীক্ষা করেছিলাম তা স্মরণ করুনএই সিরিজের আগের অংশ । এটি বাস্তব সময়ে সমস্ত দেশে গড় বায়ু তাপমাত্রা নিরীক্ষণের জন্য ছিল। এর আর্কিটেকচারটি এইরকম দেখায়: পার্ট 2. সফটওয়্যার আর্কিটেকচার সম্পর্কে একটু কথা বলি - 5আমাদের অ্যাপ্লিকেশনটি সার্ভারে অবস্থিত। ধরা যাক যে প্রতি পাঁচ সেকেন্ডে এটি স্থানীয় আবহাওয়া কেন্দ্রগুলি দ্বারা পরিচালিত সার্ভারগুলিতে অনুরোধ পাঠায়, সার্ভার থেকে একটি নির্দিষ্ট দেশের তাপমাত্রার তথ্য গ্রহণ করে এবং এই তথ্য সংরক্ষণ করে। যখন ক্লায়েন্ট আমাদেরকে "বিশ্বের বর্তমান বায়ুর তাপমাত্রা দেখতে" বলে, তখন আমরা দেশ অনুসারে বাছাই করা অতি সাম্প্রতিক সংরক্ষিত তথ্য ফেরত দেই। সুতরাং, আমাদের অ্যাপ্লিকেশন একটি সার্ভার (যখন এটি ব্যবহারকারীর অনুরোধগুলি প্রক্রিয়া করে) এবং একটি ক্লায়েন্ট (যখন এটি অন্যান্য সার্ভার থেকে তথ্য গ্রহণ করে) উভয় হিসাবে কাজ করে।
এখানে একটি গুরুত্বপূর্ণ বিষয়: একটি সার্ভারের ধারণা একটি নির্দিষ্ট কম্পিউটার সম্পর্কে নয়, বরং নেটওয়ার্ক সত্তার মধ্যে সম্পর্ক সম্পর্কে
একটি সাধারণ ক্লায়েন্ট-সার্ভার আর্কিটেকচার খুব কমই এবং শুধুমাত্র খুব সাধারণ অ্যাপ্লিকেশনের জন্য ব্যবহার করা হয়। সত্যিই বড় এবং জটিল প্রকল্পগুলির জন্য, আমরা বিভিন্ন আর্কিটেকচার ব্যবহার করি, যা আপনি ভবিষ্যতে পূরণ করবেন। এখন আসুন একটি মডেল দেখি যা ক্লায়েন্ট-সার্ভার আর্কিটেকচারের সাথে খুব মিল।

তিন স্তরের স্থাপত্য

এটি একটি আর্কিটেকচারাল প্যাটার্ন যা একটি তৃতীয় মডিউল প্রবর্তন করে — ডেটা স্টোরেজ । এই প্যাটার্নে, তিনটি স্তরকে সাধারণত স্তর বা স্তর বলা হয়: পার্ট 2. সফটওয়্যার আর্কিটেকচার সম্পর্কে একটু কথা বলি - 6
  1. ক্লায়েন্ট স্তর হল ইউজার ইন্টারফেস, যাকে উপস্থাপনা স্তরও বলা হয়। এটি একটি ওয়েব ব্রাউজার হতে পারে যা এইচটিএমএল পৃষ্ঠাগুলি গ্রহণ করে, বা JavaFX ব্যবহার করে লেখা একটি গ্রাফিক্যাল ইউজার ইন্টারফেস। মূল বিষয় হল এই স্তরটি ব্যবহারকারীকে সার্ভারে অনুরোধ পাঠাতে এবং এর প্রতিক্রিয়াগুলি প্রক্রিয়া করতে দেয়।

  2. লজিক লেয়ার হল সেই সার্ভার যা অনুরোধ/প্রতিক্রিয়া প্রক্রিয়া করে। প্রায়শই এটিকে সার্ভার স্তরও বলা হয়। এখানেও সমস্ত যৌক্তিক ক্রিয়াকলাপ সংঘটিত হয়: গাণিতিক গণনা, ডেটা অপারেশন, অন্যান্য পরিষেবাগুলিতে কল বা ডেটা স্টোরেজ ইত্যাদি।

  3. ডেটা স্তর হল ডাটাবেস সার্ভার: আমাদের সার্ভার এটির সাথে যোগাযোগ করে। এই স্তরটি অ্যাপ্লিকেশন পরিচালনার জন্য প্রয়োজনীয় সমস্ত তথ্য সংরক্ষণ করে।

সুতরাং, আমাদের সার্ভার ডেটা অ্যাক্সেস করার জন্য সমস্ত দায়িত্ব গ্রহণ করে এবং ব্যবহারকারীকে এটি সরাসরি অ্যাক্সেস করার অনুমতি দেয় না।

তিন স্তরের স্থাপত্যের সুবিধা

এই ধরনের একটি স্থাপত্য আমাদের অনেক সুবিধা দেয়, যার মধ্যে রয়েছে:
  1. এসকিউএল ইনজেকশন থেকে রক্ষা করার ক্ষমতা (এটি একটি সার্ভারে একটি আক্রমণ; এতে এসকিউএল কোড পাঠানো জড়িত যা কার্যকর করা হলে, আক্রমণকারীকে আমাদের ডাটাবেসকে প্রভাবিত করতে দেয়)।

  2. আমরা ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ করতে চাই এমন ডেটা আলাদা করা।

  3. ক্লায়েন্টকে পাঠানোর আগে ডেটা পরিবর্তন করার ক্ষমতা।

  4. স্কেলেবিলিটি (আমাদের অ্যাপ্লিকেশনটিকে একাধিক সার্ভারে প্রসারিত করার ক্ষমতা যা একই ডাটাবেস ব্যবহার করবে।

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

কত ঘন ঘন স্থাপত্য নিদর্শন ব্যবহার করা উচিত?

আপনি যদি ফ্যাক্টরি পদ্ধতির ডিজাইন প্যাটার্নের সাথে পরিচিত হন , তাহলে আপনি সম্ভবত ভাবছেন কখন এটি ব্যবহার করবেন। কখনও কখনও কি করতে হবে তা সিদ্ধান্ত নেওয়া কঠিন: নতুন অপারেটর ব্যবহার করে বা কারখানার পদ্ধতি ব্যবহার করে একটি বস্তু তৈরি করুন। কিন্তু সময়ের সাথে সাথে বোঝাপড়া আসে। স্থাপত্যের নিদর্শনগুলির ক্ষেত্রে জিনিসগুলি কিছুটা আলাদা। এন্টারপ্রাইজ ফ্রেমওয়ার্ক একটি প্রোগ্রামারকে কিছু সাধারণভাবে গৃহীত প্যাটার্নের উপর ভিত্তি করে একটি প্রকল্প তৈরি করার অনুমতি দেওয়ার জন্য ডিজাইন করা হয়েছে। সেই অনুযায়ী, স্প্রিং ফ্রেমওয়ার্ক শেখার আগে, আপনার অবশ্যই ক্লায়েন্ট-সার্ভার আর্কিটেকচার, থ্রি-টায়ার আর্কিটেকচার এবং এমভিসি আর্কিটেকচার বোঝা উচিত। চিন্তা করবেন না: আমরা এখনও MVC আর্কিটেকচার সম্পর্কে কথা বলব। পার্ট 3. HTTP/HTTPS পার্ট 4. Maven এর মূল বিষয়গুলি৷ পার্ট 5। সার্ভলেট এবং জাভা সার্ভলেট এপিআই। একটি সাধারণ ওয়েব অ্যাপ্লিকেশন লেখা পার্ট 6. সার্ভলেট কন্টেইনার পার্ট 7. MVC (মডেল-ভিউ-কন্ট্রোলার) প্যাটার্ন প্রবর্তন করা হচ্ছে
মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই