123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using AutoMapper;
- using Edge.Core.Configuration;
- using Edge.Core.Database;
- using Edge.Core.Processor.Dispatcher;
- using Edge.Core.Processor.Dispatcher.ProcessorLoader;
- using Edge.Core.UniversalApi;
- using Edge.Core.UniversalApi.Auditing;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Logging;
- using MQTTnet;
- using MQTTnet.Extensions.ManagedClient;
- using MQTTnet.Protocol;
- using MQTTnet.Server;
- using NLog;
- using NLog.Extensions.Logging;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- namespace LiteFccCoreMain.Service
- {
- internal class ServiceBuilder
- {
- private static IServiceCollection services;
- static ServiceBuilder()
- {
- }
- public void ConfigureServices(IServiceCollection services)
- {
- }
-
-
-
-
- public static IServiceProvider Build()
- {
- services = new ServiceCollection();
- #region add the most underlying service: Logging and Configuration(settings.xml) Service
- services.AddLogging(loggingBuilder =>
- {
-
- loggingBuilder.ClearProviders();
- loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
- var fa = loggingBuilder.AddNLog();
- });
-
- NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration("nlog.config");
- NLog.LogManager.LoadConfiguration("nlog.config");
- Configurator.Default.LoadAsync().Wait();
- services.AddSingleton(Configurator.Default);
- #endregion
- #region AutoMapper, resolve all assemblies under entry folder.
-
-
-
-
- var assembliesWithAutoMapperProfileDefined = new List<Assembly>();
- foreach (var ass in ObjectInstanceCreator.CurrentDomainAssemblies)
- {
- try
- {
-
- if (ass.GetTypes().Any(t => typeof(Profile).IsAssignableFrom(t)))
- assembliesWithAutoMapperProfileDefined.Add(ass);
- }
- catch
- { }
- }
- services.AddAutoMapper(assembliesWithAutoMapperProfileDefined);
- #endregion
-
-
- services.AddScoped<SqliteDbContext>();
- #region Mqtt server setup
-
-
- #endregion
- #region Mqtt client
- services.AddTransient<IManagedMqttClient>(p => new MqttFactory().CreateManagedMqttClient());
- #endregion
- #region UniversalApi
- services.AddSingleton(AuditingStoreFactory.Create);
- services.AddSingleton(UniversalApiHubFactory.Create);
- services.AddSingleton(UniversalApiInvokerFactory.Create);
- #endregion
- #region IProcessorLoader and IProcessorMetaConfigAccessor
- services.AddSingleton(ProcessorLoaderFactory.Create);
- services.AddSingleton(ProcessorMetaConfigAccessorFactory.Create);
- #endregion
- var serviceProvider = services.BuildServiceProvider();
- return serviceProvider;
- }
-
-
-
-
-
-
-
-
-
-
-
- }
- }
|