The Power Of Generic Infrastructure Eli Arlazoroff V.P. R&D eli@mprest.com 14-Sep-18
Why Are We Obsessed With Generic Infrastructure? Focus on business logic and core capabilities The infrastructure is a development risk The infrastructure is at the project’s critical path Easily keep-up with the constantly changing requirements Re-use application components
Generic Infrastructure – The Challenges It costs more We don’t have the time We do it, actually we have one for every project… It’s too complicated, we want a “simple” application The NIH factor
C4I Systems – A Broad Definition Defense Homeland Security Simulators Communication & Telco Industrial
mCore Application server Where IT Meets Real-Time
mCore Application Server Near Real Time Application Servers IBM Web sphere, Oracle AS, BAE Web Logic, Microsoft BizTalk Server Propriety Hardware Dedicated Operating Systems Psos, VXworks, Rmx mCore Application Server Commercial Database (Oracle,SQL Server) Oracle/SQL Dedicated database Windows OS Wintel Servers and Workstations Standard OS (Windows,Unix,Linux) Cots Servers ( Wintel,Sun,IBM) IT Technologies
mCore mCore is a Command and Control Application Server designated for developing systems with the following characteristics: Multiple computers networked system Performing sensors information collection Real-time data processing Presentation for human control
Challenges In-memory objects management High performance and low latencies Several servers and clients The objects are active and initiate actions Multi-threaded environment Distributed over the network Recording & playback Scalable Database integration Robust, fail safe
The Solution: Application Server A unified framework Takes care of common infrastructure Let developers focus on application needs Built-in functionality: Speeds application development Relieves developers from creating these crucial services mCore
mCore Concept Open infrastructure for distributed applications Micro-kernel extendable architecture Service-based approach Native .Net implementation Easy to learn and use for application programmers
mCore Principles Proxies used for invocation interception and caching Defaults to asynchronous programming Interface based programming Acts as a “sand box” for executing application objects Advanced functionality provided through generated code Declarative-based programming Provides transparent thread safe multi-threaded environment Supplies in-memory data caching for application objects How about changing each bullet to a slide (or something like this)
mCore Features Optimized for in-memory management of a large number of objects Transparent distribution between servers and clients (objects cloud) Automatic thread safety Object persistence to a database In-memory queries with data caching Optimized scheduling Distributed asynchronous events Recording & playback In-memory transactions
mCore Features – Roadmap Online and offline monitoring Fault tolerance Redundancy
Behind the Scenes Project Part Mission Unit Target Warning Area Damage App mCore mCore Manager Execution Scheduler State Manager Record & Playback Events Distributed Execution Proxy Generator Components mCore Queries logging Building Blocks cache schedule record proxy state threads Common Part
a .NET Command and Control Application Server
a .NET Command and Control Application Server
mClient A Generic Client Infrastructure
Problem Description Building a modular UI Providing common services to UI components Facilitate code reuse Sharing views between components Sharing context menus between components
Client Run-Time Configurability mClient supports simple and intuitive configurability by non-developers at run time Configuration is available at every level: Menus Toolbars Context menus Screen layouts and docking management Each configuration is saved as a workspace System can be configured with different capabilities Configuration level can be controlled (developer, system engineer/administrator, operator)
Workspace Management mClient provides run-time control over the user experience The workspace includes: Menu tree Tool bars Context menus Screen layout View state Workspaces can be saved and loaded dynamically by the application
Advanced Docking Management GUI components are developed independent of docking and layout logic Docking and layout logic is fully configured at run-time Dock provider is hidden from the application developer
Commands Manager The developer implements commands which are simple functional units, independent of the presentation logic At run-time configuration a catalog of available commands is built Specific commands in each workspace are organized into menus and toolbars Context menus are built of commands The commands model enforces a modular implementation
Tools Manager A tool performs actions that needs interaction with the user Tools cascading Tools availability is configurable Enforces a modular implementation
Model-View-Presenter Pattern mClient implements the infrastructure required for MVP pattern Application developer provides the following components: Model – application entities View – entities display area (user control) Presenter – translates an entity state into its visual representation on a specific view Filter – provides system/view based filtering of displayed entities Advantages: Componentized and modular implementation Flexibility and extensibility mClient provides common services (hit testing, focus, etc.) Robustness mClient manages workflow and state between the application components
Selection Service Provides client wide selection Manages entities selection state for use by all views Associates additional data to entities at the client context
User Notification Service Provides a uniform way for modules to send user notifications Default implementation of message service is part of mClient The service can be extended by developing custom providers
WPF Ready WPF components can be easily combined with WinForms components WPF mClient is under development Transition to the WPF mClient is seamless
Additional Required Features Stable and robust solution mCore integration Leverages 3rd party GUI components Multi language support (no compilation required) Rendering optimizations – slow & fast objects History & instant playback Authorization & authentication
Demo – Ituran
Additional Generic Infrastructure Logging utility Configuration utility ICD generator
Generic infrastructure is a key success factor Conclusion Generic infrastructure is a key success factor Infrastructure can be generic
Thank You 14-Sep-18