CatLib入门1_路由

来源:互联网 发布:中国大数据安全 编辑:程序博客网 时间:2024/06/06 08:29

CatLib入门1_路由


  • CatLib入门1_路由
      • CatLib是什么
      • 本篇将会讲解
      • 本篇将会出现的代码
      • 打开CatLib的RoutingDemo来看一下运行流程
  • 突然有事不写了直接上张图

CatLib是什么?

CatLib 是一套渐进式的服务提供者框架。框架为客户端提供多个实现,并把他们从多个实现中解耦出来。服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性。她不仅易于上手,还便于与第三方库或既有项目整合。

本篇文章讲带你初步了解CatLib框架的路由系统如何使用,本篇文章基于CatLib0.8.4版本。不就后框架会更新到1.0版本,不过路由应该不会有什么变更。

本篇将会讲解

  • CatLib路由官方Demo
  • 引导程序的调用流程
  • 注册服务提供商的调用流程
  • 路由特性的使用
  • 路由的调度使用

本篇将会出现的代码

代码 简介 new Core.Application(this) 在项目运行最初使用,用来创建CatLib实例。 application.Bootstrap(new Type[] { typeof(Bootstraps) }).Init(); 引导程序,需要传入一个引导类的数组,引导类须继承IBootstrap接口并实现它的方法,用于引导注册服务提供商,它会调用每一个传入的类的Bootstrap()方法,Init()方法会调用每一个注册的服务提供商的Init()方法。 App.Instance.Register(typeof(RoutingProvider)); 注册服务提供商,它会构造一个服务,这一句是构造了一个路由服务,服务类需继承自ServiceProvider类。构造完成后它会调用服务的Register()方法。 App.On(ApplicationEvents.OnStartComplete, (sender, e) =>{}); 注册事件,第一个参数是事件名称,第二个参数是事件。当调用App.Trigger(ApplicationEvents.OnStartComplete);的时候就会所有该事件挂载的方法。 IRouter router = App.Make(); 构造服务,这里构造了路由服务。构造了这个服务后 我们就可以使用这个服务提供的方法。 router.Dispatch(“attr-routing-simple/call”); 调度路由,它会调用这个路由名称指定的方法。 router.Reg(“attr-routing/hand”, typeof(AttrRouting), “RegRoute”); 手动指向路由,第一参数为路由名称(路径),第二个参数是指定某个类,第三个参数是这个类下的方法名称。 当调度”attr-routing/hand”这个路由时,就会调用到AttrRouting类下的RegRoute()方法。 router.Reg(“callback-routing”, (request, response) =>{Debug.Log(“this is call”);}); 手动指向类路由,基于回调的路由。 第一个参数是路由名称(路径),第二个参数是方法。 当调度”callback-routing”时,会调用第二个参数里的方法。 router.Group(() => { /* do something */ }, “group-name-2”); 路由组,第一个参数是路由组要执行的方法,第二个参数是路由组的名字。

打开CatLib的RoutingDemo来看一下运行流程。

    /**     * 这个类是入口类用于启动框架      */    public class Program : UnityEngine.MonoBehaviour    {        public void Awake()        {            var application = new Application(this);            application.OnFindType((type) =>            {                return Type.GetType(type);            });            application.Bootstrap(new Type[] { typeof(Bootstraps) }).Init();        }    }    /**     * 这个类提供了当前demo演示时用到的组件      */    public class Bootstraps : IBootstrap    {        public void Bootstrap()        {            App.Instance.Register(typeof(RoutingProvider));            App.Instance.Register(typeof(RoutingDemo));        }    }

这里是这个Demo的入口,

  • 在Program类中的Awake()构建了一个CatLib实例,
  • 传入了一个查找类型的方法(暂时用不到,本篇不讲解。)
  • 启动引导程序 并调用了Init()初始化方法。

Bootstraps是引导类,引导类必须继承IBootstrap接口。
引导程序会调用Bootstraps类中的Bootstrap()方法。
在Bootstrap()方法中

  • 注册了路由服务
  • 注册了演示Demo用的服务

当服务注册完时,会调用它的Register()方法,当框架初始化时会按顺序依次调用服务的Init()方法,当框架初始化完毕时,会触发ApplicationEvents.OnStartComplete事件。

当注册路由服务时,Register()方法会进行

突然有事,不写了。直接上张图。流程图

原创粉丝点击