Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
Привет всем!
опять же сабж, но хотелось DI, как у в взрослых сделать, возможно?
заранее благодарю ВС
24 авг 21, 14:11    [22363533]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
только не нужно меня ругать, что читай документацию, гугл - не по шарам, пытался)
24 авг 21, 14:13    [22363534]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22584
Желательно вопрос сформулировать по-русски.

Если нужен DI в ASP.NET - можно воткнуть Autofac
У него есть дополнительное расширение для интеграции в ASP.NET
24 авг 21, 14:16    [22363537]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
fkfka
Member

Откуда:
Сообщений: 216
Shocker.Pro
Если нужен DI в ASP.NET - можно воткнуть Autofac

Чем встроенный не угодил?

Shocker.Pro
Желательно вопрос сформулировать по-русски.

Можно даже по-английски. Тут наверняка почти все им достаточно владеют.
24 авг 21, 16:35    [22363574]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22584
fkfka
Чем встроенный не угодил?
как я понял, у ТС не Core

Хотя мы Автофак даже и в Core встраиваем, там плюшки всякие типа именованных инстансов, декораторы, модули, в общем, помощнее будет, чем штатный
24 авг 21, 18:00    [22363606]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
fkfka
Member

Откуда:
Сообщений: 216
Shocker.Pro
Хотя мы Автофак даже и в Core встраиваем

Мы тоже так поначалу делали. Но, поскольку
Shocker.Pro
плюшки всякие типа именованных инстансов, декораторы, модули
В 95% случаев не особо нужны, а в 95% из оставшихся 5% легко делаются на коленке, то в итоге порешали, что не особо оно и надо. А тем более автофак из всех контейнеров по факту самый тормозной.
24 авг 21, 18:06    [22363611]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
Понимаю, что вопрос не совсем корректно сформулировал (немного с пивом перестарался, извиняюсь).
Я занимаюсь рефакторингом в небольшой компании. Здесь годами писался говнокод (причём то, что писали индусы ещё более-менее!). Здесь куча разных проектов и решений, есть, к слову, и ASP, но это не моя ответственность, мальчик молодой, но толковый из Бельгии (внезапно!) работает, моя зона это БД (могу поплакаться: что мне стоило около 2000 excel таблиц загнать в Сервер).
Итак, в ASP мы (я по крайней мере) делаем следующие:
            services.AddTransient<ITextFieldsRepository, EFTextFieldsRepository>();
            services.AddTransient<IEventItemsRepository, EFEventItemsRepository>();
            services.AddTransient<IFunctionsRepository, EFFunctionsRepository>();
            services.AddTransient<DataManager>();
    public class DataManager
    {
        public ITextFieldsRepository TextFields { get; set; }
        public IEventItemsRepository EventItems { get; set; }

        public IFunctionsRepository Functions { get; set; }

        public DataManager(
            ITextFieldsRepository textFieldsRepository, 
            IEventItemsRepository eventItemsRepository,
            IFunctionsRepository functions)
        {
            TextFields = textFieldsRepository;
            EventItems = eventItemsRepository;
            Functions = functions;
        }
    }
И далее не парим ум - EF ли у нас или просто текстовик, что-то подобное хотелось бы сделать для обычных проектов.
25 авг 21, 10:44    [22363767]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
Вообщем, мой впрос можно сказать совсем детский - как правильно использовать DI)))))
25 авг 21, 10:54    [22363772]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4283
и в чем суть делать такой DataManager? какую функцию он выполняет?
25 авг 21, 10:56    [22363773]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
fkfka
Member

Откуда:
Сообщений: 216
v skopin
И далее не парим ум - EF ли у нас или просто текстовик,

Подход правильный это есть.

v skopin
что-то подобное хотелось бы сделать для обычных проектов.

"Обычные" это .NET Framework (докоревский) или просто "не ASP.NET"?
25 авг 21, 10:58    [22363777]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
fkfka
"Обычные" это .NET Framework (докоревский) или просто "не ASP.NET"?
Нет у меня это консольки новые (пока .NET 5), AvaloniaUI
25 авг 21, 11:35    [22363793]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
Roman Mejtes
и в чем суть делать такой DataManager? какую функцию он выполняет?
Он подключает всё, что требуется от базы, при этом теперь мы не зависимы от самой базы, мы сказали, что от неё нужно)))
25 авг 21, 11:39    [22363794]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22584
v skopin
Вообщем, мой впрос можно сказать совсем детский - как правильно использовать DI)))))
v skopin
пока .NET 5
v skopin
services.AddTransient<ITextFieldsRepository, EFTextFieldsRepository>();
я пока не понимаю, в чем вопрос, чем не устраивает встроенный DI тогда?
25 авг 21, 12:03    [22363807]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
<cut>

Модератор: Резюме размещать в разделе "Работа"


Сообщение было отредактировано: 25 авг 21, 12:03
25 авг 21, 12:10    [22363811]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
fkfka
Member

Откуда:
Сообщений: 216
Shocker.Pro
я пока не понимаю, в чем вопрос, чем не устраивает встроенный DI тогда?

Похоже, он просто не знает как с ним работать без ASP.NET-овского ConfigureServices.
Обед доем, расскажу.
25 авг 21, 12:11    [22363812]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
Shocker.Pro
я пока не понимаю, в чем вопрос, чем не устраивает встроенный DI тогда?
КАК? в той же консоле, в библиотеке?
25 авг 21, 12:15    [22363816]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22584
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0
25 авг 21, 12:21    [22363819]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
Уважаемый модератор!
Я не трудовое агенство, у меня это было очень индикативно, чтобы размещать в разделе Работа, если будут конкретные, 100% предложения, очевидно размещу там! Не подставляйте меня перед людьми!

Сообщение было отредактировано: 25 авг 21, 12:15
25 авг 21, 12:24    [22363823]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
fkfka
Member

Откуда:
Сообщений: 216
v skopin,

static void Main()
{
    // Create the service collection and add services.
    ServiceCollection services = new();
    services.AddTransient<Application>();
    services.AddTransient<IFoo, Foo>();
    // Obtain the service resolution scope.
    using var serviceProvider = services.BuildServiceProvider();
    using var serviceScope = serviceProvider.CreateScope();
    // Application is the "Resolution Root" of the app.
    var app = serviceScope.ServiceProvider.GetRequiredService<Application>();
    // Run all.
    app.Run();
}

public class Application
{
    private readonly IFoo _foo;

    // IFoo is to be injected by DI
    public Application(IFoo foo) => _foo = foo;

    public void Run()
    {
        _foo.HelloWorld();
    }
}

public interface IFoo
{
    void HelloWorld();
}

public class Foo : IFoo
{
    public void HelloWorld() => Console.WriteLine("Hello, world!");
}


Идея понятна? Все то же делает и ASP.NET только "под капотом".

Сообщение было отредактировано: 25 авг 21, 12:44
25 авг 21, 12:51    [22363842]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
fkfka
Идея понятна? Все то же делает и ASP.NET только "под капотом".
Отлично, ща попытаюсь реализовать)))
СПАСИБО

Сообщение было отредактировано: 25 авг 21, 12:48
25 авг 21, 12:58    [22363845]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
v skopin
Member

Откуда: Germany
Сообщений: 928
Хотя мог бы и сам догадаться, но старый уже(((
25 авг 21, 13:01    [22363849]     Ответить | Цитировать Сообщить модератору
 Re: Службы в ASP в обычный код, как сделать?  [new]
petalvik
Member

Откуда:
Сообщений: 738
.NET Generic Host

Нет ничего лучше документации
25 авг 21, 18:28    [22364023]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить