[从零开始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. shiro进行散列算法操作

    shiro最闪亮的四大特征:认证,权限,加密,会话管理 为了提高应用系统的安全性,这里主要关注shiro提供的 […]...

  2. python学习笔记-Pycharm远程连接服务器的Python虚拟环境(Virtualenv)

    Virtualenv可以作为一个独立的Python虚拟环境工具,并能够建立多个相互独立,互不影响的Python […]...

  3. 一半人写不出冒泡排序,你的同龄人都躺下了

    今天这篇不是正经的吹水文,属于有感而发吧。 前段时间在知乎上回答了一个问题“计算机学院的学生该怎样提高自己的编 […]...

  4. python高阶函数的使用

    目录 python高阶函数的使用 1、map 2、reduce 3、filter 4、sorted 5、小结 […]...

  5. 痞子衡嵌入式:同一厂商不同系列Flash型号下Dummy Cycle设置方法可能有差异 (以IS25LP064为例)

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是同一厂商不同系列Flash型号下Dummy […]...

  6. 矢量的叉积和点积计算

    矢量的叉积和点积计算 标量(Scalar,标量是只有模没有方向的量,即距离)。 矢量(Vector,也称为向量 […]...

  7. google经常被屏蔽的解决方法

    作为一个程序员,经常会用google搜索东西,可中国的长城太强大,整天屏蔽google,搞得我十分苦恼,以前还 […]...

  8. JavaScript的BOM、DOM操作、节点以及表格(二)

    BOM操作 一、什么是BOM BOM(Browser Object Model)即浏览器对象模型。     B […]...

展开目录

目录导航