Bahasa Inggris | 简体中文
Ⅰ. Pengenalan zfoo
- Sangat cepat, asinkron, desain aktor, bebas kunci, kerangka kerja RPC universal, dukungan asli GraalVM
- Skalabilitas tinggi, Penerapan server tunggal, penerapan layanan mikro, penerapan cluster, penerapan gateway
- Dapat digunakan sebagai kerangka server game atau kerangka server situs web
- protokol zfoo mendukung C++ Rust Java/Kotlin/Scala JavaScript/TypeScript/ES C# Go Php Ruby Lua GDScript Python Dart Swift
Proses pengembangan kerja sempurna, solusi online lengkap
- Proyek musim semi, proyek terdistribusi, proyek kontainer, kode pembaruan panas tanpa hotswap waktu henti
- Konfigurasi Excel json csv secara otomatis dipetakan dan diuraikan, Penyimpanan konfigurasi hotswap online
- Kerangka kerja pemetaan otomatis untuk orm MongoDB
- Acara bus acara
- Penjadwal penjadwalan tugas waktu
- CPU, memori, hard disk, pemantauan jaringan dibangun ke dalam program tanpa kode dan alat tambahan yang memerlukan monitor
Ⅱ. Siapa yang menggunakan proyek ini
- Proyek dengan persyaratan kinerja sangat tinggi, seperti kerangka situs web dan server game, server tunggal, server global, obrolan langsung, sistem IM, push real-time
- Proyek seperti penghematan, pengembangan, penerapan, biaya operasi dan pemeliharaan
- Sebagai infrastruktur backend untuk Godot, Unity, Cocos, Webgl, H5 , protokol jaringan mendukung tcp udp websocket http
- Tetap Sederhana dan Bodoh, konfigurasi sederhana, kode ringan
Ⅲ. Ketergantungan Maven
- Persyaratan lingkungan JDK 17+ , mendukung OpenJDK , Oracle JDK , dan GraalVM asli
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>boot</artifactId>
<version>4.0.0</version>
</dependency>
- Jika Anda tidak ingin bergantung pada semua modul zfoo, Anda hanya perlu memilih untuk bergantung pada salah satunya
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>protocol</artifactId>
<version>4.0.0</version>
</dependency>
Ⅳ. Tutorial
- zfoo SDK dari csharp dan lua untuk kesatuan dan godot
- zfoo SDK ketikan javascript cocos web h5
- zfoo SDK gdscript untuk godot
- tank-game-server Game online 《The Fight of Tanks》, ramah pemula, tingkat kesulitan 2 bintang
- burung godot burung dan burung, didukung oleh godot
- FAQ,Ada tampilan demo standar dan instruksi di folder pengujian setiap direktori proyek, yang dapat dijalankan secara langsung
Ⅴ. Penggunaan
1. serialisasi dan deserialisasi kinerja tertinggi protokol
// 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. Kerangka kerja RPC kinerja tertinggi bersih, mendukung 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. kode pembaruan panas hotswap, tidak perlu menghentikan server, tidak ada konfigurasi tambahan, cukup satu baris kode untuk memulai pembaruan panas
// Pass in the class file that needs to be updated
HotSwapUtils.hotswapClass(bytes);
4. orm kerangka pemetaan otomatis berdasarkan 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. acara menggunakan pola desain pengamat, memisahkan modul yang berbeda dan meningkatkan kualitas kode
// 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. Kerangka penjadwalan penjadwal Berdasarkan Ekspresi Cron
@Scheduler(cron = "0/1 * * * * ?")
public void cronSchedulerPerSecond() {
// do something
}
7. penyimpanan Excel ke kerangka pemetaan otomatis kelas, Anda hanya perlu menentukan kelas yang sesuai dengan Excel, dan langsung mengurai Excel
@Storage
public class StudentResource {
@Id
private int id;
@Index
private String name;
private int age;
}
Ⅵ. Melakukan spesifikasi?
- Orang-orang yang menyukai proyek ini dipersilakan untuk memelihara proyek ini bersama-sama, dan memperhatikan spesifikasi berikut saat mengirimkan kode
- Format kode menggunakan format default IntelliJ Idea
- konvensional-changelog-metahub
Ⅶ. Lisensi
zfoo menggunakan Lisensi Apache Versi 2.0