并行的RPC框架_PHP教程
Jul 20, 2016 am 10:58 AM
Yar(yet another RPC framework, 教主问我为啥都是Ya打头, 呵呵, 因为这样名字好起)是我在3个多月前, 为了解决一个实际的问题, 而开发的一个PHP扩展的, RPC框架, 和现有的RPC框架(xml-rpc, soap)不同, 这是一个轻量级的框架, 支持多种打包协议(msgpack, json, php), 并且最重要的一个特点是, 它是可并行化的..
考虑如下的场景:
传统的Web应用, 一个进程, 一个请求, 天经地义. 然而, 当一个请求的处理中, 涉及到多出数据源, 并且他们之间具有一定的不依赖性.
还是传统的Web应用, 一个应用随着业务快速增长, 开发人员的流转, 就会慢慢的进入一个恶性循环, 代码量上只有加法没有了减法. 因为随着系统变复杂, 牵一发就会动全局, 而新来的维护者, 对原有的体系并没有那么多时间给他让他全面掌握. 即使有这么多时间, 要想掌握以前那么多的维护者的思维的结合, 也不是一件容易的事情…
那么, 长次以往, 这个系统将会越来越不可维护…. 到一个大型应用进入这个恶性循环, 那么等待他的只有重构了.
那么, 能不能对这个系统做解耦呢?
我们已经做了很多解耦了, 数据, 中间件, 业务, 逻辑, 等等, 各种分层. 但到Web应用这块, 还能怎么分呢, MVC我们已经做过了….
基于此, Yar或许能解决你遇到的这俩个问题…
Yar是一个非常轻量级的RPC框架, 我在实现Yar的时候, 追求了极致的轻量级, 它使用非常简单, 对于Server端:
<ol class="dp-c"> <li class="alt"><span><span><?php </span></span></span></li> <li> <span class="keyword">class</span><span> API { </span> </li> <li class="alt"> <span> </span><span class="comment">/** </span> </li> <li><span><span class="comment">* the doc info will be generated automatically into service info page. </span> </span></li> <li class="alt"><span><span class="comment">* @params </span> </span></li> <li><span><span class="comment">* @return </span> </span></li> <li class="alt"><span><span class="comment">*/</span><span> </span></span></li> <li> <span> </span><span class="keyword">public</span><span> </span><span class="keyword">function</span><span> api(</span><span class="vars">$parameter</span><span>, </span><span class="vars">$option</span><span> = </span><span class="string">"foo"</span><span>) { </span> </li> <li class="alt"><span> } </span></li> <li><span> </span></li> <li class="alt"> <span> </span><span class="keyword">protected</span><span> </span><span class="keyword">function</span><span> client_can_not_see() { </span> </li> <li><span> } </span></li> <li class="alt"><span>} </span></li> <li><span> </span></li> <li class="alt"> <span class="vars">$service</span><span> = </span><span class="keyword">new</span><span> Yar_Server(</span><span class="keyword">new</span><span> API()); </span> </li> <li> <span class="vars">$service</span><span>->handle(); </span> </li> <li class="alt"><span>?> </span></li> </ol>
和Soap使用方法很相像吧? 是的, 就这样, 你的API类就可以对外提供服务了..
Yar为了方便开发, 把文档和接口绑定到了一起, 对于上面的例子, 如果我们是简单的GET请求这个接口地址的话, 我们就会看到如下的信息页面:

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment évaluer la rentabilité du support commercial des frameworks Java

Comment les options légères des frameworks PHP affectent-elles les performances des applications ?

Bonnes pratiques en matière de documentation du framework Golang

Comment choisir le meilleur framework Golang pour différents scénarios d'application

Comment la courbe d'apprentissage des frameworks PHP se compare-t-elle à celle d'autres frameworks de langage ?

Comparaison des performances des frameworks Java

Explication pratique détaillée du développement du framework Golang : questions et réponses

Comparaison des performances du framework Golang : mesures pour faire des choix judicieux
