নোড.জেএস কখন ব্যবহার করবেন তা কীভাবে সিদ্ধান্ত নেবেন?


2195

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

গত কয়েকদিনে আমি যে সমস্ত হোমওয়ার্ক করে চলেছি সেগুলি থেকে আমি নিম্নলিখিত তথ্যগুলি পেয়েছি। node.js

  • একটি কমান্ড-লাইন সরঞ্জাম যা নিয়মিত ওয়েব সার্ভার হিসাবে চালানো যেতে পারে এবং একটিটিকে জাভাস্ক্রিপ্ট প্রোগ্রাম চালাতে দেয়
  • দুর্দান্ত ভি 8 জাভাস্ক্রিপ্ট ইঞ্জিন ব্যবহার করে
  • আপনাকে একইসাথে বেশ কয়েকটি কাজ করার দরকার হয় তখন খুব ভাল
  • ইভেন্ট-ভিত্তিক তাই সমস্ত দুর্দান্ত অ্যাজাক্স- পছন্দসই স্টাফ সার্ভার সাইডে করা যায়
  • আমাদের ব্রাউজার এবং ব্যাকএন্ডের মধ্যে কোড ভাগ করতে দিন
  • আমাদের মাইএসকিউএল সঙ্গে কথা বলতে দিন

আমি যে উত্সগুলি পেয়েছি তার মধ্যে কয়েকটি হ'ল:

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


4
এই প্রশ্নটি মেটাতে আলোচনা করা হচ্ছে ( meta.stackoverflow.com/q/332386/497418 )।
zzzzBov

উত্তর:


1355

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

এর অর্থ আপনি একটি ব্রাউজার-ভিত্তিক চ্যাট অ্যাপ্লিকেশন তৈরি করতে পারেন নোড.জেজে যা দুর্দান্ত অনেক ক্লায়েন্টকে পরিবেশন করতে প্রায় কোনও সিস্টেমের সংস্থান নেয় না। যে কোনও সময় আপনি এই ধরণের দীর্ঘ ভোটদান করতে চান, নোড.জেএস একটি দুর্দান্ত বিকল্প।

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

আমি এখানে অন্যান্য উত্তর পড়ার অপেক্ষায় রয়েছি, এটি একটি দুর্দান্ত প্রশ্ন।

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

পিরামিড এবং দীর্ঘ-পোলিংয়ের উপর একটি নিবন্ধ এখানে দেওয়া হয়েছে, যা জেনভেন্টের থেকে কিছুটা সাহায্য নিয়ে সেটআপ করা খুব সহজ বলে প্রমাণিত হয় : টিকট্যাক এবং পিরামিডের সাথে লং পোলিং


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

1
এর জন্য ধন্যবাদ ... গ্রেট কিউ এবং এ ;-) আমি কয়েক আলাদা আলাদা আলাদা এবং উভয় প্রকারের উন্নয়নের জন্য একটি দুর্দান্ত প্রযুক্তি আয়ত্ত করার ক্ষেত্রেও এটি সম্পর্কে চিন্তাভাবনা করব;)
স্টোকড আউট

12
দীর্ঘ ভোট কেন ব্যবহার করবেন? ভবিষ্যতে এবং সকেটগুলির কী হয়েছিল ?
hitautodestruct

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

409

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

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

তবে আমার আরও উল্লেখ করা উচিত যে থ্রেডগুলির কারণে কোডটি ব্লক হতে পারে এমন কোনও পরিস্থিতিতে নোড.জেএস এর সাথে আরও ভালভাবে সম্বোধন করা যেতে পারে about বা আপনার অ্যাপ্লিকেশন প্রয়োজন যেখানে কোনও পরিস্থিতি ইভেন্ট চালিত হতে হবে।

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

প্লাস এটি সব সময় জাভাস্ক্রিপ্ট হয়। পুরো স্ট্যাকের উপর লিঙ্গুয়া ফ্রাঙ্কা।


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

9
মজার বিষয় হল, মূলধারার এবং স্থানীয় সংস্কৃতিগুলির মধ্যে চলাকালীন ক্রস-সাংস্কৃতিক ব্যক্তি উপভাষাগুলি পরিবর্তন করার অনুশীলনকে "কোড-স্যুইচিং" বলা হয় called
মাইকেল ব্ল্যাকবার্ন

1
অন্য দিন আমি কীভাবে আমার বিভিন্ন .jsফাইলগুলিতে বিভিন্ন রঙ নির্ধারণের বিষয়ে যেতে পারি সে সম্পর্কে ভাবছিলাম । ক্লায়েন্ট-সাইডের জন্য সবুজ, সার্ভার-সাইডের জন্য নীল। আমি নিজেকে "হারিয়ে" পেতে থাকি।
এজেবি

209

নোডজেএস ব্যবহার করার কারণগুলি:

  • এটি জাভাস্ক্রিপ্ট চালায়, যাতে আপনি সার্ভার এবং ক্লায়েন্টে একই ভাষা ব্যবহার করতে পারেন এবং এমনকি তাদের মধ্যে কিছু কোড ভাগ করতে পারেন (উদাহরণস্বরূপ ফর্ম বৈধকরণের জন্য, বা উভয় প্রান্তে ভিউ রেন্ডার করতে)

  • একক-থ্রেডেড ঘটনা-চালিত সিস্টেম ফাস্ট এমনকি ঐতিহ্যগত বহু-থ্রেডেড তুলনায় যখন একবারে অনুরোধ প্রচুর হ্যান্ডলিং, এবং এছাড়াও সহজ, জাভা বা ROR অবকাঠামো।

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

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

  • এটি প্রোটোটাইপিং, চৌকস বিকাশ এবং দ্রুত পণ্য পুনরাবৃত্তির জন্য বেশ উপযুক্ত বলে মনে হয়

