- Trong quá trình phát triển một ứng dụng điều khiển từ xa có độ trễ siêu thấp cho pair programming từ xa, họ đã chọn Tauri làm framework ứng dụng
- Lý do lựa chọn gồm hiệu năng, hiệu quả bộ nhớ, hỗ trợ sidecar, v.v.
- Với backend dựa trên Rust + WebView hệ thống, kích thước ứng dụng và mức sử dụng bộ nhớ nhỏ hơn rất nhiều so với Electron
- Khoảng cách tính năng trong Tauri v2 cũng đang nhanh chóng được thu hẹp, với các tính năng cốt lõi như tự động cập nhật, sidecar đã được tích hợp sẵn
- Electron vẫn rất mạnh, nhưng với những yêu cầu đặc thù của Hopp thì Tauri phù hợp hơn
Vì sao Hopp chọn Tauri
Bối cảnh: chọn framework ứng dụng đa nền tảng
- Hopp cần một ứng dụng desktop hiệu năng cao hoạt động giống nhau trên Windows, macOS và Linux
- Electron và Tauri là hai lựa chọn tiêu biểu, và mỗi bên đều có ưu và nhược điểm rõ ràng
- Nhóm Hopp đưa ra lựa chọn với khả năng bảo trì dài hạn và hiệu năng là ưu tiên hàng đầu
Tauri vs. Electron: khác biệt về kiến trúc
-
Cấu trúc Electron
- Cần bao gồm runtime Node.js → làm tăng dung lượng ứng dụng
- Mỗi cửa sổ dùng một tiến trình renderer riêng biệt (engine Chromium) → tiêu tốn nhiều bộ nhớ
- Việc tích hợp sâu với hệ thống cần có tiến trình riêng
-
Tóm tắt cấu trúc Tauri
- Backend là binary native dựa trên Rust → không cần runtime riêng
- Sử dụng WebView hệ thống (Windows: WebView2, macOS: WKWebView, Linux: WebKitGTK)
- Hiệu quả bộ nhớ tốt hơn theo số lượng cửa sổ, nhưng cần quản lý vấn đề không đồng nhất giữa các engine trình duyệt
So sánh các tính năng cốt lõi
- Thời gian khởi động của cả Tauri và Electron đều khá nhanh, khác biệt thực tế không lớn
- Về mức sử dụng bộ nhớ, Tauri thấp hơn rất nhiều
- Tauri dùng khoảng 172MB bộ nhớ
- Trong khi Electron ở mức khoảng 409MB, tức tiêu thụ nhiều hơn gần gấp đôi
- Xét về engine render
- Tauri dùng WebView tích hợp trong hệ điều hành nên ứng dụng nhỏ gọn và nhẹ hơn
- Electron đóng gói trực tiếp engine Chromium vào ứng dụng, nên dùng nhiều tài nguyên hơn
- Về ngôn ngữ backend
- Tauri dùng Rust, cho phép viết mã native hiệu năng cao
- Electron dựa trên JavaScript(Node.js), quen thuộc với lập trình viên web nhưng hiệu năng tương đối thấp hơn
- Về thời gian build ban đầu
- Tauri có bước biên dịch Rust nên build ban đầu chậm hơn
- Electron dựa trên JS nên build ban đầu nhanh hơn
- So sánh dung lượng ứng dụng
- Tauri chỉ khoảng 8.6MiB, rất nhẹ
- Electron khoảng 244MiB, tức lớn hơn khoảng 28 lần
Những lý do mang tính quyết định khiến Hopp chọn Tauri
-
1. Backend Rust hiệu năng cao
- Cần triển khai streaming video độ trễ siêu thấp dựa trên WebRTC
- Với Electron phải chạy thêm tiến trình riêng, còn Tauri có thể triển khai trực tiếp trong backend Rust
-
2. Hỗ trợ tiến trình Sidecar
- Tách phần streaming và xử lý input thành các binary riêng biệt để quản lý
- Tauri hỗ trợ sidecar chính thức → dễ quản lý vòng đời và giao tiếp
- Trong tương lai, họ cũng đang cân nhắc mở rộng sang Tauri egui để render con trỏ
-
3. Hỗ trợ tính năng đang phát triển rất nhanh
- Tauri v2 tích hợp sẵn các tính năng cốt lõi như tự động cập nhật
- Dù còn non trẻ hơn Electron, nhưng tầm nhìn lấy bảo mật và hiệu năng làm trung tâm của nó phù hợp với Hopp
Kết luận: framework nào tốt hơn?
- Cả Electron và Tauri đều là những framework ứng dụng desktop xuất sắc
- Việc lựa chọn có thể thay đổi tùy theo tính chất dự án
- Electron: phát triển nhanh, thân thiện với JS, hệ sinh thái rộng
- Tauri: nhỏ hơn, nhẹ hơn, nhanh hơn và tối ưu cho hiệu năng dựa trên Rust
- Hopp đã chọn Tauri vì cần một stack công nghệ lấy hiệu năng làm trung tâm và cấu trúc tiến trình tách biệt
6 bình luận
Tôi đang dùng webui. Dung lượng cũng nhỏ và phụ thuộc vào runtime ít hơn rất nhiều.
Sẽ hay hơn nếu so sánh thêm cả Wails.
Tôi lại thấy theo hướng ngược lại: trong đa số trường hợp thì Electron là đủ dùng.
Có lẽ vì tôi vẫn còn ấn tượng không mấy tốt về trải nghiệm giao tiếp giữa back-end và front-end của Tauri thời kỳ đầu...
Mình nghĩ sự khác biệt về engine trình duyệt là một vấn đề lớn, nhưng nếu xét đến việc hỗ trợ cả di động thì cũng thấy nó không quá lớn.
Nếu vấn đề dung lượng ứng dụng là lớn thì rõ ràng cứ chọn Tauri là đúng rồi.
Có lẽ tôi nên thử dùng để xem đây có phải là lựa chọn phù hợp về dung lượng, bộ nhớ và sidecar hay không! Cảm ơn vì phần giới thiệu.