允许跨网络调用函数的现代方法
Modern ways to allow function calls across the network
将此视为对现代系统设计范例的调查:
假设我编写了一个程序来return 2 个给定数字的总和。让我们称它为 Amazing Adder.My 目标是让这个 Amazing Adder 可供其他人使用。截至 2018 年,将此 Amazing Adder 作为一项公开服务提供给世界的主流和现代方式是什么?我对后端架构更感兴趣,而不是用户界面。根据我对系统设计的了解,我可以想到:
1) 使其成为 REST 服务,但是这个用例是否非常适合 REST 范例?我将如何调用我的端点?如果我所做的只是在没有状态信息的情况下添加数字,我需要支持哪些操作(更新、删除等)?
2) 通过 http 使此正常 JSON RPC。因此,用户向 http://www.theAmazingAdder.com/add 发送一个 http POST 请求,负载为 {'number1':2,"number2":3},我的服务将 return {'sum': 3}
3) 通过 Profobuf 或 Thrift 使其成为二进制 RPC 格式。这是矫枉过正吗?客户端和服务器都必须具有的 'code definition' 是什么?
4) 传统的 Python 酸洗还是 java serialization/rmi 通过网络?这还合适吗?
我错过了任何其他流行的现代范式吗?
将此视为对现代系统设计范例的调查:
假设我编写了一个程序来return 2 个给定数字的总和。让我们称它为 Amazing Adder.My 目标是让这个 Amazing Adder 可供其他人使用。截至 2018 年,将此 Amazing Adder 作为一项公开服务提供给世界的主流和现代方式是什么?我对后端架构更感兴趣,而不是用户界面。根据我对系统设计的了解,我可以想到:
1) 使其成为 REST 服务,但是这个用例是否非常适合 REST 范例?我将如何调用我的端点?如果我所做的只是在没有状态信息的情况下添加数字,我需要支持哪些操作(更新、删除等)?
2) 通过 http 使此正常 JSON RPC。因此,用户向 http://www.theAmazingAdder.com/add 发送一个 http POST 请求,负载为 {'number1':2,"number2":3},我的服务将 return {'sum': 3}
3) 通过 Profobuf 或 Thrift 使其成为二进制 RPC 格式。这是矫枉过正吗?客户端和服务器都必须具有的 'code definition' 是什么?
4) 传统的 Python 酸洗还是 java serialization/rmi 通过网络?这还合适吗?
我错过了任何其他流行的现代范式吗?