কারণ নেইনোডজেএস ব্যবহার করার :

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

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

  • নেস্টেড কলব্যাক হেল্প (অবশ্যই 20 টি বিভিন্ন সমাধান রয়েছে ...)

  • প্যাকেজগুলির ক্রমবর্ধমান পুলটি একটি নোডজেএস প্রকল্পকে পরের থেকে একেবারে পৃথক করে তুলতে পারে । উপলব্ধ অপশন বিপুল সংখ্যা (যেমন এক্সপ্রেস / কারণে বাস্তবায়নের একটি বড় বৈচিত্র্য Sails.js / উল্কা / ডার্বি )। এটি কখনও কখনও কোনও নোড প্রকল্পে নতুন বিকাশকারীদের পক্ষে ঝাঁপিয়ে পড়া আরও শক্ত করে তোলে। কনট্রাস্ট করে একটি সঙ্গে পাগল ডেভেলপার একটি বিদ্যমান প্রকল্প যোগদান: তিনি প্রশংসনীয় দ্রুত অ্যাপ্লিকেশন এর সাথে পরিচিত করতে সক্ষম হওয়া উচিত কারণ সব পাগল অ্যাপস ব্যবহার করতে পরামর্শ দেওয়া হয় অনুরূপ গঠন

  • ফাইলগুলি নিয়ে কাজ করা কিছুটা ব্যথা হতে পারে। অন্যান্য ভাষায় যে বিষয়গুলি তুচ্ছ, যেমন একটি পাঠ্য ফাইল থেকে একটি লাইন পড়া, নোড.জেএস এর সাথে করার জন্য যথেষ্ট অদ্ভুত যে 80+ আপভোটের সাথে স্ট্যাকওভারফ্লো প্রশ্ন রয়েছে। আছে একটি CSV ফাইল থেকে একটি সময়ে এক রেকর্ড পড়তে কোন সহজ উপায় । প্রভৃতি

আমি নোডেজেএসকে ভালবাসি, এটি দ্রুত এবং বুনো এবং মজাদার, তবে আমি উদ্বিগ্ন যে এটি প্রমাণযোগ্য-নির্ভুলতায় খুব আগ্রহী নয়। আসুন আশা করি আমরা শেষ পর্যন্ত উভয় বিশ্বের সেরা সংহত করতে পারি। ভবিষ্যতে নোডকে কী প্রতিস্থাপন করবে তা দেখার জন্য আমি আগ্রহী ... :)


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

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

2
বৃহত্তর জটিল প্রোগ্রামগুলি এবং স্থিতিশীল টাইপচেকিং পরিচালনার ক্ষেত্রে টাইপস্ক্রিপ্ট নোড.জেএস-এর মতো জিনিসগুলিকে পছন্দ করবেন না?
CodeMonkey

2
@ জোয়েটউইডল এর ​​মূল্য কী তা আপনি এখনও এনএমপি প্যাকেজটি বজায় রাখছেন কি না তা নির্ধারণ করতে stillmaintain.com ব্যবহার করতে পারেন (সংখ্যাগরিষ্ঠ গিথুবে রয়েছে বলে)। এছাড়াও, npm searchএবং npm showআপনাকে একটি প্যাকেজ শেষ প্রকাশের তারিখ প্রদর্শন করবে।
ড্যান প্যান্ট্রি

3
নোডের সাথে রেলগুলির তুলনা করে আপনি একটি প্ল্যাটফর্মটিকে একটি কাঠামোর সাথে বিভ্রান্ত করছেন। রেলগুলি রুবির জন্য ঠিক একটি কাঠামো যেমন সেল এবং উল্কা জাভাস্ক্রিপ্টের ফ্রেমওয়ার্ক।
বনসাইওক

206

এটি সংক্ষিপ্ত করতে:

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

নোড.জেজে ইভেন্ট লুপ সম্পর্কে একটি ভাল নিবন্ধ হ'ল মিক্সুর প্রযুক্তি ব্লগ: নোড.জেএস ইভেন্ট লুপ বোঝা


127

আমার একটি বাস্তব-বিশ্বের উদাহরণ রয়েছে যেখানে আমি নোড.জেএস ব্যবহার করেছি where আমি যে সংস্থায় কাজ করি তার একটি ক্লায়েন্ট পেয়েছিল যিনি একটি সাধারণ স্ট্যাটিক এইচটিএমএল ওয়েবসাইট পেতে চান। এই ওয়েবসাইটটি পেপাল ব্যবহার করে একটি আইটেম বিক্রয় করার জন্য এবং ক্লায়েন্ট এছাড়াও এমন একটি কাউন্টার রাখতে চেয়েছিল যা বিক্রি হওয়া আইটেমগুলির পরিমাণ দেখায়। ক্লায়েন্টটি এই ওয়েবসাইটে বিপুল পরিমাণ দর্শনার্থী থাকার প্রত্যাশা করেছে। আমি নোড.জেএস এবং এক্সপ্রেস.জেএস ব্যবহার করে কাউন্টার তৈরি করার সিদ্ধান্ত নিয়েছি ফ্রেমওয়ার্ক ।

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

আমি কেন এই ক্ষেত্রে নোড.জেএস ব্যবহার করতে বেছে নিয়েছি তার কয়েকটি কারণ

  1. এটি খুব লাইটওয়েট এবং দ্রুত। এই ওয়েবসাইটে তিন সপ্তাহের মধ্যে 200000 এরও বেশি পরিদর্শন হয়েছে এবং ন্যূনতম সার্ভার সংস্থানগুলি এগুলি সমস্ত পরিচালনা করতে সক্ষম হয়েছে।
  2. কাউন্টারটি রিয়েল টাইম হওয়া সত্যিই সহজ।
  3. নোড.জেএস কনফিগার করা সহজ ছিল।
  4. মডিউল প্রচুর বিনামূল্যে পাওয়া যায়। উদাহরণস্বরূপ, আমি পেপালের জন্য একটি নোড.জেএস মডিউল পেয়েছি।

এই ক্ষেত্রে, নোড.জেএস একটি দুর্দান্ত পছন্দ ছিল।


