Inglés | 简体中文
Ⅰ. Introducción de zfoo
- Extremadamente rápido, asíncrono, diseño de actores, sin bloqueos, marco RPC universal, soporte nativo de GraalVM
- Alta escalabilidad, implementación de servidor único, implementación de microservicios, implementación de clúster, implementación de puerta de enlace
- Se puede utilizar como marco de servidor de juegos o marco de servidor de sitios web.
- El protocolo zfoo admite C++ Rust Java/Kotlin/Scala JavaScript/TypeScript/ES C# Go Php Ruby Lua GDScript Python Dart Swift
Proceso de desarrollo de trabajo perfecto, solución completa en línea.
- Proyectos Spring, proyectos distribuidos, proyectos contenedores, código de actualización en caliente sin hotswap de tiempo de inactividad
- La configuración de Excel json csv se asigna y analiza automáticamente, almacenamiento de configuración de intercambio en línea
- Marco de automatización para el formato MongoDB
- evento de autobús de eventos
- Programador de programación de tareas de tiempo
- CPU, memoria, disco duro, monitoreo de red integrado en el programa, no se requiere código ni herramientas adicionales.
Ⅱ. ¿Quién usa este proyecto?
- Proyectos con requisitos de rendimiento extremadamente altos, como marcos de servidores de juegos y sitios web, servidor único, servidor global, chat en vivo, sistema de mensajería instantánea, envío en tiempo real.
- Proyectos como ahorro, desarrollo, implementación, costos de operación y mantenimiento.
- Como infraestructura backend para Godot, Unity, Cocos, Webgl, H5 , el protocolo de red admite tcp udp websocket http
- Manténgalo simple y estúpido, configuración simple, código liviano
Ⅲ. dependencia de maven
- Requisito de entorno JDK 17+ , soporte OpenJDK , Oracle JDK y GraalVM nativo
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>boot</artifactId>
<version>4.0.0</version>
</dependency>
- Si no desea depender de todos los módulos de zfoo, solo necesita elegir depender de uno de ellos.
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>protocol</artifactId>
<version>4.0.0</version>
</dependency>
Ⅳ. Tutoriales
- zfoo sdk de csharp y lua para unity y godot
- zfoo sdk mecanografiado javascript cocos web h5
- zfoo sdk gdscript para godot
- tank-game-server Juego en línea《The Fight of Tanks》, apto para principiantes, dificultad 2 estrellas
- godot-bird pájaro y pájaro, impulsado por godot
- Preguntas frecuentes: hay una demostración estándar e instrucciones en la carpeta de prueba de cada directorio de proyecto, que se pueden ejecutar directamente
Ⅴ. Uso
1. Serialización y deserialización del máximo rendimiento del protocolo
// zfoo protocol registration, can only be initialized once
ProtocolManager.initProtocol(Set.of(ComplexObject.class, ObjectA.class, ObjectB.class));
// serialization
ProtocolManager.write(byteBuf, complexObject);
// deserialization
var packet = ProtocolManager.read(byteBuf);
2. Marco RPC de máximo rendimiento neto, compatible con tcp udp websocket http
// Service provider, only need to add an annotation to the method, the interface will be automatically registered
@PacketReceiver
public void atUserInfoAsk(Session session, UserInfoAsk ask) {
}
// Consumers, synchronously requesting remote service, will block the current thread
var userInfoAsk = UserInfoAsk.valueOf(userId);
var answer = NetContext.getCosumer().syncAsk(userInfoAsk, UserInfoAnswer.class, userId).packet();
// Consumers, asynchronously requesting remote service, and will still execute logic in the current thread after the asynchronous
NetContext.getCosumer()
.asyncAsk(userInfoAsk, UserInfoAnswer.class, userId)
.whenComplete(sm -> {
// do something
);
3. Código de actualización en caliente hotswap, sin necesidad de detener el servidor, sin configuración adicional, solo una línea de código para iniciar la actualización en caliente
// Pass in the class file that needs to be updated
HotSwapUtils.hotswapClass(bytes);
Cuarto, marco de mapeo automático de orm basado en mongodb
// You don't need to write sql and any configuration yourself, define a table in the database directly through annotation definitions
@EntityCache
public class UserEntity implements IEntity<Long> {
@Id
private long id;
private String name;
}
// update database data
entityCaches.update(userEntity);
Cinco, el evento utiliza el patrón de diseño del observador, desacopla diferentes módulos y mejora la calidad del código.
// To receive an event, you only need to add an annotation to the method and the method will be automatically listen for the event
@EventReceiver
public void onMyNoticeEvent(MyNoticeEvent event) {
// do something
}
// fire an event
EventBus.post(MyNoticeEvent.valueOf("My event"));
6. Marco de programación del programador basado en la expresión Cron
@Scheduler(cron = "0/1 * * * * ?")
public void cronSchedulerPerSecond() {
// do something
}
Siete, almacene Excel en el marco de mapeo automático de clases, solo necesita definir una clase correspondiente a Excel y analizar Excel directamente
@Storage
public class StudentResource {
@Id
private int id;
@Index
private String name;
private int age;
}
Ⅵ. ¿Confirmar la especificación?
- Las personas a las que les gusta este proyecto pueden mantenerlo en conjunto y prestar atención a las siguientes especificaciones al enviar el código.
- Los formatos de código utilizan el formato predeterminado de IntelliJ Idea.
- metahub de registro de cambios convencional
Ⅶ. Licencia
zfoo usa la licencia Apache versión 2.0