OTP简介
OTP是Open Telecom Platform(开放电信平台)。但是现在OTP比你想的作用更多。
它是一个应用程序操作系统,包含了一组库和实现方式,可以构建大规模、容错和分布式的应用程序。标准的Erlang分发套装包含OTP库。 OTP包含了许多强大的工具,例如一个完整的Web服务器,一个FTP服务器和一个CORBA ORB等,它们全都是用Erlang编写的。
OTP还包含了构建电信应用程序的最先进工具,能够实现 H248、SNMP和ASN.1/Erlang交叉编译器(这些是电信行业里常用的协议)。
核心概念是OTP行为。该行为封装了常见的行为模式,你可以把它看作是一个用回调函数作为参数的应用程序框架。 OTP的威力来自于行为本身就能提供容错性、可扩展性和动态代码升级等属性。 简单地说,行为负责解决问题的非函数部分,而回调函数负责解决函数部分。
这么做的好处在于问题的非函数部分(比如如何进行实时代码升级)对所有应用程序都是一样的,而函数部分 (由回调函数提供)在每个问题里都是不同的。
从一个简单的服务器入手,了解gen_server模块,然后一步步改进它,直到实现gen_server模块的完整功能。
Server 1:基本的服务器
%% API
-export([start/2, rpc/2]).
start(Name, Mod) ->
register(Name, spawn(fun() -> loop(Name, Mod, Mod:init()) end)).
rpc(Name, Request) ->
Name ! {self(), Request},
receive
{Name, Response} -> Response
end.
loop(Name, Mod, State) ->
receive
{From, Request} ->
{Response, State1} = Mod:handle(Request, State),
From