7
আপনি কীভাবে এমন কিছু হোস্ট করবেন? আপনার কি তখন প্রোডাকশন সার্ভারে নোডেজ সেটআপ করতে হবে? লিনাক্সে?
মিগুয়েল স্টিভেনস

1
নোডিজিটসু এবং হেরোকু এর মতো কয়েকটি পাস রয়েছে। অথবা আপনি আসলে একটি লিনাক্স বক্সে নোডেজ স্থাপন করতে পারেন, যেমন অ্যামাজন ই সি 2 থেকে। দেখুন: lauradhamilton.com/…
হ্যারি তরুণ

13
1,814,400 সেকেন্ডের মধ্যে 200,000 টি দর্শন। মোটেই প্রাসঙ্গিক নয়। এমনকি বাশও ধীর গতির সার্ভারে সেই বহু অনুরোধগুলি সরবরাহ করতে পারে। স্ক্র্যাচ সার্ভার। সবচেয়ে ধীর ভিএম
টিবেরিউ-আয়নু স্টান

105

নোড ব্যবহার করে আপনার পরবর্তী প্রকল্প শুরু করার সর্বাধিক গুরুত্বপূর্ণ কারণগুলি ...

  • সমস্ত দুর্দান্ত doods এর মধ্যে আছে ... সুতরাং এটি মজা করা আবশ্যক
  • আপনি কুলারটিতে hangout করতে পারেন এবং দাম বাড়ানোর জন্য প্রচুর নোড অ্যাডভেঞ্চার পেতে পারেন।
  • ক্লাউড হোস্টিংয়ের ব্যয় আসে যখন আপনি পয়সা কলসি হন।
  • ওখানে পেরে গেছে
  • আপনি আইআইএস মোতায়েনের ঘৃণা করেন
  • আপনার পুরানো আইটি কাজটি বরং নিস্তেজ হয়ে যাচ্ছে এবং আপনি চান যে আপনি একটি চকচকে নতুন স্টার্ট আপে এসেছিলেন।

কি আশা করছ ...

  • আপনার প্রয়োজন নেই এমন সমস্ত সার্ভার ব্লাটওয়্যার ছাড়াই আপনি এক্সপ্রেসে নিরাপদ এবং সুরক্ষিত বোধ করবেন।
  • রকেটের মতো ছুটে যায় এবং ভাল করে স্কেল করে।
  • আপনি এটি স্বপ্ন দেখুন। আপনি এটি ইনস্টল করেছেন। নোড প্যাকেজ রেপো npmjs.org হ'ল বিশ্বের ওপেন সোর্স লাইব্রেরির বৃহত্তম বাস্তুতন্ত্র।
  • আপনার মস্তিষ্ক নেস্টেড কলব্যাক্সের দেশে সময় কাটাবে ...
  • ... যতক্ষণ না আপনি নিজের প্রতিশ্রুতি রাখতে শিখেন ।
  • সিকুয়েলাইজ এবং পাসপোর্ট আপনার নতুন এপিআই বন্ধু।
  • বেশিরভাগ অ্যাসিঙ্ক কোডটি ডিবাগ করা হ'ল আম্মু ... আকর্ষণীয়
  • সব Noders জন্য সময় মাস্টার টাইপ করা বিষয়

কে ব্যবহার করে?

  • পেপাল, নেটফ্লিক্স, ওয়ালমার্ট, লিংকডইন, গ্রুপন, উবার, গোডাডি, ডও জোন্স
  • এখানে কেন তারা এর নোড স্যুইচ

18
হ্যাঁ আমি এই প্রশ্নের উত্তরটি গতানুগতিক উপায়ে দিতে পারতাম। আমি মনে করি আমি এটি করতে যোগ্য কিন্তু এটি বেশিরভাগই ইতিমধ্যে বলা হয়েছে এবং আমি ভেবেছিলাম কিছু হালকা হৃদয় মজা একঘেয়েমি ভেঙে দেবে। আমি নিয়মিতভাবে অন্যান্য প্রশ্নের জন্য প্রযুক্তিগত উত্তর অবদান রাখি।
টনি ও'হাগান

1
অ্যাসিঙ্ক কোডের জন্য ES6 জেনারেটর ব্যবহার করে নেস্টেড কলব্যাকগুলি এড়ানো যায়
রিফ্যাক্টর

1
@ ক্লিনক্রিস্প কোড: হ্যাঁ সত্যই! ES6 সি # স্টাইল গ্রহণ করেছে async/ awaitতাই এখন আমরা প্রচুর ক্লিনার অ্যাসিঙ্ক নোড কোডটি রোল আউট করতে পারি যা প্রচলিত try/ সমর্থন করে catch। 2016/17 সালে জেএস কোডারগুলি ES6 এ স্যুইচ করছে।
টনি ও'হাগান

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

60

সিলভার বুলেটের মতো কিছুই নেই। এটির সাথে কিছু ব্যয় যুক্ত সমস্ত কিছু আসে। এটি এমন যে আপনি যদি তৈলাক্ত খাবার খান তবে আপনি আপনার স্বাস্থ্যের সাথে আপোস করবেন এবং স্বাস্থ্যকর খাবার তৈলাক্ত খাবারের মতো মশলা দিয়ে আসে না। তারা নিজের খাবারের মতো স্বাস্থ্য বা মসলা চায় কিনা তা স্বতন্ত্র পছন্দ। নোড.জেএস একইভাবে নির্দিষ্ট দৃশ্যে ব্যবহৃত হতে পারে বলে বিবেচনা করে। যদি আপনার অ্যাপ্লিকেশনটি সেই দৃশ্যের সাথে মানানসই না হয় তবে আপনার অ্যাপ্লিকেশন বিকাশের জন্য আপনি এটি বিবেচনা করবেন না। আমি কেবল আমার চিন্তাভাবনা একই করছি:

নোড.জেএস কখন ব্যবহার করবেন

  1. যদি আপনার সার্ভার সাইড কোডের জন্য খুব কম সিপিইউ চক্রের প্রয়োজন হয়। অন্য বিশ্বে আপনি অ ব্লকিং অপারেশন করছেন এবং ভারী অ্যালগরিদম / জব নেই যা প্রচুর সিপিইউ চক্র গ্রহণ করে।
  2. আপনি যদি জাভাস্ক্রিপ্ট থেকে ফিরে যান এবং ক্লায়েন্ট সাইড জেএসের মতো একক থ্রেডড কোড লিখতে আরামদায়ক হন।

যখন নোড.জেএস ব্যবহার করবেন না

  1. আপনার সার্ভারের অনুরোধটি ভারী সিপিইউ গ্রহণকারী অ্যালগরিদম / কাজের উপর নির্ভরশীল।

নোড.জেএস এর সাথে স্কেলাবিলিটি বিবেচনা

  1. নোড.জেএস নিজেই অন্তর্নিহিত সিস্টেমের সমস্ত কোরকে ব্যবহার করে না এবং এটি ডিফল্টরূপে একক থ্রেডযুক্ত, আপনাকে মাল্টি কোর প্রসেসরটি ব্যবহার করতে এবং এটি মাল্টি থ্রেডেড করতে আপনার নিজের দ্বারা যুক্তি লিখতে হবে।

নোড.জেএস বিকল্প

নোড.জেএসের জায়গায় ব্যবহারের জন্য অন্যান্য বিকল্প রয়েছে তবে ভার্ট.এক্সটি বেশ প্রতিশ্রুতিবদ্ধ বলে মনে হচ্ছে এবং এতে বহুগুচ্ছ এবং আরও ভাল স্কেলিবিলিটি বিবেচনার মতো প্রচুর অতিরিক্ত বৈশিষ্ট্য রয়েছে।


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

3
@ ওন্দ্রপেটেরকা: আপনি ঠিক বলেছেন যে নোড.জেএস সার্ভার আইওকে ব্লক করার জন্য নিরাময় করছে, তবে যদি সার্ভারে আপনার অনুরোধ হ্যান্ডলারটি স্বয়ংক্রিয়ভাবে অন্য কোনও ওয়েব সার্ভিস / ফাইল অপারেশনে একটি ব্লকিং কল করছে, নোড.জেএস এখানে সহায়তা করবে না। এটি কেবলমাত্র সার্ভারে আগত অনুরোধগুলির জন্য আইওকে ব্লক করা নয় তবে আপনার অ্যাপ্লিকেশন অনুরোধ হ্যান্ডলার থেকে বহির্গামী অনুরোধের জন্য নয়।
অজয় তিওয়ারি

4
থেকে @ajay nodejs.org তারা বলে "অ-ব্লক ইনপুট / আউটপুট", দয়া করে আপনার "যখন নয়" 2 এবং 3. পরীক্ষা
ওমর আল-Ithawi

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

4
ভারী গণনার জন্য আপনি নোড.জেএস ব্যবহার করতে পারেন। ব্যবহার forkস্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 9546225/ … দেখুন । নোড clusterমডিউলটির সাথে একাধিক কোর পরিচালনা করে । nodejs.org/api/cluster.html
জেস

41

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


6
এবং এই প্যাকেজগুলি সমস্ত তুলনামূলকভাবে সতেজ, তাই তাদের হ্যান্ডসাইটের সুবিধা রয়েছে এবং সাম্প্রতিক ওয়েব মানগুলির সাথে মানিয়ে নিতে ঝোঁক।
জোয়েটউইডল

3
সমস্ত যথাযোগ্য সম্মানের সাথে, এনপিএম-এ প্রচুর প্যাকেজগুলি ভয়ানক, কারণ এনএমপিতে প্যাকেজগুলি রেট দেওয়ার কোনও ব্যবস্থা নেই । সিপিএএন থেকে কেউ কি হিন্দস্টাইট ?
ড্যান ড্যাসক্লেস্কু

খুব খারাপ কোনও ওয়েবসকেট লাইব্রেরি আরএফসি 6455 টি নির্দিষ্টকরণ পূরণ করতে পারে না। নোড.জেএস ফ্যানবয়গুলি বধির, বোবা এবং অন্ধ হয় যখন এই সত্যটি দেওয়া হয়।
r3wt 1'14

1
আপনি কখন মন্তব্য করেছেন তা সম্পর্কে আমি জানি না তবে এখনই ডাব্লুএস লাইব্রেরি সেই অনুকূলে সমর্থন করে
জোনাথন গ্রে

37

আমার টুকরো: নলিকাগুলি বিশ্লেষণ, চ্যাট-অ্যাপস, এপিস, অ্যাড সার্ভার ইত্যাদির মতো রিয়েল টাইম সিস্টেম তৈরির জন্য দুর্দান্ত Hell

সম্পাদন করা

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

কখন ব্যবহার করতে হবে

সিস্টেম তৈরি করার সময় যা সম্মতি এবং গতিতে জোর দেয়।

  • সকেটগুলি কেবল চ্যাট অ্যাপস, রিক অ্যাপস ইত্যাদির মতো সার্ভারগুলি
  • সামাজিক নেটওয়ার্কগুলি যা ভূ-অবস্থান, ভিডিও স্ট্রিম, অডিও স্ট্রিম ইত্যাদির মতো রিয়েলটাইম সংস্থানগুলিতে জোর দেয়
  • অ্যানালিটিক্স ওয়েব অ্যাপের মতো ছোট ছোট ডেটা সত্যিই দ্রুত পরিচালনা করা।
  • কেবলমাত্র একটি এপিআইকে এক্সপোজ করে।

কখন ব্যবহার করবেন না

এটি একটি খুব বহুমুখী ওয়েবসারভার যাতে আপনি এটি যেখানেই চান ব্যবহার করতে পারেন তবে সম্ভবত এই জায়গাগুলি নয় not

  • সাধারণ ব্লগ এবং স্থির সাইট।
  • যেমন একটি স্ট্যাটিক ফাইল সার্ভার।

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


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

