erlang编程术语

恰当的中间人进程
网络请求获取文件,需要对请求进行复杂处理,得到文件请求,同时不同的协议数据不同,非常复杂,而我们只是想处理获取文件的请求,可以使用中间人进程插入到中间,它只负责把网络请求装换成文件请求,极大简化了设计

web_server(Client) ->
    receive
        {Client, {get, Page}} ->
            case file:read(Page) of
                {ok, Bin} -> Client ! {self(), {data, Bin}};
                {error, _} -> Client ! {self(), error}
            end,
            web_server(Client)
    end.

消息统一化来解决多种问题

-module(multi_server).
-export([start/0]).
start() ->
    spawn(fun() -> multi_server() end).
multi_server() ->
    receive
        {_Pid, {email, _From, _Subject, _Text} = Email} ->
            {ok, S} = file:open("mbox", [write, append]),
            io:format(S, "~p.~n", [Email]),
            file:close(S);
        {_Pid, {im, From, Text}} ->
            io:format("Msg(~s):~s~n", [From, Text]);
        {Pid, {get, File}} ->
            Pid ! {self(), file:read_file(File)};
        Any ->
            io:format("multi server got:~p~n", [Any])
    end,
    multi_server().

不需要那么多各不相同的客户端口服务器请求和响应编码,
有一种通用的格式就足够了。一切消息都使用Erlang数据类型
term_to_binary(Term)和逆函数binary_to_term(Bin)对所有请求消息和返回消息进行加密压缩和解压,让所有通信变成同一种数据格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值