Scroll to top >

.NET8 based framework for developing enterprise and SaaS applications.

No more plumbing and project setup time - start developing business logic right away.

Signals Logo
Signals Logo

You focus on the business logic while we take care of the plumbing.

Signals is a framework for developing enterprise and SaaS applications.


Why SIGNALS?

Starting a new project is always exciting. Everything starts with an idea of a certain product that needs to bring some value. The idea is developed and documented by the product owner and then communicated with the development team that needs to build it.

The development team will go through the docs and there will be some communication going back and forth to understand the details and to align over the deliverable. The project methodology is irrelevant in the sense that all involved parties are speaking a different language which eventually makes it harder to align and understand each other.

I remember during high school, together with my friend, we've started developing a tool for managing salaries for one accountant and he wanted to be able to change the system time. Thinking about it and discussing it with the accountant it turned out that he wanted to be able to add a record in the past. This discrepancy in communication, speaking different languages, having a different communication language can impact the decisions that we are making when developing an application.

This brings us to the point, how hard will be to find a common language across different roles? This is where Signals come into play as a concept. Signals align all involved parties by asking the right questions:

- Who should be able to execute this process?
- Is this particular person granted to execute the process?
- What are the preconditions that need to be fulfilled before we execute the process?
- What are the steps of the process itself?

Once the documentation is delivered to the development team they will be able to map it outright and avoid missing out on the details.

When starting the project, in development terms, we tend to reinvent the wheel, and yet it ends being an ellipse. Every project starts with creating a blank solution, setting up the project hierarchy and boundaries, bringing some code base from previous projects, and trying to glue it out. This means that there isn’t any standardization on how we can effectively run, extend and maintain projects in the longer run. Not to mention when a person needs to join the team or to assist with some other active project in the organization. Fear of the unknown is the boss.

Signals' purpose is to fill the gap in this problem. When starting a project, you will have everything set up for you so you as a developer can focus on the business logic. For both beginners or senior software developers, Signals offers you development practices that will make your professional life easier and more creative.

Marjan Nikolovski
CEO, Emit Knowledge

High-level aspects

When developing an application, certain aspects are mandatory in the project setup phase that are consuming development teams time and focus.

Dependency Injection

Dependency injection. Signals enables you to use your DI framework of choice with the power of attribute-based injection.

Out of the box Signals offers integration with Autofac, DotNetCore and Simple Injector. Integrating another framework is available through following the convention.

Configuration

Treat configuration files as objects independent of the storage. Signals enables you to create and maintain configuration files. The framework allows you to set different configurations per environment and to select an active environment. All configurations are mapped against objects.

Out of the box Signals has implementation for File and MSSQL configuration providers.

Logging

Signals provides a standardized logging interface that supports integration with existing logging libraries.

Out of the box Signals integrates with NLog. As the framework is extensible by definition, adding an implementation with another logging library is straight forward.

Auditing

In the enterprise world, there is often a need to understand who did what and when. Signals support auditing via integration with Audit.NET and MSSQL database. Extending the auditing aspect is supported like with the rest of the aspects in the framework.

Caching

No matter how fast is your application, it is good to store the most accessed information in the cache. Signals supports in memory caching. Using a different system like Redis can be achieved by extending the caching aspect.

Localization

You never know when you will get a new request to add support for different languages in the application. Signals got this covered for you. Out of the box the framework supports file, MSSQL and in memory localization setup.

Storage

When your application requires storing files, Signals supports upload and encryption of files for file system, Azure Blob storage and MSSQL database. Other storage providers are supported by extension of Signals.

Communication channels

Signals supports distributed processes. The framework supports a request to start from the web application and to finish on the background service. This is achieved with the support of communication channels which by default we support Azure Event Grid, MSSQL and Azure Service Bus.

Authentication and authorization

This aspect enables you to configure authentication for both ASP.NET MVC and ASP.NET Core. Signals support managing authentication, authorization and permissions with ease with attributes and by direct usage of the authentication, authorization and permission managers.

Scheduled tasks

Signals support task scheduling with daily, monthly, pattern-based, time part, weekend, weekly and workday recurrence configuration. Current implementations are through Fluent Scheduler and Hangfire. Can be extended with other libraries as well.

Error handling

Having a centralized mechanism to handle exceptions and retry policies is of great need to prevent information to leak outside the system boundaries and to be able to extract meaningful information from the exceptions and errors. Signals supports this through Polly.NET.

Benchmarking

We are often challenged to improve long-running processes. To be able to achieve better performance, you will need information on how your system behaves and which processes are the bottleneck. The benchmarking aspect will give you the details by allowing you to track processes, chains and checkpoints.

Match the use-case with the code

The frameworks enforce the development team to focus on other important aspects besides the actual business logic such as:

  • Authentication;
  • Data validation;
  • The business logic itself;
In those terms, for development purposes, the basic building block is Base Processes. By default, Signals offers you several types of processes.

Distributed process

Type of process which allows business logic to start from the web and to finish on the background service. Ex: Exporting big Excel files. The request will be done on the web but the execution will happen on the background service.

API process

Type of process which will expose documented endpoint automatically.

Business process

Type of process where the business logic is implemented.

Import/Export process

Type of process which allows you to import/export data from Excel or any other format.

Recurring process

Type of process which will be executed based on a recurrence pattern.

Match the use-case with the code

The frameworks enforce the development team to focus on other important aspects besides the actual business logic such as:

  • Authentication;
  • Data validation;
  • The business logic itself;
In those terms, for development purposes, the basic building block is Base Processes. By default, Signals offers you several types of processes.

Distributed process

Type of process which allows business logic to start from the web and to finish on the background service. Ex: Exporting big Excel files. The request will be done on the web but the execution will happen on the background service.

API process

Type of process which will expose documented endpoint automatically.

Business process

Type of process where the business logic is implemented.

Import/Export process

Type of process which allows you to import/export data from Excel or any other format.

Recurring process

Type of process which will be executed based on a recurrence pattern.

Powered by Emit Knowledge