আমি অন্যথায় বলব - ghost.org দেখুন , আশ্চর্যজনক দেখায় এবং নোডজেসের শীর্ষে নির্মিত - সহযোগিতা, রিয়েলটাইম নিবন্ধ সম্পাদনা। এছাড়াও, NodeJs একটি সহজ পৃষ্ঠা তৈরি ব্যবহার বলতে sailsjs.org , সহজে, দ্রুত এবং আপনি সার্ভার সাইড প্রোগ্রামিং ভাষার কোনো শেখার সঙ্গে নিজেকে বিরক্ত করার জন্য প্রয়োজন হবে না
Bery

30

এটি যেখানে ব্যবহার করা যেতে পারে

  • যে অ্যাপ্লিকেশনগুলি অত্যন্ত ইভেন্ট চালিত এবং প্রচুরভাবে I / O সীমাবদ্ধ
  • অ্যাপ্লিকেশনগুলি অন্যান্য সিস্টেমে প্রচুর সংযোগ পরিচালনা করে
  • রিয়েল-টাইম অ্যাপ্লিকেশনগুলি (নোড.জেগুলি বাস্তব সময়ের জন্য ব্যবহারযোগ্য এবং সহজ হতে গ্রাউন্ড আপ থেকে ডিজাইন করা হয়েছিল))
  • অ্যাপ্লিকেশনগুলি যা অন্যান্য উত্সগুলিতে এবং স্ট্রিমিং তথ্যের স্ক্যাডগুলিকে জাগল করে
  • উচ্চ ট্র্যাফিক, স্কেলেবল অ্যাপ্লিকেশন
  • মোবাইল অ্যাপ্লিকেশনগুলিতে প্রচুর ডেটা অ্যানালিটিক্স না করে প্ল্যাটফর্ম এপিআই এবং ডাটাবেসে কথা বলতে হয়
  • নেটওয়ার্ক অ্যাপ্লিকেশন তৈরি করুন
  • অ্যাপ্লিকেশনগুলির যেগুলি প্রায়শই পিছনের প্রান্তে কথা বলা প্রয়োজন

মোবাইল ফ্রন্টে, প্রাইম-টাইম সংস্থাগুলি তাদের মোবাইল সমাধানের জন্য নোড.জেএস-এ নির্ভর করে। কেন দেখুন?

লিঙ্কডইন একটি বিশিষ্ট ব্যবহারকারী। তাদের পুরো মোবাইল স্ট্যাকটি নোড.জেএস-তে নির্মিত তারা প্রতিটি শারীরিক মেশিনে 15 টি দৃষ্টান্ত সহ 15 টি সার্ভার চালিয়ে কেবল 4 টি নজরে গিয়েছিল - যা দ্বিগুণ ট্র্যাফিক পরিচালনা করতে পারে!

ইবে এইচটিটিপি এপিআই-এর জন্য Ql.io নামে একটি ওয়েব কোয়েরি ভাষা চালু করেছে, যা নোড.জেসকে রানটাইম স্ট্যাক হিসাবে ব্যবহার করে। তারা নোড.জেএসএস প্রসেস প্রতি 120,000 এরও বেশি সক্রিয় সংযোগগুলি পরিচালনা করতে একটি নিয়মিত বিকাশকারী-মানের উবুন্টু ওয়ার্কস্টেশন টিউন করতে সক্ষম হয়েছিল, প্রতিটি সংযোগ প্রায় 2 কেবি মেমরি গ্রহণ করে!

ওয়ালমার্ট নোড.জেএস ব্যবহার করতে তার মোবাইল অ্যাপটিকে পুনরায় ইঞ্জিনিয়ার করেছে এবং এর জাভাস্ক্রিপ্ট প্রসেসিংটিকে সার্ভারে ঠেলা দিয়েছে।

এখানে আরও পড়ুন: http://www.pixelatingbits.com/a-closer-look-at-mobile-app-de વિકાસment-with-node-js/


20

একযোগে অনুরোধ পরিচালনার জন্য নোড সেরা -

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

ঠিক আছে আপনি সম্মত হন যে আপনি জাভাস্ক্রিপ্টে আপনার এপিআই লিখতে পারেন তবে আমি যদি উপরের সমস্যার সাথে ঠিক আছি তবে কি হবে। রেস্ট এপিআই এর জন্য নোড ব্যবহার করার কি অন্য কোনও কারণ রয়েছে?

সুতরাং এখানে যাদু শুরু হয়। হ্যাঁ আমার এপিআই এর নোড ব্যবহার করার অন্যান্য কারণ রয়েছে।

আসুন আমরা আমাদের traditionalতিহ্যবাহী বিশ্রাম এপিআই সিস্টেমে ফিরে যাই যা ব্লকিং অপারেশন বা থ্রেডিংয়ের উপর ভিত্তি করে। ধরুন, দুটি সমবর্তী অনুরোধ (r1 এবং r2) ঘটে, তাদের প্রত্যেকের জন্য ডাটাবেস অপারেশন প্রয়োজন। সুতরাং প্রথাগত ব্যবস্থায় কী ঘটবে:

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

2. থ্রেডিং ওয়ে: আমাদের সার্ভার উভয় অনুরোধের জন্য দুই থ্রেড সৃষ্টি হবে r1এবংr2 এবং ডাটাবেস অনুসন্ধান তাই তার fast.But এটি মেমরি গ্রাসকারী কারণ আপনি দেখতে পারেন ঠান্ডা পরে তাদের উদ্দেশ্য পরিবেশন আমরা দুটি থ্রেড এছাড়াও সমস্যা বাড়ে শুরু যখন উভয় অনুরোধ একই তথ্য অনুসন্ধান করা হয় তাহলে আপনাকে ডেডলক ধরনের ধরণের সমস্যাগুলি মোকাবেলা করতে হবে। অপেক্ষা করার চেয়ে এটি ভাল তবে এখনও সমস্যা আছে।

এখন এখানে, নোড এটি করবে কীভাবে:

