English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
OTP es la abreviatura de Open Telecom Platform. Es un sistema operativo de aplicaciones y un conjunto de bibliotecas y procesos para construir aplicaciones a gran escala, tolerantes a fallos y distribuidas. Si quieres usar OTP Escribe tu propio programa y descubrirás que el comportamiento de OTP es un concepto central muy útil. El comportamiento encapsula patrones de comportamiento comunes; puede considerarse como un marco de aplicación que se parametriza con módulos de retroalimentación.
Las potentes funcionalidades de OTP vienen de sus características de tolerancia a fallos, escalabilidad, actualización de código dinámica, etc., que pueden ser proporcionadas por el comportamiento en sí mismo. Por lo tanto, el primer concepto básico es crear un componente de servidor que imita el entorno básico de OTP, veamos el siguiente ejemplo idéntico.
-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}, recibir {Name, Response} -> Response end. loop(Name, Mod, State) -> recibir {From, Request} -> {Response, State1}= Mod:handle(Request, State), De ! {Name, Response}, loop(Name, Mod, State1) end.
Con respecto al programa anterior, hay algunos puntos que destacar:
Usar la función register para registrar el proceso en el sistema.
Este proceso genera una función de bucle que maneja este proceso.
Ahora, permitemos escribir un programa de cliente que utilice el programa del 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 realiza dos tareas. Actúa como módulo de callback desde el código del marco del servidor, al mismo tiempo, contiene rutinas de interfaz que serán llamadas por el cliente. La convención común en OTP es combinar dos funciones en el mismo módulo.
Por lo tanto, este es el modo en que se debe ejecutar el programa mencionado anteriormente-
EnerlEn, primero ejecute el siguiente comando para ejecutar el programa del servidor.
server(name_server,name_server)
Obtendrá lo siguiente como salida-
Resultado de la salida
true
Luego, ejecute el siguiente comando
name_server.add(erlang,”w3codebox).
Obtendrá lo siguiente como salida-
Resultado de la salida
Ok
Luego, ejecute el siguiente comando-
name_server.whereis(erlang).
Obtendrá lo siguiente como salida-
Resultado de la salida
{ok,"w3codebox"}