Skip to content

Latest commit

 

History

History
60 lines (42 loc) · 3.6 KB

framework.md

File metadata and controls

60 lines (42 loc) · 3.6 KB

deep-framework

DEEP Framework is a nodejs package that is published on npmjs: https://www.npmjs.com/package/deep-framework.

In fact, this framework is a collection of nodejs packages, also identifiable as abstracted libraries:

DEEP Framework API Docs Abstracted Web Service(s)
deep-asset Assets Management Library Amazon S3
deep-cache Cache Management Library Amazon ElastiCache
deep-core Core Management Library -
deep-db Database Management Library Amazon DynamoDB, Amazon SQS
deep-di Dependency Injection Management Library -
deep-event Events Management Library Amazon Kinesis
deep-fs File System Management Library Amazon S3
deep-kernel Kernel Management Library -
deep-log Logs Management Library Amazon CloudWatch Logs
deep-notification Notifications Management Library Amazon SNS
deep-resource Resouces Management Library AWS Lambda, Amazon API Gateway
deep-security Security Management Library AWS IAM, Amazon Cognito
deep-validation Validation Management Library -

The Anatomy of DEEP Framework

Each DEEP framework module except the basis (deep-core) uses deep-kernel and deep-di.

deep-kernel enforces each module to extend a Kernel.ContainerAware abstract class that is loaded in runtime into a service.

deep-kernel transforms each module into a service (ex. deep-db as db, deep-log as logs etc.)

Kernel.ContainerAware makes possible you to bind a microservice instance using .bind(microserviceObject) method.

Be aware- a service action that requires a microservice would throw an error if it is missing

Initializing and using the app

import deep-framework from 'deep-framework';

DeepFramework.Kernel.bootstrap((kernel) => {
    // your application was initialized
    
    let fs = kernel.get('fs'); // deep-fs service
    let asset = kernel.get('asset'); // deep-asset service
    
    let helloWorldMicroservice = kernel.microservice('deep.microservices.helloworld'); // microservice instance
    let currentMicroservice = kernel.microservice(); // current microservice instance
    
    let iconPath = asset.locate('@deep.microservices.helloworld:images/icon.png');
});

Note that mainly all the services implements path resolving feature: '@xxxx:yyyy' where xxxx is the microservice identifier and yyyy is some service specific descriptor