yar(yet another rpc framework, 教主问我为啥都是ya打头, 呵呵, 因为这样名字好起)是我在3个多月前, 为了解决一个实际的问题, 而开发的一个php扩展的, rpc框架, 和现有的rpc框架(xml-rpc, soap)不同, 这是一个轻量级的框架, 支持多种打包协议(msgpack, json, php), 并且最重要的一个特点是, 它是可并行化的..
考虑如下的场景:
传统的Web应用, 一个进程, 一个请求, 天经地义. 然而, 当一个请求的处理中, 涉及到多出数据源, 并且他们之间具有一定的不依赖性.
还是传统的Web应用, 一个应用随着业务快速增长, 开发人员的流转, 就会慢慢的进入一个恶性循环, 代码量上只有加法没有了减法. 因为随着系统变复杂, 牵一发就会动全局, 而新来的维护者, 对原有的体系并没有那么多时间给他让他全面掌握. 即使有这么多时间, 要想掌握以前那么多的维护者的思维的结合, 也不是一件容易的事情…
那么, 长次以往, 这个系统将会越来越不可维护…. 到一个大型应用进入这个恶性循环, 那么等待他的只有重构了.
那么, 能不能对这个系统做解耦呢?
飞蛙微分销商城系统(FeiWa WeiShop)是一款面向单店铺多用户微商城分销系统,基于目前最流行的WEB2.0的架构,使用php+mysql开发框架,系统全面导入整合最流行的三级分销机制。开发团队拥有成熟、稳定的微电商技术解决方案,是为了快速简化企业微商城应用开发、帮助微商企业快速赚钱而诞生的。
0
我们已经做了很多解耦了, 数据, 中间件, 业务, 逻辑, 等等, 各种分层. 但到Web应用这块, 还能怎么分呢, MVC我们已经做过了….
基于此, Yar或许能解决你遇到的这俩个问题…
Yar是一个非常轻量级的RPC框架, 我在实现Yar的时候, 追求了极致的轻量级, 它使用非常简单, 对于Server端:
<ol class="dp-c"><li class="alt"><span><span><?php </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请求这个接口地址的话, 我们就会看到如下的信息页面:
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号