English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
OTP é a abreviação de Open Telecom Platform. É um sistema operacional de aplicativo e um conjunto de bibliotecas e processos para construir aplicações em larga escala, tolerantes a falhas e distribuídas. Se você quiser usar OTP Escreva seu próprio programa e você descobrirá que o comportamento OTP é um conceito central muito útil. O comportamento encapsula padrões de comportamento comuns - pode ser visto como uma framework de aplicativo parametrizada por módulos de callback.
As poderosas funcionalidades do OTP vêm de suas características de tolerância a falhas, escalabilidade, atualização de código dinâmico, entre outras, que podem ser fornecidas pelo próprio comportamento. Portanto, o primeiro conceito básico é criar um componente de servidor que imita o ambiente básico do OTP, vamos ver o exemplo abaixo.
-module(server). -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 ! {Name, Response}, loop(Name, Mod, State1) end.
Quanto ao programa acima, é importante notar os seguintes pontos:
Usar a função register para registrar o processo no sistema.
Este processo gera uma função de loop de processamento para o próprio processo.
Agora, vamos escrever um programa cliente que utilizará o programa do servidor.
-module(name_server). -export([init/0, add/2, whereis/1, handle/2]). -import(server1, [rpc/2]). add(Name, Place) -> rpc(name_server, {add, Name, Place}). whereis(Name) -> rpc(name_server, {whereis, Name}). init() -> dict:new(). handle({add, Name, Place}, Dict) -> {ok, dict:store(Name, Place, Dict)}; handle({whereis, Name}, Dict) -> {dict:find(Name, Dict), Dict}.
Este código realmente executa duas tarefas. Ele atua como módulo de callback chamado pelo código da framework do servidor, ao mesmo tempo, ele contém rotinas de interface que serão chamadas pelo cliente. A convenção usual do OTP é combinar duas funções no mesmo módulo.
Portanto, este é o modo de execução necessário para o programa acima.-
EmerlNeste arquivo, primeiramente execute o seguinte comando para executar o programa do servidor.
server(name_server,name_server)
Você obterá a seguinte saída-
Resultado de Saída
true
Em seguida, execute o seguinte comando
name_server.add(erlang,”w3codebox).
Você obterá a seguinte saída-
Resultado de Saída
Ok
Em seguida, execute o seguinte comando-
name_server.whereis(erlang).
Você obterá a seguinte saída-
Resultado de Saída
{ok,"w3codebox"}