我一直在玩 Seneca 微服务和 feathersjs。两者都有一定程度的相似之处。我尝试了塞内卡和羽毛的例子。羽毛几乎没有什么优点,比如
- 简单而漂亮的 CLI 生成器
- 挂钩
- 很好的文档。
缺点是它与 Express 结合使用。它应该像塞内卡一样独立。
下面是使用 Seneca 的简单示例代码。它在不同的端口上运行,似乎所有服务都是相互独立的。塞内卡更像是独立的。我还在 git Ramanujan上找到了一个很棒的存储库。
我想知道两者的优缺点。比较两者真的很糟糕,但我的目标是使用其中一个来制作 API。
所以我很困惑选择哪一个。
服务器.js
seneca.add({cmd: 'config'}, function (msg, done) {
var config = {rate: 0.23}
var value = config[msg.prop]
done(null, {value: value})
})
// local rates
seneca.add({cmd: 'salestax', country: 'US'}, function (msg, done) {
var state = {
'NY': 0.04,
'CA': 0.0625
// ...
}
var rate = state[msg.state]
var total = msg.net * (1 + rate)
done(null, {total: total})
})
.listen({"type": "http", "port": 10101});
// categories
seneca.add({ cmd: 'salestax', country: 'IE' }, function (msg, done) {
var category = {
'top': 0.23,
'reduced': 0.135
// ...
}
var rate = category[msg.category]
var total = msg.net * (1 + rate)
done(null, { total: total })
})
.listen({"type": "http", "port": 10102});
//normal
seneca.add({cmd: 'salestax'}, function (msg, done) {
seneca.act({cmd: 'config', prop: 'rate'}, function (err, result) {
var rate = parseFloat(result.value)
var total = msg.net * (1 + rate)
done(null, {total: total})
})
})
.listen({"type": "http", "port": 10103});
客户端.js
require('seneca')()
.client( {port: 10101} )
.client( {port: 10102} )
.client( {port: 10103} )
.ready( function () {
this.act('cmd:salestax,net:100,country:IE,category:reduced', function (err, result) {
console.log('IE: ' + result.total)
})
this.act('cmd:salestax,net:100,country:US,state:NY', function (err, result) {
console.log('US,NY: ' + result.total)
})
this.act('cmd:salestax,net:100,country:DE', function (err, result) {
console.log('DE: ' + result.total)
})
this.act('cmd:salestax,net:100', function (err, result) {
console.log(result.total)
})
})