নোড.জেএস সম্পর্কে এত অনন্য কী? [বন্ধ]


48

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

তবে জাভাতে উদাহরণস্বরূপ, আমি এনআইও / এআইও (যা আমার খালি বোঝার থেকে নন-ব্লকিং এপিআইগুলি ব্যবহার করে) কেবল একটি থ্রেড তৈরি করতে পারি এবং সেই থ্রেডটি ব্যবহার করে একাধিক সংযোগগুলি পরিচালনা করতে পারি এবং ডেটা বাস্তবায়নের জন্য আমি ইভেন্ট-ভিত্তিক আর্কিটেকচার সরবরাহ করি লজিক পরিচালনা করা (কিছু কলব্যাক ইত্যাদি সরবরাহ করে কি এমন কঠিন হওয়া উচিত নয়)?

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


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

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

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

5
@ অ্যাড্রিয়ানশাম: এটি একটি স্ল্যাশডট প্রভাব, যে কোনও কিছু গ্রুপ মানসিকতার সাথে খাপ খায় না তা হ্রাস করা হবে - যেমন মাইক্রোসফ্টের / / এর প্রশংসা করার মতো।
gbjbaanb

3
হাইপটির উল্লেখ কারও না দেখে আমি অবাক হয়েছি।
ডেডালনিক্স

উত্তর:


33

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

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

প্রত্যেক গ্রন্থাগার যে কঠোর পরিশ্রম করে জনপ্রিয় পরিণত কারণ এটা সবসময় পরিকল্পনা করা হয়েছিল উপায় যে node.js, যে গ্রন্থাগার পরিকাঠামো রয়েছে রয়েছে একটি অ্যাসিঙ্ক্রোনাস এপিআই প্রদান অথবা এটি ব্যবহার করা হবে না।


18
হাঁ। অন্য কথায়: নোড.জেএস এর সর্বাধিক গুরুত্বপূর্ণ শক্তি হ'ল ECMAScript এর সবচেয়ে গুরুত্বপূর্ণ দুর্বলতা: অবিশ্বাস্যরকম কৃপণ ECMAScript স্ট্যান্ডার্ড লাইব্রেরি। যেহেতু নোড.জেএস বিকাশকারীদের যে কোনও উপায়ে প্রতিটি চাকা পুনরায় উদ্ভাবন করতে হয়েছিল, তাই তারা সঠিক উপায়ে এটি পুনর্বিবেচনার সুযোগ পেয়েছিল।
Jörg ডব্লু মিটাগ

4
ঠিক আছে, যতদূর আমি জানি যে ECMAScript সর্বদা এমবেডেড ভাষা হিসাবে নকশা করা হয়েছিল, সুতরাং কোনও ধরণের ওএস-স্তরের এপিআইয়ের প্রয়োজন নেই (এমনকি নেটওয়ার্ক আইও বেশিরভাগ বিমূর্ত ছিল)। এই অভাবটি আসলে নোড.জেএসের পক্ষে একটি সুবিধা ছিল।
জোছিম সৌর

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

1
সাধারণভাবে অ্যাড্রিয়ানশাম, ইভেন্ট চালিত প্রোগ্রামিংয়ের উদাহরণগুলি দেখুন। সুনির্দিষ্ট বাস্তবায়ন অনেক ভাষায় পাওয়া যায়। Node.js মডিউল এছাড়া, আপনি পাইথন মধ্যে পাক উদাহরণ তাকান করতে পারে, twistedmatrix.com/trac/wiki , পার্ল, মধ্যে Poe উদাহরণ poe.perl.org , এবং রুবি EventMachine রয়েছে github.com/eventmachine/eventmachine
mghicks

19

সম্ভবত এর মূল কারণটি হ'ল এটি ওয়েব সার্ভার, ওয়েব অ্যাপ্লিকেশন বা ওয়েব পরিষেবাদির মতো সার্ভার-সাইড উপাদানগুলি লিখতে জাভাস্ক্রিপ্ট ব্যবহার করে। এটি সার্ভার-পাশের ভাষার সাথে traditionalতিহ্যবাহী সম্মুখ প্রান্ত (ক্লায়েন্ট-পাশ) বিকাশের ভাষা জাভাস্ক্রিপ্টকে এক করে দেয়।

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


5
খুব কম প্রযুক্তিরই সত্যই অনন্য বৈশিষ্ট্য রয়েছে, স্বাতন্ত্র্যটি তাদের সমস্ত বৈশিষ্ট্যগুলির বিশেষ সংমিশ্রণ থেকে আসে
জে.কে.

1
সম্মত, লাইব্রেরির এখানে একটি তালিকা রয়েছে যা এটি সমস্ত বড় ভাষায় সমর্থন করে ... উইকিপিডিয়ায়
চুল্লি

10

আমি যে তিনটি প্রধান কারণ দেব তা হ'ল:

  1. নন ব্লকিং আইও / এসিনক্রোনাস আইও এটি ওয়েবে এবং আগের পোস্টারগুলিতে সর্বত্র হ্যাশ করা হয়েছে। একটি জিনিস যা আমি অবদান রাখব তা হ'ল আপনার কোডটি ডিজাইন করা সুস্পষ্টভাবে অ্যাসিক্রোনাস আচরণগুলি ধরে নিতে হার্ডওয়ারকে সর্বাধিকতর করতে সংকলক ইঞ্জিনকে সহায়তা করে। হ্যাঁ, অনেকগুলি জেআইটি সংকলক এবং হাইপারথ্রেডিং প্রসেসরগুলি সিঙ্ক্রোনাস কোড নেয় এবং কার্যকরভাবে সমান্তরালে সহায়তা করে। এটি অবশ্যই সেরা চেষ্টা করার পদ্ধতি is বিপরীতে, স্পষ্টভাবে async io এর জন্য অ্যাপ্লিকেশন তৈরি করা আপনি ইঞ্জিন এবং হার্ডওয়্যারটি আপনার কোডের জন্য কার্যকরকরণের সময়কে সর্বাধিকতর করতে পারে তা নিশ্চিত করে। স্বীকারোক্তিজনকভাবে, এটি প্রমাণ করার মতো আমার কাছে পরিমানযোগ্য ডেটা নেই, তবে এটি আমাকে এইভাবে ভাবতে অনুভব করে।

  2. ক্লায়েন্ট এবং সার্ভারের জন্য একক কোড বেস। এর বেশ কয়েকটি সুবিধা রয়েছে: সার্ভার থেকে ব্যবসায়িক যুক্তি ক্লায়েন্টে স্থানান্তর করতে সক্ষম হয়ে ডেটাসেন্টার ব্যয়গুলি অনুকূল করতে সহায়তা করুন; ব্যবসায়িক যুক্তি / ডেটা বৈধকরণ পুনরায় ব্যবহার করতে সহায়তা করুন; পণ্য সমর্থন করার জন্য বিকাশকারী দক্ষতার জটিলতা হ্রাস করুন (বনাম পাইথন এবং জাভাস্ক্রিপ্ট)।

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


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

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