风信子RainHyacinth框架介绍
每个开发人员都有一个架构师的梦,这个是我的第一个着手写的框架,我希望能够在这里与各位网友一起分享我的想法,并希望能够借此机会跟大家一起进步。
IKernelManager是风信子项目总的核心接口,这个接口提供了内核的各种服务以及程序的对外入口。所以,我们就从这个接口来谈谈它的架构设计。
既然IKernelManager是框架的核心,所以我们先看下IKernelManager到底有哪些东西:
1 /// <summary> 2 /// 当前运行时 3 /// </summary> 4 /// <returns></returns> 5 IRainRuntime CurrentRuntime(); 6 7 /// <summary> 8 /// 当前上下文 9 /// </summary> 10 /// <returns></returns> 11 IRainWorkContext CurrentContext(); 12 /// <summary> 13 /// 本机缓存 14 /// </summary> 15 ICacheService Cache { get; } 16 /// <summary> 17 /// 本机缓存依赖 18 /// </summary> 19 ICacheDependencyService CacheDependency { get; } 20 21 /// <summary> 22 /// 分布式缓存 23 /// </summary> 24 IDistributedCacheService DistributedCache { get; } 25 /// <summary> 26 /// 依赖注入器 27 /// </summary> 28 IDependencyInjectHub DependencyInjectHub { get; } 29 30 /// <summary> 31 /// 日志 32 /// </summary> 33 ILogManagerService LogManager { get; } 34 35 /// <summary> 36 /// 初始化装载 37 /// </summary> 38 void InitLoad(); 39 /// <summary> 40 /// 开始请求 41 /// </summary> 42 /// <param name="workContext"></param> 43 void Begin_Request(IRainWorkContext workContext); 44 /// <summary> 45 /// 结束请求 46 /// </summary> 47 /// <param name="workContext"></param> 48 void End_Request(IRainWorkContext workContext);
从接口中可以看到,IKernelManager提供了几个服务:
---IRainRuntime 运行时
运行时托管着当前请求的处理对象,用于监听整个请求处理过程
---IRainWorkContext 框架上下文
上下文存储着客户端一个请求过来的数据信息,知道当前请求结束,上下文对象才会被释放掉
---ICacheService 本地缓存服务
一个将数据缓存在本机上的缓存服务
---ICacheDependencyService 缓存依赖服务
文件的缓存会依赖文件内容的变动而时时更新缓存
---IDistributedCacheService 分布式缓存服务
分布式缓存提供了项目负载部署时多台服务器之间的数据共享机制
---IDependencyInjectHub 依赖注入服务
使用Autofac注入框架,项目面向接口开发
---ILogManagerService 日志服务
日志服务框架,程序运行过程中可用于记录信息
接下来,我们来看下风信子框架的结构设计图
IKernelManager框架的设计理念是,基础服务以一种垂直的方式来派生。当有新的服务需要增加时,只要扩展改接口,增加新的服务,就可以在框架中调用你想要的接口。
而每个接口内部,有着自己不同的实现处理机制,如:
IDependencyInjectHub 接口,具体哪些实现需要调用到依赖注入的东西,这个是由外部决定的,这里只是提供了一个服务调用的入口而已。