English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
OTP est l'acronyme de Open Telecom Platform. C'est un système d'exploitation d'application et un ensemble de bibliothèques et de procédures pour construire des applications à grande échelle, tolérantes aux pannes et distribuées. Si vous voulez utiliser OTP Écrivez votre propre programme, et vous会发现 OTP 行为是非常有用的核心概念。行为封装了常见的行为模式ーー可以把它看作是一个由回调模块参数化的应用程序框架。
Les fonctionnalités puissantes d'OTP viennent de sa tolérance aux pannes, sa capacité d'échelle, la mise à jour de code dynamique, etc., qui peuvent être fournies par le comportement lui-même. Par conséquent, la première idée de base est de créer un composant serveur qui imite l'environnement de base d'OTP, regardons l'exemple suivant.
-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}, reçoit {Name, Réponse} -> Réponse end. loop(Name, Mod, State) -> reçoit {From, Request} -> {Response, State1}= Mod:handle(Request, State), From ! {Name, Response}, loop(Name, Mod, State1) end.
Pour le programme ci-dessus, il convient de noter les points suivants :
Utilisez la fonction register pour enregistrer le processus auprès du système.
Ce processus génère une fonction de boucle de traitement pour ce processus.
Maintenant, écrivons un programme client qui utilisera le programme serveur.
-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}.
Ce code exécute deux tâches. Il agit en tant que module de rappel appelé à partir du code de cadre serveur, et contient également des routines d'interface appelées par le client. La convention habituelle OTP consiste à combiner deux fonctions dans le même module.
C'est donc la manière dont le programme ci-dessus doit être exécuté-
DanserlDans, tout d'abord, exécutez la commande suivante pour exécuter le programme serveur.
server(name_server,name_server)
Vous obtiendrez le résultat suivant-
Résultat de la sortie
true
Ensuite, exécutez la commande suivante
name_server.add(erlang,”w3codebox).
Vous obtiendrez le résultat suivant-
Résultat de la sortie
Ok
Ensuite, exécutez la commande suivante-
name_server.whereis(erlang).
Vous obtiendrez le résultat suivant-
Résultat de la sortie
{ok,"w3codebox"}