৩. নোডওয়ে: নোডে যখন একই সমবর্তী অনুরোধটি আসে তখন এটি তার কলব্যাকের সাথে একটি ইভেন্ট নিবন্ধভুক্ত করবে এবং এটি একটি নির্দিষ্ট r1অনুরোধের জন্য ক্যোয়ারির প্রতিক্রিয়াটির জন্য অপেক্ষা করবে না। সুতরাং অনুরোধটি আসে তখন নোডের ইভেন্ট লুপ (হ্যাঁ একটি ইভেন্ট লুপ আছে নোডে যা এই উদ্দেশ্যে পরিবেশন করে r2। যখনই কোনও জিজ্ঞাসা শেষ হয় এটি তার সম্পর্কিত ইভেন্টটিকে ট্রিগার করে এবং কোনও ব্যত্যয় ছাড়াই এর কলব্যাক সম্পূর্ণকরণে কার্যকর করে।

সুতরাং কোনও অপেক্ষা, কোনও থ্রেডিং, কোনও মেমরির খরচ নেই - হ্যাঁ এটি রেস্ট এপিআই সরবরাহের জন্য নোডওয়ে।


1
হাই আনশুল থ্রেডিংয়ের পথে কীভাবে অচলাবস্থা হতে পারে সে সম্পর্কে আপনি কীভাবে বিশদ বর্ণনা করতে পারেন বা কোনও উত্সের পরামর্শ দিতে পারেন।
jsbisht

16

নতুন প্রকল্পের জন্য নোড.জেএস বেছে নেওয়ার আমার আরও একটি কারণ হ'ল:

খাঁটি মেঘ ভিত্তিক বিকাশ করতে সক্ষম হোন

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

অবশ্যই, সেখানে অন্যান্য ভাষা বা প্ল্যাটফর্মগুলির জন্য ক্লাউড ভিত্তিক আইডিই (ক্লাউড 9 আইডিই অন্যান্য ভাষার জন্যও সমর্থন যোগ করছে), তবে নোড.জেএস বিকাশ করতে ক্লাউড 9 ব্যবহার করা আমার পক্ষে সত্যিই দুর্দান্ত অভিজ্ঞতা।


1
প্রকৃতপক্ষে ক্লাউড 9 আইডিই এবং অন্যান্য (আমি যেটিকে ব্যবহার করি তার কোডিং) প্রায় সমস্ত ধরণের ওয়েব ভাষা সমর্থন করে।
ওয়ানি মিয়েরেলি

7
আপনি গুরুতর বন্ধু? এই স্ট্যাক চয়ন করার মানদণ্ড? :) খুশি এটি আপনার জন্য কাজ করে!
ম্যাটানস্টার

15

নোড আরও একটি জিনিস সরবরাহ করে যা হ'ল উড়ে নোডের চাইল্ড প্রসেস ( চাইল্ডপ্রসেস.ফোর্ক ( প্রত্যেকটি ডকস অনুসারে 10 এমবি মেমরির প্রয়োজন হয় ) ব্যবহার করে নোডের একাধিক ভি 8 ইনস্ট্যানস তৈরি করার ক্ষমতা , এইভাবে সার্ভার চলমান মূল প্রক্রিয়াটিকে প্রভাবিত করে না। সুতরাং একটি ব্যাকগ্রাউন্ড জব অফলোড করা যাতে বিশাল সার্ভার লোড দরকার হয় এটি একটি শিশুর খেলায় পরিণত হয় এবং আমরা যখন প্রয়োজন হিসাবে সহজেই তাদের হত্যা করতে পারি।

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


15

অ্যাসবেস্টস দীর্ঘ জোনগুলি দান করা হচ্ছে ...

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

আমি নোড.জেএস এর সাথে আমার অভিজ্ঞতার একটি খুব গোলাপী দৃষ্টিভঙ্গি দিতে পারতাম পরিবর্তে আমি ভাল পয়েন্ট এবং আমার মুখোমুখি খারাপ পয়েন্টগুলি সম্পর্কে সৎ ছিলাম।

আমাকে এখানে প্রাসঙ্গিক কয়েকটি উদ্ধৃতি অন্তর্ভুক্ত করুন:

সতর্কতা: নোড.জেএস এবং এর বাস্তুতন্ত্র গরম - আপনাকে খারাপভাবে পোড়াতে যথেষ্ট!

যখন আমি গণিতে শিক্ষকের সহকারী ছিলাম, আমাকে যে অ-স্পষ্ট পরামর্শ বলেছিল তা হ'ল কোনও শিক্ষার্থীকে না বলা যে কিছু "সহজ"। পিছনে পিছনে কারণটি কিছুটা সুস্পষ্ট ছিল: আপনি যদি লোকদেরকে কিছু সহজ বলে দেন তবে যে কেউ সমাধানটি দেখতে পান না সে বোকা বোধ করতে পারে (আরও বেশি) বোকা বোধ করতে পারে কারণ তারা কেবল সমস্যাটি সমাধান করার উপায় পায় না, তবে সমস্যাটিও সমাধান করে তারা বুঝতে খুব বোকা একটি সহজ এক!

