Allors for Developers
Jan 04, 2016
Allors for Developers
Overview
• Problems• The Allors Solution• Allors Jargon• Allors Platform• Allors Tools• Allors Application
Problems
• Limitations of OO languages• Failure of 1st generation OO Design• Failure of 2nd 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 1st generation OO Design(White box Inheritance)
• Fragile base class• Complex hierarchies • Class reuse but no object reuse
Failure of 2nd 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
• 3rd 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() ::= <<FA2E53B4-915D-4227-8571-456FC8E04DB0>>• TemplateName() ::= <<Allors Test>>• TemplateVersion() ::= <<1.0.0.3>>• TemplateAllors() ::= <<1.0.0>>• TemplateConfiguration(domain) ::= <<• <generations>• <generation template="domain" output="$domain.name$.txt"/> • </generations>• >>
• 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 3rd party subjects• Extension of Subjects