Dnode ve nowjs arasındaki fark nedir?
Nasıl ikisi birbirleriyle karşılaştırmak mı?
CEVAP
TL;DR
DNode
- RMI sağlar;
- uzaktan fonksiyonları argüman olarak geri aramaları kabul edebilir;
- güzel olan, tamamen uyumsuz olduğu;
- çalışır, tek başına veya varolan bir http sunucusu üzerinden;
- tarayıcı ve Düğüm müşterileri var;
- destekler
connect
; gibi katman sadece - NowJS daha uzun civarında olmuştur.
NowJS
- sadece RMI ötesine geçer ve uygulayan bir "paylaşılan kapsam" API. It's like Dropbox tek dosyalar yerine değişkenleri ve fonksiyonları;
- uzaktan fonksiyonlarıayrıca geri aramaları kabul(thanks to Sridatta and Eric from NowJS for the clarification);
- iş dinlemekten http Sunucusu bağlıdır;
- sadece tarayıcı istemcileri olabilir;
- halkla çok yakın zamanda oldu;
- biraz şimdi adamcağız.
Sonuç
NowJS olgunlaştığında şimdi ... ama dikkat et bir oyuncak değil. İçin ciddi şeyler, belki DNode ile gitmek. Bu daha detaylı bir inceleme için kütüphaneler, birlikte okuyun.
DNode
DNode Çağırma çerçeve Uzak bir Yöntem sağlar. Hem istemci hem de sunucu birbirimizi işlevleri kullanır.
// On the server
var server = DNode(function () {
this.echo = function (message) {
console.log(message)
}
}).listen(9999)
// On the client
dnode.connect(9999, function (server) {
server.echo('Hello, world!')
})
DNode()
geçirilen işlevleri için geçirilen değil aksine bir işleyici
http.createServer
. İki parametre vardır: client
erişmek için kullanılabilir
fonksiyonları istemci ve connection
tarafından verilen işlemek için kullanılabilir
bağlantı ile ilgili olaylar:
// On the server
var server = DNode(function (client, connection) {
this.echo = function (message) {
console.log(message)
connection.on('end', function () {
console.log('The connection %s ended.', conn.id)
})
}
}).listen(9999)
Verilen yöntemlerden bir şey, fonksiyonları da dahil olmak üzere geçirilebilir. Düzgün DNode tarafından vekiller olarak tamamladı ve diğer uç noktada geri çağırdı. Bu temel: DNode tamamen uyumsuz; beklerken engellemez geri dönmek için uzaktan bir yöntem için:
// A contrived example, of course.
// On the server
var server = DNode(function (client) {
this.echo = function (message) {
console.log(message)
return 'Hello you too.'
}
}).listen(9999)
// On the client
dnode.connect(9999, function (server) {
var ret = server.echo('Hello, world!')
console.log(ret) // This won't work
})
Geri diğer yanıtları almak için etrafında geçti olmalı son nokta. Karmaşık konuşmaları oldukça hızlı okunamaz hale gelebilir. This question Bu sorun için Olası çözümler anlatılır.
// On the server
var server = DNode(function (client, callback) {
this.echo = function (message, callback) {
console.log(message)
callback('Hello you too.')
}
this.hello = function (callback) {
callback('Hello, world!')
}
}).listen(9999)
// On the client
dnode.connect(9999, function (server) {
server.echo("I can't have enough nesting with DNode!", function (response) {
console.log(response)
server.hello(function (greeting) {
console.log(greeting)
})
})
})
DNode istemci komut dosyası Düğüm bir örneği içinde çalışan olabilir ya da olabilir bir web sayfası içinde gömülü. Bu durumda, yalnızca sunucuya bağlanmak olacaktır web sayfasının sunumu. Connect Bu durumda bana çok yardımı olur. Bu senaryoda, Internet Explorer 5.5 ve 7 ile tüm modern tarayıcılar ile test edildi.
DNode bir yıldan kısa bir süre önce, Haziran 2010 tarihinde başladı. Bir Düğüm kadar olgun değil kütüphane olabilir. Benim testlerde, hiçbir belirgin sorunlar buldum.
NowJS
NowJS sevimli olmak konusunda sınırları sihirli API bir tür sağlar. Sunucu vardır
everyone.now
kapsam. everyone.now
içine koymak her şey olur
now
kendi dürbünüyle her müşteri için görünür.
Bu kod, sunucu üzerinde, her istemci ile echo
bir işlevi paylaşacak
yazar sunucu için bir konsol iletisi:
// Server-side:
everyone.now.echo = function (message) {
console.log(message)
}
// So, on the client, one can write:
now.echo('This will be printed on the server console.')
Bir sunucu tarafı" fonksiyonu çalışır this
now
bir öznitelik olacak "paylaşılan zaman
bu çağrıyı yapan istemci için geçerlidir.
// Client-side
now.receiveResponse = function (response) {
console.log('The server said: %s')
}
// We just touched "now" above and it must be synchronized
// with the server. Will things happen as we expect? Since
// the code is not multithreaded and NowJS talks through TCP,
// the synchronizing message will get to the server first.
// I still feel nervous about it, though.
now.echo('This will be printed on the server console.')
// Server-side:
everyone.now.echo = function (message) {
console.log(message)
this.now.receiveResponse('Thank you for using the "echo" service.')
}
NowJS işlevler dönüş değerleri olabilir. Onları almak için geri olmalıdır geçti:
// On the client
now.twice(10, function (r) { console.log(r) }
// On the server
everyone.now.twice = function(n) {
return 2 * n
}
Bu eğer dürüst bir argüman olarak geri geçirmek istiyorsanız bir anlam içerir (değil dönüş değeri toplamak) -- her zaman bir dönüş değeri, toplayıcı, ya da geçmelidir NowJS karışık olabilir. Geliştiriciler göre alınıyor bu şekilde örtülü bir geri dönüş değeri muhtemelen gelecekte de değişmeyecek:
// On the client
now.crunchSomeNumbers('compute-primes',
/* This will be called when our prime numbers are ready to be used. */
function (data) { /* process the data */ },
/* This will be called when the server function returns. Even if we
didn't care about our place in the queue, we'd have to add at least
an empty function. */
function (queueLength) { alert('You are number ' queueLength ' on the queue.') }
)
// On the server
everyone.now.crunchSomeNumbers = function(task, dataCallback) {
superComputer.enqueueTask(task, dataCallback)
return superComputer.queueLength
}
Ve bu NowJS API için. Aslında 3 Daha fazla işlevleri vardır
istemci bağlantı tespit etmek için kullanılır ve kopukluk. Onlar neden bilmiyorum
bu özellikler EventEmitter
ama. kullanarak ifşa etmedi
DNode aksine, NowJS istemci komut dosyası bir web tarayıcısı içinde çalışan olması gerekir. Sayfa komut dosyası içeren çalıştıran aynı Düğüm tarafından servis edilmelidir sunucu.
Sunucu tarafında, NowJS da bir http sunucu dinleme ihtiyacı var. Geçirilmelidir ne zaman başlatılıyor NowJS:
var server = http.createServer(function (req, response) {
fs.readFile(__dirname '/now-client.html', function (err, data) {
response.writeHead(200, {'Content-Type':'text/html'})
response.write(data)
response.end()
})
})
server.listen(8080)
var everyone = now.initialize(server)
NowJS ilk bir kaç hafta önce (Mart 2011) olarak yorumlanır. Gibi, onu bekliyoruz adamcağız. Bu cevap yazarken issues kendimi buldum. Onun da bekliyoruz API bir sürü değiştirmek için.
Olumlu tarafta, geliştiriciler, Eric bile bana rehberlik erişilebilir çok geri aramalar çalışmak. Kaynak kodu belgelenmiş değil, ama neyse. basit ve kısa Kullanım Kılavuzu ve örnek bir başlangıç için yeterli.
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...
@Staticmethod ve @Python classmethod a...
Match_parent ve fill_parent arasındaki...
Varchar ve nvarchar arasındaki fark ne...