# Rust Framework Research Notes **Started**: 2026-02-14 **Status**: In Progress --- ## Actix Web - Initial Notes ### Performance - Known for being one of the fastest web frameworks - Uses actor model for request handling - Good concurrency characteristics ### Architecture - Based on Actix actor framework - Actor model can be complex but powerful - Extractors system for request processing ### Ecosystem - actix-web: Core web framework - actix-cors: CORS middleware - actix-web-httpauth: Authentication - actix-rt: Runtime (based on Tokio) - actix-multipart: File uploads - actix-files: Static files ### Authentication - actix-web-httpauth: HTTP auth headers - actix-web-actors: WebSocket support - Need to research JWT middleware options ### Database - Diesel ORM has actix support - Can use any async database driver - Connection pooling typically with deadpool or r2d2 --- ## Axum - Initial Notes ### Performance - Also very fast, comparable to Actix - Built on Tokio async runtime - Tower-based middleware ### Architecture - Router-based, no actor model - Extractors for request data (similar concept to Actix) - State management via extensions ### Ecosystem (Tower) - tower: Core middleware abstractions - tower-http: HTTP-specific middleware - tower-compat: Compatibility layer - axum-extra: Additional extractors and utilities - axum-client-ip: IP extraction - axum-server: Server implementation ### Authentication - tower-auth: Authentication services - tower-oauth: OAuth support - axum-extra: JWT extractors - Need to verify JWT middleware quality ### Database - Works with any async database driver - sqlx: Popular SQL toolkit - sea-orm: Async ORM - mongodb: Official async driver --- ## Key Differences to Investigate ### 1. Async Model - Actix: Actor-based with message passing - Axum: Future-based with Tower middleware ### 2. Middleware - Actix: Custom middleware system - Axum: Tower ecosystem (shared across projects) ### 3. Routing - Actix: Macro-based routing - Axum: Builder pattern routing ### 4. State Management - Actix: Application state - Axum: Extension layers ### 5. WebSocket - Actix: Built-in via actix-web-actors - Axum: Via axum-extra/tower-websocket --- ## Research Log ### 2026-02-14 - Created research framework and questions - Identified key decision criteria for Normogen - Listed research tasks and sources --- ## Questions Requiring Answers 1. **Performance**: Is there a significant performance difference? 2. **Middleware**: Is Tower middleware mature enough for production? 3. **MongoDB**: Which framework integrates better with MongoDB? 4. **Authentication**: What are the JWT middleware options? 5. **WebSocket**: Which implementation is more stable? 6. **Learning Curve**: How complex is Actix's actor model? 7. **Ecosystem**: Which has better third-party crate support? 8. **Testing**: How do testing approaches compare? 9. **Error Handling**: Which is more ergonomic? 10. **Community**: Which is more active and responsive? --- ## Experiences to Look For - Production deployments in healthcare/medical field - Real-time data processing applications - Large-scale API deployments - Projects with WebSocket requirements - Projects with MongoDB - Projects with complex authentication --- ## External Research Needed 1. **Performance Benchmarks** - TechEmpower Framework Benchmarks - Custom benchmarks for JSON APIs - Memory usage comparisons - WebSocket throughput 2. **Community Feedback** - Reddit r/rust discussions - Rust Discord server - Stack Overflow trends - GitHub issue analysis 3. **Security Analysis** - CVE search for both frameworks - Security audit results - Memory safety guarantees - Reports of vulnerabilities 4. **Case Studies** - Companies using Actix in production - Companies using Axum in production - Migration stories (Actix → Axum or vice versa) - Framework comparison blog posts