DActor
Introduction
DActor框架可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾异步代码的高并发、无阻塞和同步代码的易读性,可维护性。 基于协程思想设计 最大程度的降低阻塞,提高单个线程的处理能力,并可有效的降低线程数。
Overview
目前开发过程中的几个常见模型
同步编程 所有步骤都在一个主线程中完成,调用一个方法,等待其响应返回。
异步编程 所有步骤都可在不同线程中完成,调用一个方法,不等待响应既返回,典型交易如NodeJs。 目前市面上的异步框架都比较复杂,一般为了实现异步编程的解决方案是CallBack和Promise/Deferred模式模式。
为了保留异步的高性能,简化异步的开发模式,同时使得程序更容易被程序员理解,基于Actor协程模型,设计了此框架。
Features
1、集成Netty
2、集成HttpClient
3、集成HttpServlet
4、支持多层父子结构
5、支持责任链模式
6、J2EE支持json,csv,pdf,xml,html格式输出
7、J2EE支持数据流输出,动态文件下载、动态图片输出、跳转和可根据配置动态输出 环境要求
JDK 1.8
Spring FrameWork 4.3.22.RELEASE +
Servlet 3.0+(因为需要使用Servlet的异步功能)
注意事项
请求的完整逻辑是分散在不同的线程中执行的,所以尽量避免使用ThreadLocal
Release Note
1.0.0版本
初始化版本
Getting Started
example是J2EE程序,下载后,可直接运行,其中集成了若干例子
默认使用.do提交相关交易,但如果是.json将会返回json数据 启动后,在浏览器中输入http://localhost:8080/example/randomTxt2.json
输出的是json格式的字符串
randomTxt2:只有一级父子关系
randomTxt1:有二级父子关系 chaintest1:只使用责任链
chaintest2:同时使用责任链和一级父子关系
exceptionTest:子交易抛出错误,框架对错误的处理
httptest演示的是通过httpclient异步方式访问百度网站
访问URL:http://localhost:8080/example/ httptest.do
启动后,可在控制台看到内部调用结果
Image text
Maven dependency
<dependency>
<groupId>cn.ymotel</groupId>
<artifactId>dactor</artifactId>
<version>1.0.1</version>
</dependency>
Gradle dependency
compile group: 'cn.ymotel', name: 'dactor', version:'1.0.1'
代码简单讲解
执行过程为chain->grandfather->parent->Selft。 依次调用执行责任链中逻辑,grandfather中的逻辑,parent的逻辑和自身逻辑。 chain,grandfather,parent都可为空,不设置 在grandfather和parent中的Steps中至少有一个为placeholderActor交易,以调用子逻辑
整个过程中,需要先设置全局占位符
<actor:global id="actorglobal">
<actor:param name="beginBeanId" value="beginActor"/>
<actor:param name="endBeanId" value="endActor"/>
</actor:global>
交易中如果未填写beginBeanId或者endBeanId时,系统默认使用全局中配置的beginBeanId或者endBeanId
<actor id="randomTxt" parent="actorhttpcore" beginBeanId="randomTxtActor">
<steps>
<step fromBeanId="randomTxtActor" toBeanId="placeholderActor" conditon=""/>
<step fromBeanId="placeholderActor" toBeanId="endActor" conditon=""/>
</steps>
</actor>
condtion可为空,空字符串,或者是ognl表达式
placeholderActor的作用是在暂存当前环境,并调用子交易,待子交易执行完毕后,再恢复当前环境继续执行
如果在Step中未找到toBeanIdActor,会直接调用endBeanId方法,认为自身交易已执行结束。
交易的请求和流转信息都保存在Message中
如果指定handleException=false或者使用默认设置,直接返回父中执行,如果父中也未捕获,则继续返回上一级执行,
一般来说至少有要有一个actor中指定handleException=true 启动框架接收和执行请求
github 地址 https://github.com/allon2/dactor
分享到:
相关推荐
总的来说,这个基于Java的轻量级同步异步统一处理框架为开发者提供了一种新的并发处理方式,通过协程思想简化了异步编程,提高了代码效率和可读性。对于希望优化并发性能或处理大量并发请求的Java项目来说,这是一个...
标题“JAVA轻量级的MVC框架应用实例.7z”表明,我们将讨论的是Java环境下的轻量级MVC框架的应用实践。这里的“轻量级”通常指的是这些框架对系统资源需求较低,易于学习和使用,适合小型到中型项目。 描述中的内容...
通过研究这个轻量级Java HTTP服务器框架的源码,开发者不仅可以学习到HTTP协议的实现细节,还能深入理解Java网络编程、多线程、异步处理以及服务器架构设计。这对于提升个人技能,尤其是对于想要从事Web开发或系统...
Play Framework是一个现代的、基于异步模型的轻量级MVC框架,它使用Scala和Java编写。Play强调开发的即时反馈,提供了热重载功能,使得开发者在开发过程中无需重启服务器。此外,Play框架还支持TDD(测试驱动开发)...
标题中的“一款基于Netty+Zookeeper+Spring实现的轻量级Java RPC框架”揭示了这个项目的核心技术栈,它整合了三个在分布式系统中广泛使用的开源库:Netty、Zookeeper和Spring。让我们逐一深入探讨这三个技术以及它们...
总的来说,通过分析和学习【Java Web轻量级开发全体验】的源码,我们可以深化对Java Web开发的理解,掌握轻量级框架的使用,提升我们的开发技能和解决问题的能力。这是一个宝贵的学习资源,对于希望在Java Web领域...
标题"基于Java的轻量级的MVC框架应用实例"意味着我们将关注于那些不占用大量系统资源、易于学习和部署的框架,如Spring MVC、Struts 2或Play Framework。这些框架简化了Web开发过程,提供了诸如依赖注入、数据绑定、...
nSocket是基于java NIO.1和NIO.2开发的轻量级网络通信框架,该框架为用户提供异步非阻塞的网络编程接口。目前更新到0.1版本,实现了基本的连通性和简要的通信,在0.2版本中将增加filter chain的功能。nSocket与mina...
总结起来,基于 JDK8 实现的轻量级 Java Web 框架充分利用了新版本带来的优势,以简洁、高效的方式满足开发者的各种需求。通过学习和实践,开发者不仅可以掌握框架的使用,还能深入了解 Java 语言的新特性和最佳实践...
无锁异步化、事件驱动架构设计的_java_netty_网络编程框架;___轻量级,无需依赖任何第三方_ioGame
Java平台上的异步I/O(Asynchronous Input/Output,简称...总之,Cindy框架为Java开发者提供了一个轻量级的异步I/O解决方案,有助于提高系统的并发能力。理解并熟练运用Cindy,可以帮助你在开发高并发应用时事半功倍。
VX-API-Gateway是一款基于Java语言的Vert.x框架构建的API网关,它以其全异步、高性能、可扩展和轻量级的特性在Web应用开发领域中脱颖而出。这款API网关扮演着至关重要的角色,它作为系统对外的统一入口,负责对内部...
除此之外,还有MyBatis,一个轻量级的持久层框架,它将SQL与Java代码分离,提高了代码的可读性和可维护性。 设计模式是软件工程中的一种最佳实践,它们是解决常见问题的经过验证的解决方案。在Android和Java开发中...
Blade是一款专为JavaWeb开发设计的轻量级、高性能且简洁优雅的Web框架,它基于Java8和Netty4构建,旨在提升开发效率并提供卓越的运行性能。这款框架的特点在于其简约的设计理念,使得开发者能够快速理解和使用,同时...
Java作为广泛使用的编程语言,也提供了多种实现轻量级集群负载均衡的方案。本项目"Java 轻量级的集群负载均衡设计"旨在教授如何利用Java来构建一个高效、可扩展的负载均衡系统。以下是关于这个主题的详细知识讲解。 ...
在IT行业中,Java Web轻量级开发是一种广泛采用的技术栈,尤其在构建高效、可扩展且易于维护的Web应用程序时。本主题将深入探讨这一领域,涵盖了从基础概念到实践应用的关键知识点。 首先,理解“轻量级”一词在...
J2EE轻量级SSH架构整合是一个非常实用的开发框架组合,它不仅结合了Java Web开发的三大核心技术(Struts2、Hibernate和Spring),而且通过引入DWR等框架进一步提高了系统的响应速度和用户体验。对于企业级应用开发而言...
无锁异步化、事件驱动架构设计的 java netty 网络编程框架; 轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式; 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 通过 ioGame 你...
MyBatis则是一个轻量级的数据访问层,将SQL语句与Java代码解耦,提高了数据库操作的灵活性。 学生籍贯管理系统的核心目标是对学生的籍贯信息进行管理,包括录入、查询、修改和删除等操作。系统通常包括以下几个主要...
本资料提供了一个专门为安卓设计的轻量级SQLite ORM框架的源码,旨在帮助开发者更好地理解和应用此类框架。 SQLite ORM框架的核心功能包括: 1. **数据库创建与升级**:ORM框架会自动创建数据库和表,根据定义的...