动态和静态生成的grpc代码有什么区别?

时间:2017-04-04 19:40:06

标签: node.js grpc

在GRPC客户端的examples中有两种类型的实现,一种是'use strict'; angular.module('myApp.orderNew', ['ngRoute']) .config(['$routeProvider', function($routeProvider) { $routeProvider.when('/order/new', { templateUrl: 'order-new/order-new.template.html', controller: 'OrderNewCtrl' }); }]) .controller('OrderNewCtrl', function($scope, $location, $http) { $scope.field = { amount: '1' }; $scope.rows = [{ product: 'Product', amount: 'Amount' }]; $scope.counter = 1; $scope.addRow = function() { $scope.rows.push({ product: 'Product', amount: 'Amount' }); $scope.counter++; } $scope.delRow = function(row) { if ($scope.rows.length < 2) { return; } $scope.rows.splice(row, 1); } $scope.cancelOrder = function() { $location.path('/orders'); } $scope.createOrder = function() { var data = $scope.fields; alert(data); //$post('/path_to_server', obj); } $http.get('orders.json').then(function(data) { $scope.orders = data; }); }); 文件在运行时加载和处理,另一种是使用.proto编译它们。

我的问题是:有什么区别?文档只是表示他们的行为相同,但肯定会有差异吗?

1 个答案:

答案 0 :(得分:4)

从根本上说,主要区别在于您提到的:动态代码生成,.proto文件在运行时加载和解析,并且通过静态代码生成,.proto文件被预处理进入JavaScript。

动态代码生成使用起来更简单,可能更容易调试,并生成接受常规JavaScript对象的代码。

静态代码生成(使用protoc)要求用户创建protobuf对象,这意味着输入验证将更早完成。它也是一种与其他语言更加一致的工作流程。