सिनात्रा और रेल दोनों वेब ढांचे हैं। वे सामान्य वेब विकास abstractions प्रदान करते हैं, जैसे रूटिंग, टेम्पलेटिंग, फ़ाइल सेवारत, आदि
node.js बहुत अलग है। इसके मूल पर, node.js एक घटना-उन्मुख मानक लाइब्रेरी के साथ V8 और ईवेंट लाइब्रेरी का संयोजन है। रुडी के लिए EventMachine की तुलना में node.js बेहतर है।
उदाहरण के लिए, यहाँ एक घटना के आधार पर HTTP सर्वर है, EventMachine का उपयोग कर:
require 'eventmachine'
require 'evma_httpserver'
class MyHttpServer < EM::Connection
include EM::HttpServer
def post_init
super
no_environment_strings
end
def process_http_request
response = EM::DelegatedHttpResponse.new(self)
response.status = 200
response.content_type 'text/plain'
response.content = 'Hello world'
response.send_response
end
end
EM.run{
EM.start_server '0.0.0.0', 8080, MyHttpServer
}
और यहाँ एक Node.js उदाहरण है:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello world');
}).listen(8000);
इस दृष्टिकोण का लाभ यह है कि सर्वर नहीं करता है प्रत्येक अनुरोध पर अवरुद्ध नहीं है (उन्हें समानांतर में संसाधित किया जा सकता है)!
node.js का पूरा standard library built around the concept of events है जिसका अर्थ यह है कि यह I/O बाध्य किसी भी समस्या के लिए बेहतर है। एक अच्छा उदाहरण chat application होगा।
सिनात्रा और रेल दोनों बहुत परिष्कृत, स्थिर और लोकप्रिय वेब ढांचे हैं। node.js में कुछ वेब ढांचे हैं लेकिन उनमें से कोई भी इस समय के किसी भी गुणवत्ता की गुणवत्ता पर नहीं है।
विकल्पों में से, यदि मुझे अधिक स्थिर वेब एप्लिकेशन की आवश्यकता है, तो मैं सिनात्रा या रेल के लिए जाऊंगा। अगर मुझे कुछ अधिक स्केलेबल और/या विविधता की आवश्यकता है, तो मैं node.js
के लिए जाना चाहूंगा