微服务框架:MicroMono

jopen 9年前

MicroMono 可以使用整体风格编写微服务。MicroMono 是一个使用 monolithic 风格开发微服务的框架,允许你切换和混合 微服务/整体 风格,不需要修改代码。之前两者是通过 VS 连接,现在使用 micromono 可以很好的同时处理两者。

MicroMono 包括 3 部分:

  • Web 框架 (http 路由,中间件,页面渲染等等)

  • 远程方法调用 (RPC)

  • 前端代码管理 (JavaScript 和 CSS 静态资产文件)

MicroMono 包含两种类型的组件:

微服务框架:MicroMono

微服务框架:MicroMono

微服务框架:MicroMono

微服务框架:MicroMono

微服务框架:MicroMono

微服务框架:MicroMono

代码示例

定义一个服务

// Require micromono and get the Service base class  var Service = require('micromono').Service;  // Subclass Service class to define your service  // (Backbone/Ampersand style inheritance)  var SimpleHttpService = Service.extend({    // `route` is the object where you define all your routing handlers    route: {      'get::/hello/:name': function(req, res) {        // Basically, this handler function will be directly attached to        // internal express instance created by micromono. So, any express        // route handler could be ported to micromono without any modification.        var name = req.params.name;        res.send('Hello, ' + name);      }    }  });  The 'get::/hello/:name': function(req, res){...} part in above example equivalents to:  var app = express();  app.get('/hello/:name', function(req, res){    var name = req.params.name;    res.send('Hello, ' + name);  });

服务初始化

var bodyParser = require('body-parser');  var Service = require('micromono').Service;  var MongoClient = require('mongodb').MongoClient;  module.exports = Service.extend({    // initialization function takes no arguments    init: function() {      // get the internal express instance      var app = this.app;      // use a middleware      app.use(bodyParser.json());      var self = this;      // create a new promise instance      var promise = new Promise(function(resolve, reject){        // do the async operation (connect)        MongoClient.connect('127.0.0.1', function(err, db){          if (err) {            // reject the promise if there's an error            reject(err);            return;          }          self.db = db;          // resolve when done          resolve();        });      });      // init function should return a promise no matter what      return promise;    }  });

项目主页:http://www.open-open.com/lib/view/home/1442544271180