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

25.11.17, Serilog, MVC, Layout, Projects, MapStaticAssets, WithStaticAssets

25.11.17, Serilog, MVC, Layout, Projects, MapStaticAssets, WithStaticAssets

F:\Projects\VS\GS.MvcTrade\GS.MvcTrade.sln

F:\Projects\VS\GS.MvcTrade\MvcApp01\MvcApp01.csproj

/*

Разметка начала ломаться, вероятно, из-за наличия дополнительных шагов, 

таких как MapStaticAssets() и .WithStaticAssets(), которые отсутствуют во втором примере. 

Это подтверждает, 

что источником проблем являются именно дополнительные этапы маршрутизации и поддержки статических активов.

*/

----------------------------------------------------------------------------------------------

Правильные варианты.

//First WORK WELL

using Serilog;


namespace MvcApp01

{

    public class Program

    {

        public static void Main(string[] args)

        {

            var builder = WebApplication.CreateBuilder(args);


            //// Добавляем Serilog

            //builder.Host.UseSerilog((context, loggerConfig) => loggerConfig

            //    .ReadFrom.Configuration(context.Configuration));


            builder.Host.UseSerilog((context, loggerConfig) => loggerConfig

                .ReadFrom.Configuration(context.Configuration)); // Берёт настройки из appsettings.json


            // Add services to the container.

            builder.Services.AddControllersWithViews();


            var app = builder.Build();


            // Configure the HTTP request pipeline.

            if (!app.Environment.IsDevelopment())

            {

                app.UseExceptionHandler("/Home/Error");

                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.

                app.UseHsts();

            }


            app.UseHttpsRedirection();

            app.UseRouting();


            app.UseAuthorization();


            app.MapStaticAssets();

            app.MapControllerRoute(

                name: "default",

                pattern: "{controller=Home}/{action=Index}/{id?}")

                .WithStaticAssets();


            app.Run();

        }

    }

}

---------------------------------------------------------------------------------------------

// Five

/*

Разметка начала ломаться, вероятно, из-за наличия дополнительных шагов, 

таких как MapStaticAssets() и .WithStaticAssets(), которые отсутствуют во втором примере. 

Это подтверждает, 

что источником проблем являются именно дополнительные этапы маршрутизации и поддержки статических активов.

*/

//------------------------------------------------

using Serilog;


var builder = WebApplication.CreateBuilder(args);


// Добавляем Serilog

builder.Host.UseSerilog((context, loggerConfig) => loggerConfig

    .ReadFrom.Configuration(context.Configuration));


// Регистрируем сервисы

builder.Services.AddControllersWithViews();


// Строим приложение

var app = builder.Build();


// Настраиваем HTTP-пipeline

if (!app.Environment.IsDevelopment())

{

    app.UseExceptionHandler("/Home/Error");

    app.UseHsts();

}


app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();


// Настройка маршрута контроллера

app.MapControllerRoute(

    name: "default",

    pattern: "{controller=Home}/{action=Index}/{id?}");


// Поддержка статических ресурсов (опционально, если необходимы статичные активы)

app.UseStaticFiles();


// Запускаем приложение

app.Run();

-------------------------------------------------------------


суббота, 4 октября 2025 г.

Async, Await, EventHub, Test , Projects

Async, Await, EventHub, Test , Projects

F:\Projects\VS\AsyncAwaitSln\AsyncAwaitSln.sln

F:\Projects\VS\AsyncAwaitSln\CaAsyncAwait01\CaAsyncAwait01.csproj

F:\Projects\VS\AsyncAwaitSln\CaAsyncAwait02\CaAsyncAwait02.csproj

----------------------------------------------------------------------------

F:\Projects\gs.trade\GS.EventHubs\GS.EventHubs.sln

F:\Projects\gs.trade\GS.EventHubs\GS.EventHubs\

F:\Projects\gs.trade\GS.EventHubs\UnitTestEventHub\

воскресенье, 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

вторник, 12 августа 2025 г.

FeederA, SignalR, RazorPage,WebApi

https://ask.chadgpt.ru/share/b096f402-dab8-43f7-a67c-4570874b99ac

https://ask.chadgpt.ru/share/4af0d0e5-270b-4b9e-92d4-01f6de54d0a6

FeederA, SignalR, RazorPage,WebApi

D:\VC2508\Feeder\FeederSln\FeederSln.sln

D:\VC2508\Feeder\FeederSln\FeederA\FeederA.csproj

------------

SignalR - does not Work

Three Source to set urls

launchSettings.json
Program.cs

FeederA.http

-----------------

launchSettings.json

{

  "$schema": "https://json.schemastore.org/launchsettings.json",

  "profiles": {

    "http": {

      "commandName": "Project",

      "dotnetRunMessages": true,

      "launchBrowser": false,

      "applicationUrl": "http://localhost:5000",

      "environmentVariables": {

        "ASPNETCORE_ENVIRONMENT": "Development"

      }

    },

    "https": {

      "commandName": "Project",

      "dotnetRunMessages": true,

      "launchBrowser": false,

      "applicationUrl": "https://localhost:5001;http://localhost:5000",

      "environmentVariables": {

        "ASPNETCORE_ENVIRONMENT": "Development"

      }

    }

  }

}

----------------------------------------
Program.cs
---------------------------------------
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowFrontends", p =>
    p.WithOrigins("https://localhost:5001", "http://localhost:5000")
     .AllowAnyHeader()
     .AllowAnyMethod()
     .AllowCredentials());
});
----------------------------------------
FeederA.http
----------------------------------------
@FeederA_HostAddress = http://localhost:5248

GET {{FeederA_HostAddress}}/weatherforecast/
Accept: application/json
---------------------------------------

понедельник, 11 августа 2025 г.

QuoteSource, Giga, RabbitMQ, MassTranzit

QuoteSource, Giga, RabbitMQ, MassTranzit

MAssTransit
Does not work  MAssTransit

D:\VC2508\QuotingSystem\QuoteSource\QuoteSource.sln

Qoutes, RabbitMQ, MassTransit

-------------------------------------------------

MassTransit

Previouse DOES NOT WORK AT ALL MassTransit

D:\VC26\gs.trade\Tests\RazorQuoteSource01\RazorQuoteSource01.sln

D:\VC26\gs.trade\Tests\RazorQuoteSource01\CommonLib\CommonLib.csproj

D:\VC26\gs.trade\Tests\RazorQuoteSource01\Infrastructure\Infrastructure.csproj

D:\VC26\gs.trade\Tests\RazorQuoteSource01\RazorXobot01\RazorXobot01.csproj

D:\VC26\gs.trade\Tests\RazorQuoteSource01\RazorXobot02\RazorXobot02.csproj

D:\VC26\gs.trade\Tests\RazorQuoteSource01\TradeLib\TradeLib.csproj

RazorQuoteSource

- CommonLib
- Infrastrure

- RazorQuoteSource01
- RazorXobot01
- RAzorXobot02
- TradeLib