воскресенье, 28 сентября 2025 г.

Run, App, RazorChartDirFin0211

Run, App, RazorChartDirFin0211

http://127.0.0.1:5000/Finance

cd F:\Projects\VS\RazorChartDirFinanceSln\RazorChartDirFin0211\


dotnet publish -c Release -o ./publish

cd ./publish

dotnet RazorCandle02.dll


dotnet publish -c Release -o ./publish

cd ./publish

dotnet RazorChartDirFin0211.dll


F:\Projects\VS\RazorChartDirFinanceSln\RazorChartDirFin0211\RazorChartDirFin0211.csproj

cd F:\Projects\VS\RazorChartDirFinanceSln\RazorChartDirFin0211\

понедельник, 22 сентября 2025 г.

SingleTone, Registartion, Parameters, Alisa

SingleTone, Registartion, Parameters, Alisa

В ASP.NET Core существует несколько способов инициализировать Singleton-классы с параметрами:

1. Прямая регистрация через AddSingleton с лямбда-выражением

Можно указать параметры прямо в лямбда-выражении при регистрации сервиса:

csharp
services.AddSingleton<IService>(sp => new Service(param1, param2));

Здесь sp — это провайдер сервисов, который позволяет получить зависимости из контейнера.

2. Использование фабричных методов

Можно определить фабричный метод, который будет создавать экземпляр Singleton с нужными параметрами:

csharp
services.AddSingleton<IService>(provider => 
{
    var setting = provider.GetRequiredService<IConfiguration>().GetValue<string>("SomeSetting");
    return new Service(setting);
});

3. Регистрация через IHostedService или BackgroundService

Если Singleton требует сложной инициализации, можно зарегистрировать его как IHostedService:

csharp
services.AddSingleton<IMyHostedService, MyHostedService>()
    .AddHostedService(x => x.GetRequiredService<IMyHostedService>());

4. Использование параметров конфигурации

Параметры можно брать из файла конфигурации appsettings.json или других источников:

csharp
services.Configure<MyOptions>(Configuration.GetSection("MyOptions"));
services.AddSingleton<IService>(sp => 
{
    var options = sp.GetRequiredService<IOptions<MyOptions>>().Value;
    return new Service(options.Param1, options.Param2);
});

5. Передача зависимостей через DI

Singleton может получать параметры через внедрение зависимостей (DI):

csharp
public class MySingleton : ISingleton
{
    public MySingleton(IDependency1 dep1, IDependency2 dep2)
    {
        // инициализация
    }
}

services.AddSingleton<ISingleton, MySingleton>();

6. Отложенная инициализация (Lazy Initialization)

Можно использовать отложенную инициализацию, когда экземпляр создаётся только при первом обращении:

csharp
services.AddSingleton<Lazy<ISingleton>>(sp => 
    new Lazy<ISingleton>(() => new Service(sp.GetService<IDependency>())));

7. Использование AutoActivationExtensions

В новых версиях .NET можно использовать расширения для автоматической активации:

csharp
services.AddAutoActivation<ISingleton>();

8. Регистрация через кастомные расширения

Можно создать собственные расширения для DI-контейнера, которые будут регистрировать Singleton с нужными параметрами:

csharp
public static IServiceCollection AddMySingleton(this IServiceCollection services, Action<MySingletonOptions> configure)
{
    var options = new MySingletonOptions();
    configure(options);
    services.AddSingleton<ISingleton>(sp => new Service(options));
    return services;
}

Где указываются параметры

Параметры для Singleton-классов указываются:

  • в методах регистрации сервисов (ConfigureServices в Startup.cs);

  • в конфигурационных файлах (appsettings.json);

  • через внедрение зависимостей (DI);

  • в фабричных методах;

  • в кастомных расширениях DI-контейнера;

  • через параметры конструктора при регистрации сервиса.

Важные замечания

  • При работе с многопоточностью нужно обеспечить потокобезопасность инициализации.

  • Следует избегать чрезмерного использования глобальных состояний.

  • Для тестирования можно использовать моки или фейковые объекты.

  • При сложной инициализации рекомендуется использовать IHostedService.

Выбор конкретного способа зависит от требований к проекту, сложности инициализации и типа параметров.

среда, 3 сентября 2025 г.

Start, Charts, Look, Browsers

https://127.0.0.1:5001/Candlestick


dotnet publish -c Release -o ./publish

cd ./publish

dotnet RazorCandle02.dll


dotnet publish -c Release -o ./publish

cd ./publish

dotnet RazorCandle02.dll


F:\Projects\VS\RazorzzSln\RazorCandle02

cd F:\Projects\VS\RazorzzSln\RazorCandle02