Notes for self-education:
- The workshop is divided into days, each day containing several topics.
- For each topic, follow the instruction under chapters "Contents" and "Assignment".
- The "Contents" section instructs what to read and try in practice.
It usually contains bullets with instructions what to do for each section of the referenced documentation.
Look for the following marks:
- Read - Read the referenced documentation section, no need to implement it.
- Demonstrate - Implement the referenced example in your development environment, and test it.
- Skip - The referenced documentation section is not part of the current workshop topic.
- The "Assignment" section contains a homework assignment. Implement it in you development environment.
- The "Documentation" section is just a list of references.
- Some topics currently have incomplete documentation (see TODO tags in other files).
(3 hours lecture)
- Prerequisites for day 1 (assignment)
- What is Rhetos (theory)
- What is available on GitHub (theory)
- Development environment setup and the first application
- Rhetos DSL syntax
- Declarative programming (theory)
- Data model and relationships
- From LINQ to SQL (assignment)
Comprehension review:
- What is Rhetos / Developing generated application without Rhetos
- Build in Visual Studio: rhetos build, csc, rhetos dbupdate
- When to use the Extends and Detail; Two writes for Extended entity
- LINQ evaluation
(3 hours lecture)
- Simple business rules
- Read-only data structures
- Simple read-only entities and code tables (new)
- Domain Object Model
- Understanding the generated object model (theory)
Comprehension review:
- When to use Load or Query (Load-Save, navigation properties)
(2 hours lecture, Authentication and Authorization could be moved from day 4 to day 3 to reduce day 4)
- Filters
- Validations
- REST Web API
- Low-level database concepts
Comprehension review:
- Almost all data processing in application should be implemented in read-only data structures and filters
- Filters / When to use FilterBy, ItemFilter or ComposableFilterBy
- Filters / When not to write filters
- Data validations / Understanding data validations in Rhetos
- Low-level database concepts / Rule of thumb
- Low-level database concepts / AutoDetectSqlDependencies
- Low-level database concepts / What is a difference between SqlQueryable and SqlView?
(3 hours lecture)
- Low-level object model concepts
- When to use them (theory)
- Extending DSL - Develop a code generator (incomplete documentation)
- Extending DSL - Develop a macro concept (incomplete documentation)
- User authentication (theory)
- Authorization - Basic permissions (theory)
- Authorization - Row permissions (theory)
(3 hours lecture)
- Entity inheritance (theory)
- Event sourcing (theory)
- Business process modeling (theory, incomplete documentation)
- Computations, persisting computed data (theory, incomplete documentation)
(3 hours lecture)
- Migrating the application data when changing the database structure
- Database structure independence (theory)
- Debugging
- System Logging - NLog
- Deploying Rhetos apps
(2 hours lecture)
- Unit testing
- Implementing business logic in a separate library (theory)
- Temporal data and change history (theory)
- Reporting - TemplaterReport (theory)
- Full-text search (theory)
- Rhetos on GitHub (theory)