Skip to content
TIGERB edited this page May 21, 2017 · 2 revisions

通过用户访问的url信息,通过路由规则执行目标控制器类的的成员方法。我在这里把路由大致分成了四类:

传统路由

domain/index.php?module=Demo&contoller=Index&action=test&username=test

pathinfo路由

domain/demo/index/modelExample

用户自定义路由

// 定义在config/moduleName/route.php文件中,这个的this指向RouterHandle实例
$this->get('v1/user/info', function (Framework\App $app) {
    return 'Hello Get Router';
});

微单体路由

我在这里详细说下这里所谓的微单体路由,面向SOA和微服务架构大行其道的今天,有很多的团队都在向服务化迈进,但是服务化过程中很多问题的复杂度都是指数级的增长,例如分布式的事务,服务部署,跨服务问题追踪等等。这导致对于小的团队从单体架构走向服务架构难免困难重重,所以有人提出来了微单体架构,按照我的理解就是在一个单体架构的SOA过程,我们把微服务中的的各个服务还是以模块的方式放在同一个单体中,比如:

app
├── UserService     [用户服务模块]
├── ContentService  [内容服务模块]
├── OrderService    [订单服务模块]
├── CartService     [购物车服务模块]
├── PayService      [支付服务模块]
├── GoodsService    [商品服务模块]
└── CustomService   [客服服务模块]

如上,我们简单的在一个单体里构建了各个服务模块,但是这些模块怎么通信呢?如下:

App::$app->get('demo/index/hello', [
    'user' => 'TIGERB'
]);

通过上面的方式我们就可以松耦合的方式进行单体下各个模块的通信和依赖了。与此同时,业务的发展是难以预估的,未来当我们向SOA的架构迁移时,很简单,我们只需要把以往的模块独立成各个项目,然后把App实例get方法的实现转变为RPC或者REST的策略即可,我们可以通过配置文件去调整对应的策略或者把自己的,第三方的实现注册进去即可。

Clone this wiki locally