Englisch | 简体中文
Ⅰ. Einführung von zfoo
- Extrem schnell, asynchron, Akteurdesign, sperrenfrei, universelles RPC-Framework, native GraalVM-Unterstützung
- Hohe Skalierbarkeit, Einzelserverbereitstellung, Microservice-Bereitstellung, Cluster-Bereitstellung, Gateway-Bereitstellung
- Kann als Gameserver-Framework oder Website-Server-Framework verwendet werden
- Das zfoo-Protokoll unterstützt C++ Rust Java/Kotlin/Scala JavaScript/TypeScript/ES C# Go PHP Ruby Lua GDScript Python Dart Swift
Perfekter Arbeitsentwicklungsprozess, komplette Online-Lösung
- Spring-Projekte, verteilte Projekte, Container-Projekte, Hot-Update-Code ohne Ausfallzeit- Hotswap
- Die Excel JSON CSV-Konfiguration wird automatisch zugeordnet und analysiert, Online-Hotswap- Konfigurationsspeicher
- Automapping-Framework für MongoDB orm
- Event-Bus-Event
- Zeitplaner für die Zeitplanung von Aufgaben
- CPU-, Speicher-, Festplatten- und Netzwerküberwachung im Programm integriert, kein Code und zusätzliche Tools erforderlich
Ⅱ. Wer nutzt dieses Projekt?
- Projekte mit extrem hohen Leistungsanforderungen, wie Website- und Gameserver-Frameworks, Einzelserver, globaler Server, Live-Chat, IM-System, Echtzeit-Push
- Projekte wie Spar-, Entwicklungs-, Bereitstellungs-, Betriebs- und Wartungskosten
- Als Backend-Infrastruktur für Godot, Unity, Cocos, Webgl und H5 unterstützt das Netzwerkprotokoll TCP, UDP, WebSocket und HTTP
- Halten Sie es einfach und dumm, einfache Konfiguration, leichter Code
Ⅲ. Maven-Abhängigkeit
- Umgebungsanforderung JDK 17+ , Unterstützung von OpenJDK , Oracle JDK und nativer GraalVM
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>boot</artifactId>
<version>4.0.0</version>
</dependency>
- Wenn Sie nicht auf alle zfoo-Module angewiesen sein möchten, müssen Sie sich nur für die Abhängigkeit von einem davon entscheiden
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>protocol</artifactId>
<version>4.0.0</version>
</dependency>
Ⅳ. Tutorials
- Zfoo SDK von Csharp und Lua für Unity und Godot
- Zfoo SDK Typoskript Javascript Cocos Web H5
- Zfoo SDK GDScript für Godot
- Tank-Game-Server Online-Spiel „The Fight of Tanks“, für Anfänger geeignet, Schwierigkeitsgrad 2 Sterne
- Godot-Vogel Vogel und Vogel, powered by Godot
- FAQ,Im Testordner jedes Projektverzeichnisses gibt es eine Standard-Demoanzeige und Anweisungen, die direkt ausgeführt werden können
Ⅴ. Verwendung
1. Protokoll mit höchster Leistung bei der Serialisierung und Deserialisierung
// 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. Net Ultimate Performance RPC Framework, unterstützt 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. Hot-Update-Code per Hotswap austauschen, kein Stoppen des Servers erforderlich, keine zusätzliche Konfiguration, nur eine Codezeile zum Starten des Hot-Updates
// Pass in the class file that needs to be updated
HotSwapUtils.hotswapClass(bytes);
4. Orm-Framework für automatisches Mapping basierend auf 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);
5. Event nutzt das Beobachter-Entwurfsmuster, entkoppelt verschiedene Module und verbessert die Qualität des Codes
// 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. Scheduler-Scheduling-Framework basierend auf Cron-Ausdruck
@Scheduler(cron = "0/1 * * * * ?")
public void cronSchedulerPerSecond() {
// do something
}
7. Speichern Sie das Framework für die automatische Zuordnung von Excel zu Klassen. Sie müssen lediglich eine Klasse definieren, die Excel entspricht, und Excel direkt analysieren
@Storage
public class StudentResource {
@Id
private int id;
@Index
private String name;
private int age;
}
Ⅵ. Commit-Spezifikation?
- Personen, denen dieses Projekt gefällt, sind herzlich eingeladen, dieses Projekt gemeinsam zu pflegen und beim Einreichen des Codes die folgenden Spezifikationen zu beachten
- Die Codeformate verwenden die Standardformatierung von IntelliJ Idea
- konventioneller Changelog-Metahub
Ⅶ. Lizenz
zfoo verwendet die Apache-Lizenz Version 2.0