Why WindnTrees?

Introduction

WindnTrees offers a simple development approach toward data driven web applications. Applications are meant to extract, process and present data in meaningful way, WindnTrees solves this problem by abstracting repeating tasks and simplifies development approach by introducing server and client side CRUDS.

Keywords: WindnTrees, CRUD, CRUD2CRUD, MVVM
  • Application Architecture

    WindnTrees implements CRUD 2 CRUD application architecture where server side publishes services in terms of CRUD controllers and the client side consumes those services using CRUD controllers (views).

    [Server Side]
    CRUDSource(s) --- CRUDController(s) -- CRUDProcessor(s) --- CRUDService(s)
    
                  ||| data / objects / entities / concepts ||| 
    
    [Client Side]
    CRUDSource(s) --- CRUDController(s) -- CRUDProcessor(s) --- CRUDConsumer(s)
    
  • Optimized and Less Code

    WindnTrees provide development ready programming model with developer focus being on defining database entities, models, views and their integration. Server side and client side implementations (JavaScript) know how to extract, process, save and modify contents and or data based on content type information.

    For example, a typical WindnTrees application will require a user to perform following tasks:

    1. Define Data Source (Database) Entities
    2. Write ORM / Data Access Repository
    3. Publish Data Services Using Server Side Controllers (CRUDController / ListController)
    4. Develop Client Side (HTML, ASP .NET, PHP, JSP, Thymeleaf) Views and,
    5. Integrate WindnTrees (JavaScript) Controllers Script

    Developer does not have to define or write CRUD interfaces for server side published services rather just extend from either CRUD / List Controller to get required functionality.

  • Content, Processor and View Isolation

    WindnTrees isolate content defining, processing and presentation techniques with or without content type information.

    For example, developer usually defines a view with service address, observer with observable content type information and messages repository.

    var newView = new NewView({
    'uri': "/employee",
    'observer': new ObjectObserver({ 'contentType': new Employee({}), 'messages': new MessageRepository() })
    });
    

    In above example “Employee” is a content object that view is going to utilize while producing listings or object presentations.

    Views internally handle all the content processing and delegate presenting tasks to observers for viewing processed information. Views can have further referential views with different observers and content type information forming a chain of views that will be referenced integrated and contextually independent. A View can have one or multiple referential views at same level.

  • CRUD (Create, Read, Update and Delete) Enabled Views

    WindnTrees provide CRUD enabled views, meaning developer does not require to specifically write functionality for content extraction, saving and deletion. Views extend their functionality in hierarchical order starting from object view and extending toward new, edit, search and crud views.

  • Observers Integration and Support for Extension

    WindnTrees utilize KnockoutJS data observer models for content presentation. It also provides extended observers for specific use case needs starting from ActivityObserver and extending toward ObjectObserver, ListObserver, SearchObserver and CRUDObserver.

  • Scoped, Contextually Independent and Integrated Views

    Views can have referential views and each referential view can have specific observer for content presentation and thus forming a chain of views that are scoped, contextually independent and integrated.

    WindnTrees view is intelligent and based on integrated referential view it knows what information this is going to extract and how it is going to present. Views internally extends observers, synchronize data and referential information necessary for seamless integration.

  • User Friendly Application Programming Interface

    WindnTrees offers a user friendly application programming approach and interface. All views and observers follow a symmetric defining and integration approach. A developer only required to change the name of either view or observer to get benefit of a specific functionality without writing further code.

    For example, following offers a new content saving functionality

    var newView = new NewView({
    'uri': "/role",
    'observer': new ObjectObserver({ 'contentType': new Role({}), 'messages': new MessageRepository() })
    });
    

    While this will let the user to extract and save existing content

    var editView = new EditView({
    'uri': "/role",
    'observer': new ObjectObserver({ 'contentType': new Role({}), 'messages': new MessageRepository() })
    });
    
  • Supported Platforms

    WindnTrees is a JavaScript library and meant to support all server side frameworks. Initially it is providing a .NET based server side reference implementation as part of nuget package download and will be extended in future for other platforms.

    install-package WindnTrees.Abstraction -version 1.1.7

    Update: 2018-07-13

    WindnTrees .NET Core nuget package is available for download to implement ASP .NET Core based applications.

    install-package WindnTrees.Core

    Note: nuget package manager does not install windntrees1.0.0.min.js in correct project scripts library directory, make sure you recover script files from C:\Users\<<Username>>\.nuget\packages\.

  • Conclusion

    WindnTrees solves a common problem for data extraction, processing and presentation that usually developers have to deal with. It abstracts certain development efforts and let the developer to get started quickly in less time. Developers can write MVVM based clean views and let WindnTrees to extract, process and present information.