[从零开始node微服务一]Seneca框架简介

QinGG2016 2019-02-24 原文

[从零开始node微服务一]Seneca框架简介

# 来自官方的定义。
>Seneca is a toolkit for writing microservices and organizing the business logic of your app.
>Seneca是一个用于编写微服务和组织应用程序业务逻辑的工具包。
# 主要关注点。
Seneca的主要功能点都体现在它的插件中。可以说Seneca框架本身并不包含任何用于开发的功能点,在你执行完npm install seneca之后,除了seneca本身,它自带的三个内置核心插件也被安装了进来。这三个分别是:
1. **basic插件**
Seneca运行基础,提供以模式匹配的方式建立接口到实现的连接。为了解释清楚这个插件,请看下面两段代码:
第一段代码:
“` javascript
const seneca = require(‘seneca’)();

seneca.add({ role: ‘math’, cmd: ‘add’ }, (msg, reply) => {
reply(null, { answer: msg.left + msg.right })
})

seneca.act({ role: ‘math’, cmd: ‘add’, left: 1, right: 1 }, (err, result) => {
if (err) return console.log(err);
console.log(result);
})
“`
第一行中的add()函数是在Seneca中注册一个action,add()函数的第一个参数是该action的pattern,第二个参数是该action的定义。第二行中的act()函数作用是发送msg给Seneca中注册的action,第一个参数是msg本身,第二个参数是执行完action的回调。接收到的msg会和所有action中的pattern进行匹配,Seneca会选择一个有最相近的匹配的action执行。action的第一参数msg则是通过act()发送的msg。
如果在控制台运行这段代码会在控制台打印出{answer:2}。
第二段代码:
“` javascript
const seneca = require(‘seneca’)();

seneca.add({ role: ‘math’ }, (msg, reply) => {
reply(null, { result: “匹配到{role:’math’}” })
})

seneca.add({ a: 2 }, (msg, reply) => {
reply(null, { result: “匹配到{a:2}” })
})

seneca.add({ cmd: ‘add’, a: 2 }, (msg, reply) => {
reply(null, { result: “匹配到{ cmd: ‘add’, a: 2}” })
})

seneca.act({ role: ‘math’, cmd: ‘add’, a: 2, left: 1, right: 1 }, (err, result) => {
if (err) return console.log(err);
console.log(result);
})
“`
之前有说到Seneca的最相近匹配原则,那什么叫做最相近呢?如果执行上面这段代码,如果在控制台运行这段代码会在控制台打印出{result:’匹配到{cmd:\’add\’,a:2}’}。看起来似乎是从右往左寻找最长匹配项。
2. **web插件**
提供web api路由功能,将http request通过解析url路由到Seneca action。
3. **transport插件**
提供两个远程Seneca端之间基于http和tcp的通信通道。
 
# 写在最后
文章结束的时候,我们已经知道如何借助Seneca的basic插件实现控制反转。下一篇文章将介绍如何将api发布成web api。
[GitHub-senecajs/seneca](https://github.com/senecajs/seneca)
发表于 2019-02-24 14:18 不止是吃饭 阅读() 评论() 编辑 收藏

 

版权声明:本文为QinGG2016原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/QinGG2016/p/10426080.html

[从零开始node微服务一]Seneca框架简介的更多相关文章

  1. [从零开始node微服务一]Seneca框架简介

    [从零开始node微服务一]Seneca框架简介 来自官方的定义。 Seneca is a toolkit f […]...

随机推荐

  1. vue&Angular&React的优缺点 – H海涛

    一、Vue.js:      其实Vue.js不是一个框架,因为它只聚焦视图层,是一个构建数据驱动的Web界面 […]...

  2. windows添加“以管理员身份运行” – eryoung2

    windows添加“以管理员身份运行” 以前每次装机后,都会百度这对代码,现在还是记录一下吧,不然也麻烦。 方 […]...

  3. CSS 火焰?不在话下

    正文从下面开始。 今天的小技巧是使用纯 CSS 生成火焰,逼真一点的火焰。 嗯,长什么样子?在 CodePen […]...

  4. python引用和对象详解

    python引用和对象详解 @[马克飞象] python中变量名和对象是分离的 例子 1: a = 1 这是一 […]...

  5. 你有哪些相见恨晚的Chrome 扩展?

    「Chrome 没插件,香味少一半」,本期我们就来一起盘点一下chrome上那些相见恨晚的扩展。 1 JSON […]...

  6. MP3 ID3信息编辑器(附源码)

    练习WPF时写的编辑MP3 ID3信息的小工具,方便对歌曲的统一管理,同时增加了调用豆瓣音乐API获取专辑信息 […]...

  7. SVN客户端(TortoiseSVN)保存密码自动登录后,如何切换使用其它帐户登录方法

    清除SVN客户端(TortoiseSVN)保存的认证信息(用户名和密码) 1、选择TortoiseSVN […]...

  8. SystemTap 工作原理 – rivsidn

    SystemTap 工作原理 《systemtap原理及使用》 https://www.cnblogs.com […]...

展开目录

目录导航