পাইথন / জ্যাঙ্গো থেকে আগত লোকদের কেবল বিরক্ত করবেন না এমন গ্যাটাচগুলি রয়েছে, আপনি যদি কিছু পরিবর্তন করেন তবে অবিলম্বে উত্সটি পুনরায় লোড করে দেয়। নোড.জেএস এর সাথে, ডিফল্ট আচরণটি হ'ল আপনি যদি একটি পরিবর্তন করেন তবে পুরানো সংস্করণটি সময় শেষ না হওয়া অবধি বা আপনি নিজে সার্ভারটি থামানো এবং পুনরায় চালু না করা অবধি সক্রিয় থাকবে। এই অনুপযুক্ত আচরণটি পাইথনিস্টাসকে কেবল বিরক্ত করে না; এটি নেটিভ নোড.জে ব্যবহারকারীদের বিরক্ত করে যারা বিভিন্ন কাজের সুযোগ দেয় ar এই লেখার সময় স্ট্যাকওভারফ্লো প্রশ্ন "নোড.জেএস-এ ফাইলগুলির স্বয়ংক্রিয় পুনরায় লোড" রয়েছে, 200 টিরও বেশি upvotes এবং 19 টি উত্তর; একটি সম্পাদনা ব্যবহারকারীকে আয়া স্ক্রিপ্ট, নোড-সুপারভাইজার, হোমপেজে সহ নির্দেশ দেয় http://tinyurl.com/reactjs-node-supervisor এ নির্দেশ দেয়। এই সমস্যাটি নতুন ব্যবহারকারীদের বোকা বোধ করার দুর্দান্ত সুযোগ দিয়েছিল কারণ তারা ভেবেছিল যে তারা সমস্যাটি ঠিক করে দিয়েছে তবে পুরানো, বগী আচরণ সম্পূর্ণ অপরিবর্তিত। এবং সার্ভারটি বাউন করা ভুলে যাওয়া সহজ; আমি একাধিকবার করেছি। এবং আমি যে বার্তাটি দিতে চাই তা হ'ল, "না, আপনি বোকা নন কারণ নোড.জেসের এই আচরণটি আপনার পিছনে কামড় দেয়; এটি ঠিক যে নোড.জেএস এর ডিজাইনাররা এখানে উপযুক্ত আচরণের কোনও কারণ দেখেনি। এটি মোকাবেলা করার চেষ্টা করুন, সম্ভবত নোড-তত্ত্বাবধায়ক বা অন্য কোনও সমাধান থেকে কিছুটা সাহায্য নিয়েছেন তবে দয়া করে বোকা বোধ করে দূরে থাকবেন না। আপনি সমস্যাটি এক নন; সমস্যাটি নোড.জেএস এর ডিফল্ট আচরণে।

এই বিভাগটি, কিছু বিতর্ক করার পরে, অবিকল রেখে দেওয়া হয়েছিল কারণ আমি "এটি সহজ" এর কোনও ধারণা দিতে চাই না। কাজ করার মতো জিনিস পেতে গিয়ে আমি বারবার আমার হাত কেটেছি এবং আমি অসুবিধাগুলি কাটিয়ে উঠতে চাই না এবং আপনাকে বিশ্বাস করতে চাই না যে নোড.জেএস এবং এর বাস্তুতন্ত্রকে ভালভাবে কাজ করা সহজতর বিষয় এবং যদি এটি আপনার পক্ষেও সোজা না হয় if আপনি জানেন না আপনি কি করছেন। আপনি যদি নোড.জেএস ব্যবহার করে অযথা অসুবিধা না পান তবে এটি দুর্দান্ত। যদি আপনি তা করেন তবে আমি আশা করব যে আপনি এই বোধ থেকে দূরে সরে যাবেন না, "আমি বোকা me আমার কিছু নিশ্চয়ই আছে” " আপনি বোকা নন যদি আপনি নোড.জেএস এর সাথে কদর্য আশ্চর্যজনক আচরণ করেন এটি আপনি না! এটি নোড.জেএস এবং এর বাস্তুতন্ত্র!

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

অন্য একটি ডাটাবেস যা নিখুঁত ফিটের মতো বলে মনে হয়েছিল এবং এটি এখনও পুনরুদ্ধারযোগ্য হতে পারে, এটি HTML5 কী-মান স্টোরের একটি সার্ভার-সাইড বাস্তবায়ন implementation এই পদ্ধতির একটি এপিআই এর মূল সুবিধা রয়েছে যা বেশিরভাগ ভাল ফ্রন্ট-এন্ড বিকাশকারীরা যথেষ্ট ভালভাবে বুঝতে পারে। এই বিষয়টির জন্য, এটি এমন একটি এপিআইও যা বেশিরভাগ ক্ষেত্রেই ভাল-ফ্রন্ট-এন্ড বিকাশকারীরা যথেষ্ট ভাল বুঝতে পারে। তবে নোড-লোকালস্টোরেজ প্যাকেজটির সাথে অভিধান-সিনট্যাক্স অ্যাক্সেসের প্রস্তাব দেওয়া হয়নি (আপনি লোকালস্টোরেজ.সেটটাইম (কী, মান) বা লোকালস্টোরেজ.জেট আইটেম (কী) ব্যবহার করতে চান, লোকালস্টোরেজ [কী]) নয়, সম্পূর্ণ লোকাল স্টোরেজ শব্দার্থক প্রয়োগ করা হয়েছে , একটি ডিফল্ট 5MB কোটা সহ - কেন? সার্ভার-সাইড জাভাস্ক্রিপ্ট বিকাশকারীদের কী তাদের নিজের থেকে সুরক্ষিত করা দরকার?

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

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

if (typeof localStorage === 'undefined' || localStorage === null)
  {      
  var LocalStorage = require('node-localstorage').LocalStorage;
  localStorage = new LocalStorage(__dirname + '/localStorage',
    Infinity);
  }

ক্রমে দুটি মন্তব্য অদলবদল:

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

সম্ভবত অন্য কেউ এই শব্দগুলিকে একটি চ্যালেঞ্জ হিসাবে গ্রহণ করতে পারে এবং ক্রকফোর্ডের নেতৃত্ব অনুসরণ করতে পারে এবং নোড.জেএস এবং এর বাস্তুতন্ত্রের জন্য "ভাল অংশগুলি" এবং / অথবা "আরও ভাল অংশগুলি" লিখতে পারে। আমি একটি কপি কিনতে হবে!

এবং সমস্ত প্রকল্পে উত্সাহ এবং নিবিড় পরিশ্রমের ডিগ্রি প্রদত্ত হওয়ার পরে, এই লেখার সময় তৈরি হওয়া অপরিণত বাস্তুসংস্থান সম্পর্কে কোনও মন্তব্যকে তীব্রভাবে মেজাজ করার জন্য এটি এক বা দুই বা তিন বা তিন বছরে সুসংহত হতে পারে। এটি পাঁচ বছরের মধ্যে সত্যিই বোঝার অর্থ হতে পারে, "2015 নোড.জেএস বাস্তুতন্ত্রের বেশ কয়েকটি খনি ক্ষেত্র ছিল। 2020 নোড.জেএস বাস্তুতন্ত্রের একাধিক প্যারাডাইজ রয়েছে ”


