From 477e9864c4117c7e99418c53759dfeca1ce301f6 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Fri, 25 Nov 2016 09:32:43 +0800 Subject: [PATCH] --- doc/Redkale开发手册.doc | Bin 0 -> 283136 bytes index.html | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 doc/Redkale开发手册.doc diff --git a/doc/Redkale开发手册.doc b/doc/Redkale开发手册.doc new file mode 100644 index 0000000000000000000000000000000000000000..e97329f4ad86d4ad824db0a4dcb691d96301ee0e GIT binary patch literal 283136 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 z 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 V%kpBk+8zXLIsgCP|GP)vKLG4`i$4GW literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 652ee3d64..bb7fb5054 100644 --- a/index.html +++ b/index.html @@ -32,13 +32,13 @@         2、提供HTTP服务,同时内置JSON功能与限时缓存功能
        3、TCP层完全使用NIO.2,并统一TCP与UDP的接口
        4、提供分布式与集中式部署的无缝切换
-         5、提供类似JPA功能,并包含数据缓存自动同步与简洁的数据层操作接口
-         6、可以动态修改已依赖注入的资源
+         5、提供类似JPA功能,包含数据缓存自动同步、分表分库与简洁的数据层操作接口
+         6、支持依赖注入的资源的动态修改

设计理念

-

        作为一个全新的微服务框架,不仅是使用了Java 8的新语法,更多是设计上与主流框架有所不同。Redkale是按组件形式设计的,而非以容器为主,几乎每个子包都是能提供独立功能的组件。如Tomcat是按容器设计的,所有web资源/配置由Tomcat控制,开发者很能难控制到Tomcat内部,而Redkale的HTTP服务只是个组件,开发者既可以自己启动和配置HttpServer,也可以把Redkale当成容器通过Redkale进程来初始化服务。Spring的Ioc容器也是如此,Redkale提供的依赖注入仅通过ResouceFactory一个类来控制,非常轻量,而且也可以动态更改已注入的资源。Spring提倡控制反转思想,偏偏自身的容器却让开发者很难控制。Redkale是一个既能以组件形式也能以容器形式存在的框架。从整体上看,Redkale的架构分两层:接口和默认实现。若开发者不想使用Redkale内置的HTTP服务而使用符合JavaEE规范的HttpServlet, 可以采用自定义协议基于JSR 340(Servlet 3.1)来实现自己的HTTP服务;若开发者想使用Hibernate作为数据库操作,可以写一个自己的DataSource实现类;JSON的序列化和反序列化也可以使用第三方的实现;Memcached或Redis也可以作为另一个CacheSource的实现替换Redkale的默认实现。这其实包含了控制反转的思想,让框架里的零件可以让开发者控制。
-         与主流框架比,功能上Redkale显得很简单,这也是Redkale的一个特点并非不足,从一个良好的设计习惯或架构上来看,有些常用功能是不需要提供的,比如Redkale的HTTP服务不支持HTTPS和JSP,HTTPS比HTTP多了一层加密解密,这种密集的数字计算不是Java的专长,同时一个稍好的提供HTTP服务的架构不会将Java动态服务器放在最前端,通常前面会放nginx或apache,除了负载均衡还能静动分离,既然Java服务器前面有C写的服务器,那么HTTPS的加解密就应该交给前面的服务器处理。Redkale再提供HTTPS服务就显得鸡肋。JSP其实算是一个落后的技术,现在是一个多样化终端的时代,终端不只局限于桌面程序和PC浏览器,还有原生App、混合式App、微信端、移动H5、提供第三方接口等各种形式的终端,这些都不是JSP能兼顾的,而HTTP+JSON作为通用性接口可以避免重复开发,模版引擎的功能加上各种强大的JS框架足以取代JSP(如果初级程序员还花大量时间去学习基于JSP的Struts或Spring MVC框架,就有点跟不上时代了)。Redkale在功能上做了筛选,不会只因为迎合主流而提供,而是以良好的设计思想为指导。这也是Redkale一个很重要的思维。

+

        作为一个全新的微服务框架,Redkale在接口定义上使用了Java 8大量的新语法,接口有默认实现、接口带静态方法、重复注解等特性,同时在设计上与主流框架有很大不同。Redkale是按组件形式设计的,而非以容器为主,几乎每个子包都是能提供独立功能的组件。如Tomcat是按容器设计的,所有web资源/配置由Tomcat控制,开发者很能难控制到Tomcat内部,而Redkale的HTTP服务只是个组件,开发者既可以自己启动和配置HttpServer,也可以把Redkale当成容器通过Redkale进程来初始化服务。Spring的Ioc容器也是如此,Redkale提供的依赖注入仅通过ResouceFactory一个类来控制,非常轻量,并且可动态更改已注入的资源。Spring提倡控制反转思想,而自身的容器却让开发者很难控制。Redkale是一个既能以组件形式也能以容器形式存在的框架。从整体上看,Redkale的架构分两层:接口和默认实现。开发者若想替换掉Redkale内置的HTTP服务而使用符合JavaEE规范的HttpServlet, 可以采用自定义协议基于JSR 340(Servlet 3.1)来实现自己的HTTP服务;若想使用Hibernate作为数据库操作,可以写一个自己的DataSource实现类;JSON的序列化和反序列化也可以使用第三方的实现;Memcached或Redis也可以作为另一个CacheSource的实现替换Redkale的默认实现。这其实包含了控制反转的思想,让框架里的各个组件均可让开发者控制。
+         与主流框架比,功能上Redkale显得很简单,这也是Redkale的一个特点并非不足,从一个良好的设计习惯或架构上来看,有些常用功能是不需要提供的,如Redkale的HTTP服务不支持HTTPS和JSP,HTTPS比HTTP多了一层加密解密,这种密集的数字计算不是Java的专长,通常提供HTTP服务的架构不会将Java动态服务器放在最前端,而是在前方会放nginx或apache,除了负载均衡还能静动分离,因此HTTPS的加解密应交给nginx这样的高性能服务器处理。Redkale再提供HTTPS服务就显得鸡肋。JSP其实算是一个落后的技术,现在是一个多样化终端的时代,终端不只局限于桌面程序和PC浏览器,还有原生App、混合式App、微信端、移动H5、提供第三方接口等各种形式的终端,这些都不是JSP能兼顾的,而HTTP+JSON作为通用性接口可以避免重复开发,模版引擎的功能加上各种强大的JS框架足以取代JSP。Redkale在功能上做了筛选,不会只因为迎合主流而提供,而是以良好的设计思想为指导。这也是Redkale一个很重要的思维。

@@ -48,18 +48,18 @@

-

        Redkale 的HTTP是基于异步NIO.2实现的,HttpRequest的输入与HttpResponse的输出均是异步操作,HttpRequest直接提供JSON参数的获取和文件上传操作,HttpResponse提供数据对象和文件的数据,同时集成了REST ,因此并不遵循JSR 340规范(Servlet 3.1)且也没有实现JSP规范。 HTTP Server只提供四个对象:HttpContext、HttpRequest、HttpResponse、HttpServlet。 传统Session则由数据层实现。Redkale提倡HTTP+JSON接口(无论网站、PC客户端、APP移动端、第三方接口都可使用统一接口), 因此HTTP层内置了JSON序列化与反序列化接口,同时内置HTTP缓存机制。
+

        Redkale 的HTTP是基于异步NIO.2实现的,HttpRequest的输入与HttpResponse的输出均是异步操作,HttpRequest内置JSON参数的获取和文件上传功能,HttpResponse提供数据对象和文件的数据,同时集成了REST ,因此并不遵循JSR 340规范(Servlet 3.1)且也没有实现JSP规范。 HTTP Server只提供四个对象:HttpContext、HttpRequest、HttpResponse、HttpServlet。 传统Session则由数据层实现。Redkale提倡HTTP+JSON接口(网站、PC客户端、APP移动端、第三方接口均可统一接口), 故内置了JSON序列化与反序列化接口,同时内置HTTP缓存机制。
      Redkale 的WebSocket服务接口不同于JSR 340(Servlet 3.1), 除了提供基本的WebSocket功能, 还提供分布式与集中式部署, 当部署多个WebSocket进程时,通过配置文件可以实现WebSocket之间连接信息的数据同步。

-

        SNCP(Service Node Communicate Protocol)是Redkale独有的RPC协议, 主要用于进程间的数据传输。使用者通过配置文件可以轻易的将Service由本地模式变成远程模式远程模式Service使用SNCP协议与其他进程的Service通信。使用者无需对远程通信接口使用类似Mina的第三方包自行开发。SNCP是Redkale的核心功能,其微服务架构都是基于本地模式Service远程模式Service

+

        SNCP(Service Node Communicate Protocol)是Redkale独有的RPC协议, 主要用于进程间的数据传输,支持泛型和子类的数据转换。使用者通过配置文件可以轻易的将Service由本地模式变成远程模式远程模式Service使用SNCP协议与其他进程的Service通信。使用者无需对远程通信接口使用类似Mina的第三方包自行开发。SNCP是Redkale的核心功能,其微服务架构都是基于本地模式Service远程模式Service

-

        Redkale提供DataSource类对数据层进行操作,其功能类似JPA。最大程度的简化数据层的操作,免去SQL/JPQL语句的编写。同时提供过滤查询与JavaBean的结合、读写分离、数据库热切换、本地/远程部署、进程间缓存自动同步等功能。

+

        Redkale提供DataSource类对数据层进行操作,其功能类似JPA。最大程度的简化数据层的操作,免去SQL/JPQL语句的编写。同时提供过滤查询与JavaBean的结合、读写分离、数据库热切换、本地/远程部署、数据分库分表、进程间缓存自动同步等功能。

Java 源码

        Github 源码    https://github.com/redkale