Allors for Developers
Overview Problems The Allors Solution Allors Jargon Allors Platform Allors Tools Allors Application
Problems Limitations of OO languages Failure of 1 st generation OO Design Failure of 2 nd generation OO Design Failure of Binary Components (Anticipated) Failure of SOA OR mapping insufficient and too complex
Limitations of OO languages No bi-directional relations No persistency No (short/long) transaction management Static/Dynamic typing
Failure of 1 st generation OO Design (White box Inheritance) Fragile base class Complex hierarchies Class reuse but no object reuse
Failure of 2 nd generation OO Design (Delegation) Excessieve proxying Complex Compositions Object reuse but no class reuse
Failure of Binary Components No reuse of classes and/or objects Duplication Integration Version management Contract based fallacy (un)Testability
(Anticipated) Failure of SOA Functional programming Stateless services Idempotent services See Components
OR mapping insufficient and too complex Mapping overhead Performance/Scalability Transactions too complex e.g. too many states Object disconnection No transparency Schema versioning
The Allors Solution 3 rd Generation OO Multiple Type Declarations Object Persistence Rolling Transactions Disconnected Objects Domain Driven Subject Orientation Test Driven
Allors Jargon Domain Relation (Association & Role) Multiple Type Subject Population Population Adapter Allors Object Extent
Allors Platform Framework Population Adapters UI Support
Framework Metadomain Population Templates
Metadomain
MetaTypes
MetaExtensions
MetaRelations
Extent
Population Core (Population,Strategy,Session & ObjectId) Load/Save with Events Extent & Predicate Node Checkout/Checkin & Conflict Copy Diff
Core
Load/Save with Events
Extent & Predicate
Node (Root)
Node (non-Root)
Checkout
Checkin & Conflicts
Copy (intra session)
Copy (inter Session)
Template group AllorsTestTemplate; TemplateId() ::= > TemplateName() ::= > TemplateVersion() ::= > TemplateAllors() ::= > TemplateConfiguration(domain) ::= << >> domain(domain) ::= << $domain.Name$ >>
Population Adapters Memory Adapter Sql Adapter
UI Support WebObject & WebObjects WebPopulation
WebObject(s) Overview Manage AllorsObject(s) across web requests Cache Allors object(s) in either View-, Session- or Application State.
WebObject(s) Detail Inherit from System.Web.UI.Control WebObjects implement IDataSource Very efficient caching Default state is ViewState
WebPopulation Allows you to store and retrieve a disconnected population across web requests.
WebObject(s) Diagram
Allors Tools Upgrade Repository & Build Testing Tools (Winforms, Webforms, Browser)
Upgrade Upgrade Notifications Automatic Domain (Schema) upgrade Automatic Population (Data) upgrade Supports Test Driven Development
Repository & Build Repository UI Repository API Command & MSBuild Builds Continuous Integration
Testing Tools Winforms Tester Webforms Tester Browser Tester
Allors Application Prefab Subjects Custom Composition and Extension
Prefab Subjects 1 Shared Subject (General objects, Collaboration (Wiki), …) Software Development Subject Business Subjects (Accounting, CRM, Contracts,..) Community Subjects
Custom Composition & Extension Custom or 3 rd party subjects Extension of Subjects