9

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

এর প্রধান বিক্রয় বিন্দু এটি ফ্রন্ট-এন্ডারদের সাধারণ বিভাজনের চেয়ে ব্যাক-এন্ড স্টাফের জন্য দায়িত্ব নিতে দেয়। আর একটি ন্যায়সঙ্গত বিক্রয় কেন্দ্র হ'ল যদি আপনার কর্মিবৃন্দ জাভাস্ক্রিপ্ট দিয়ে ওরিয়েন্টেড হয়।

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

বিশেষত, যখন আপনার অ্যাপ্লিকেশনটির সিঙ্ক্রোনাস প্রবাহ সঞ্চালনের প্রয়োজন হয়, আপনি অর্ধ-বেকড সমাধানের উপর দিয়ে রক্তপাত শুরু করেন যা আপনার বিকাশের প্রক্রিয়ার ক্ষেত্রে আপনাকে যথেষ্ট ধীর করে দেয়। আপনার অ্যাপ্লিকেশনে যদি গণনার নিবিড় অংশ থাকে তবে সাবধানতা অবলম্বন (কেবল) নোড.জেএস দিয়ে চলুন আমি যখন মূলত নোড.জেএস ব্যবহার করেছি বা এটি লিখেছিলাম তখন তার তুলনায় সম্ভবত http://koajs.com বা অন্যান্য অভিনবত্বগুলি মূলত কাঁটাযুক্ত দিকগুলি হ্রাস করে।


3
নোড.জেএস অ্যাপ্লিকেশনগুলিকে স্কেলিংয়ের জন্য প্রচুর বিদ্যমান পন্থা রয়েছে এবং আপনি "অর্ধ-বেকড সমাধান", "ভয়ানক হ্যাকস" এবং "ভয়ঙ্কর এপিআই" দাবি সম্পর্কিত কোনও রেফারেন্স সরবরাহ করেন না বলে মনে হয়। মনের প্রসার ঘটছে তাদের উপর?
সোভেন স্লোটওয়েগ

আমি এটি পাঠকের কাছে অনুশীলন হিসাবে রেখেছি, তবে প্রবাহ নিয়ন্ত্রণের তথাকথিত সমাধানগুলি দেখার পক্ষে এটি যথেষ্ট।
ম্যাটানস্টার

2
এটি আসলে কোনও উত্তর নয়। আপনি দাবি করেন যে বিদ্যমান সমাধানগুলি "ভয়ঙ্কর হ্যাকস", তবুও সেগুলির কোনও উল্লেখ করতে ব্যর্থ। আপনি কি বিবেচনা করেছেন যে আপনি সম্ভবত নোড.জেএস অ্যাপ্লিকেশনগুলির স্কেলিংয়ের সঠিক পদ্ধতিগুলি বুঝতে বা সচেতন হতে পারেন না?
সোভেন স্লোটওয়েগ

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

-2

আমি যেখানে এবং কেন নোড জেএস ব্যবহার করতে পারি তার কয়েকটি পয়েন্ট শেয়ার করতে পারি।

  1. আড্ডার মতো রিয়েলটাইম অ্যাপ্লিকেশনগুলির জন্য, সহযোগী সম্পাদনার আরও ভাল আমরা নোডেজের সাথে যেতে পারি কারণ এটি ইভেন্টের ভিত্তি যেখানে সার্ভারের ক্লায়েন্টদের ফায়ার ইভেন্ট এবং ডেটা।
  2. এটি জাভাস্ক্রিপ্ট ভিত্তি হিসাবে সহজ এবং সহজেই বোঝা যায় যেখানে বেশিরভাগ লোকের ধারণা।
  3. বর্তমান ওয়েব অ্যাপ্লিকেশনগুলির বেশিরভাগটি কৌণিক জেএস এবং ব্যাকবোনটির দিকে যাচ্ছে নোডের সাথে ক্লায়েন্টের সাইড কোডের সাথে যোগাযোগ করা সহজ কারণ উভয়ই জসন ডেটা ব্যবহার করবে।
  4. প্রচুর প্লাগইন উপলব্ধ।

অপূর্ণতা: -

  1. নোড বেশিরভাগ ডাটাবেসকে সমর্থন করবে তবে সবচেয়ে ভাল মঙ্গডব যা জটিল যোগদান এবং অন্যান্যদের সমর্থন করবে না।
  2. সংকলন ত্রুটিগুলি ... বিকাশকারীর প্রতিটি ব্যতিক্রম হ্যান্ডেল করা উচিত যদি কোনও ত্রুটিযুক্ত অ্যাপ্লিকেশন কাজ করা বন্ধ করে দেয় যেখানে আবার আমাদের যেতে হবে এবং ম্যানুয়ালি এটি শুরু করতে হবে বা কোনও অটোমেশন সরঞ্জাম ব্যবহার করা উচিত।

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


-3
  1. নোড দ্রুত প্রোটোটাইপগুলির জন্য দুর্দান্ত তবে আমি এটিকে জটিল কোনও কিছুর জন্য আবার কখনও ব্যবহার করব না। আমি 20 বছর একটি সংকলকের সাথে সম্পর্কের বিকাশে কাটিয়েছি এবং আমি অবশ্যই এটি মিস করেছি।

  2. আপনি কিছুক্ষণ পরিদর্শন করেননি এমন কোড বজায় রাখার জন্য নোড বিশেষভাবে বেদনাদায়ক। টাইপ তথ্য এবং সংকলনের সময় ত্রুটি সনাক্তকরণ হ'ল ভাল জিনিস। কেন সব ছুঁড়ে? কি জন্য? এবং ডাং, যখন কিছু দক্ষিণে যায় তখন স্ট্যাকটি প্রায়শই সম্পূর্ণ অকেজো হয়ে যায়।


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

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

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