微服務框架:MicroMono

jopen 9年前發布 | 13K 次閱讀 MicroMono 軟件架構

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.baiduhome.net/lib/view/home/1442544271180

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!