Integration Services

The Integration Service concept was created to distinguish the application services that are built for inter-module (or inter-microservice) communication from the application services that are intended to be consumed from a UI or a client application.

The following figure shows a few microservices behind an API Gateway that is consumed by a UI application and 3rd-party client applications:

integration-services

HTTP requests coming from out of the API Gateway can be called as external request, while the HTTP requests performed between microservices can be considered as internal requests. The application services that are designed to respond to these internal requests are called as integration services, because their purpose is to integrate microservices in the system, rather than respond to user requests.

Marking an Application Service as Integration Service

Assume that you have an application service named ProductAppService, and you want to use that application service as an integration service. In that case, you can use the [IntegrationService] attribute on top of the application service class as shown below:

[IntegrationService]
public class ProductAppService : ApplicationService, IProductAppService
{
    // ...
}

If your application service has an interface, like IProductService in this example, you can use it on the service interface:

[IntegrationService]
public interface IProductAppService : IApplicationService
{
    // ...
}

If you've used the [IntegrationService] on top of your service interface, it is not needed to use on the service class too.

That's all. From now, ABP will handle your application service as integration service and implement the followings by convention:

  • If you are using the Auto API Controllers feature in your application, the URL prefix will be /integration-api instead of /api for your integration services. Thus, you can distinguish internal and external service communications and take additional actions, such as preventing REST API calls for integration services out of API Gateway.
  • Audit logging is disabled by default for the integration services. See the next section if you want to enable it.

Configuration

Enabling/Disabling the Audit Logging

Audit Logging is disabled by default for integration services but it can be enabled by configuring the AbpAuditingOptions options class in the ConfigureServices method of your module class:

Configure<AbpAuditingOptions>(options =>
{
    options.IsEnabledForIntegrationService = true;
});

Please refer to the audit logging document for other options and details.

Filtering Auto API Controllers

You can filter integration services (or non-integration services) while creating Auto API Controllers, using the ApplicationServiceTypes option of the ConventionalControllerSetting by configuring the AbpAspNetCoreMvcOptions as shown below:

Configure<AbpAspNetCoreMvcOptions>(options =>
{
    options.ConventionalControllers.Create(
        typeof(MyApplicationModule).Assembly,
        conventionalControllerSetting =>
        {
            conventionalControllerSetting.ApplicationServiceTypes = 
                ApplicationServiceTypes.IntegrationServices;
        });
});

Tip: You can call the options.ConventionalControllers.Create multiple times to configure regular application services and integration services with different options.

Please refer to the Auto API Controllers document for more information about the Auto API Controller system.

See Also

Contributors


Last updated: March 21, 2023 Edit this page on GitHub

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

In this document
Community Talks

What’s New with .NET 9 & ABP 9?

21 Nov, 17:00
Online
Watch the Event
Mastering ABP Framework Book
Mastering ABP Framework

This book will help you gain a complete understanding of the framework and modern web application development techniques.

Learn More