powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по структуре MVC
40 сообщений из 40, показаны все 2 страниц
Вопрос по структуре MVC
    #39907769
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ASP.NET Core MVC приложение.
Многие методы контроллеров работают с базой, например, что-то типа

Код: c#
1.
2.
GetCustomer(string id)
SaveCustomer(...)



Они внутри должны подключаться к базе, слать запросы...
Я сделал проект NET Standard, в нем реализую методы работы с базой, они потом вызываются в контроллерах.

Код: c#
1.
2.
GetCustomer(string id)->db.GetCustomer(string strConnect, string id)
SaveCustomer(...)->db.SaveCustomer(string strConnect, ....)



Настройки параметров доступа к базе хранятся в appsettings.json.
Я их читаю один раз, храню в статиках и на каждом вызове метода, работающего с базой передаю параметры коннекта,
делаю коннект, выполняю запрос, дисконнект.
Вроде как открыть коннект один раз и держать открытым неправильно?
Как минимум статик переменные - плохо. Какой есть другой подход?
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907779
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Как минимум статик переменные - плохо. Какой есть другой подход?

1. Не использовать статики.
2. Открыл коннект, выполнил запрос, закрыл коннект.

Очевидно же. В любой книжке по ASP.NET про это написано.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907780
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
статик переменные - плохо. Какой есть другой подход?
В Core встроенный DI , читай, что такое синглтон
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907781
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
2. Открыл коннект, выполнил запрос, закрыл коннект.
Ролг Хупин, главное не парься, пул коннектов "за кадром" сам разберется, когда рвать фактическое соединение с БД, а для тебя - коннект должен существовать в пределах одного запроса. И используй асихронныее запросы к БД!
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907782
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Ролг Хупин
Как минимум статик переменные - плохо. Какой есть другой подход?

1. Не использовать статики.
2. Открыл коннект, выполнил запрос, закрыл коннект.

Очевидно же. В любой книжке по ASP.NET про это написано.


2.я так и предполагал, просто хотел получить подтверждение опытных девелоперов.
0. читать на каждом вызове метода настройки из appsettings.json?
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907783
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
статик переменные - плохо. Какой есть другой подход?
В Core встроенный DI , читай, что такое синглтон

+1

наверняка в большинстве примеров по ASP.NET Core используется EF, и там показано как в Startup.cs сетапить DbContext
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907785
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
наверняка в большинстве примеров
это человек, который игнорирует учебники и гордится этим )
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907789
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
0. читать на каждом вызове метода настройки из appsettings.json?

Нет, один раз в Startup-е.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907790
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

что там у тебя? PostgreSQL?
дык на официальном сайте дата провайдера жеж есть примеры: http://www.npgsql.org/efcore/
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907791
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Shocker.Pro
пропущено...
В Core встроенный DI , читай, что такое синглтон

+1

наверняка в большинстве примеров по ASP.NET Core используется EF, и там показано как в Startup.cs сетапить DbContext


Я, честно говоря, не хотел бы использовать EF, много лишнего. У меня несложные запросы, процедуры, всё в руках.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907793
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
skyANA
пропущено...

+1

наверняка в большинстве примеров по ASP.NET Core используется EF, и там показано как в Startup.cs сетапить DbContext


Я, честно говоря, не хотел бы использовать EF, много лишнего. У меня несложные запросы, процедуры, всё в руках.

Не используй, но тогда объясни, что такое db в твоём куске кода.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907794
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
skyANA
наверняка в большинстве примеров
это человек, который игнорирует учебники и гордится этим )


Не может юзер игнорировать учебники и еще и гордиться этим.
Ннаверняка это про какого-то человека, который в этой ветке не присутствует.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907798
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Ролг Хупин
пропущено...


Я, честно говоря, не хотел бы использовать EF, много лишнего. У меня несложные запросы, процедуры, всё в руках.

Не используй, но тогда объясни, что такое db в твоём куске кода.


Это моя реализация классов и методов работы с базой, NET Standard lib проект в solution.
О ней и вопрос.
Мне не нужны все эти EF'ские миграции, универсализации и пр.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907804
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Не может юзер игнорировать учебники и еще и гордиться этим.
Ннаверняка это про какого-то человека, который в этой ветке не присутствует.
22027728


(не выпилишь топором))))
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907806
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Это моя реализация классов и методов работы с базой
async! await!
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907815
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
Не может юзер игнорировать учебники и еще и гордиться этим.
Ннаверняка это про какого-то человека, который в этой ветке не присутствует.
22027728


(не выпилишь топором))))


ну, там же общие фразы
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907817
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
skyANA
пропущено...

Не используй, но тогда объясни, что такое db в твоём куске кода.


Это моя реализация классов и методов работы с базой, NET Standard lib проект в solution.
О ней и вопрос.
Мне не нужны все эти EF'ские миграции, универсализации и пр.

Внутри типа этого: http://www.npgsql.org/doc/index.html ?
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907827
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Ролг Хупин
пропущено...


Это моя реализация классов и методов работы с базой, NET Standard lib проект в solution.
О ней и вопрос.
Мне не нужны все эти EF'ские миграции, универсализации и пр.

Внутри типа этого: http://www.npgsql.org/doc/index.html ?


да, если методы доступа к базе вынести в отдельный проект, тогда останется только
var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";
сформировать один раз и передавать в каждый.
И даже лучше не передавать, а как было выше сказано - сделать типа контекста, который будет доступен отовсюду.
(извините, это я рассуждаю по следам рекомендаций)
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907852
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
статик переменные - плохо. Какой есть другой подход?
В Core встроенный DI , читай, что такое синглтон


кстати, синглетон по сути тот же статик?
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907853
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
кстати, синглетон по сути тот же статик?
Нет, читай про DI
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907854
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
кстати, синглетон по сути тот же статик?
Нет, читай про DI


ушел читать, но скоро вернусь ;-)
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907928
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Shocker.Pro
пропущено...
Нет, читай про DI


ушел читать, но скоро вернусь ;-)


Вернулся.
Сделал сервис, добавил его в public void
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
ConfigureServices(IServiceCollection services)
{
//...
 services.AddSingleton<IDataContextService>(new DataContextService()
            {
                ConnectionString = Configuration.GetSection("Data")["ConnectionString"]
            });
}



Ок.


Теперь вопрос: как добраться к нему в моих классах?
Протаскивать через контроллеры типа этого и далее в свои функции хелпера - это лучший вариант?
Имеется в виду, нельзя ли в своих хелперах сразу же добраться к этому сервису-синглетону

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class HomeController : Controller
{
    private readonly IDataContextService _dataService;

    public HomeController(IDataContextService dataService)
    {
        _dataService = dataService;
    }

    [HttpGet]
    public IActionResult Index([FromServices] IDataContextService dataService2)
    {
        IDataContextService  dataService3 = HttpContext.RequestServices.GetService<IDataContextService>();
        return View();
    }
}
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907929
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что ты подразумеваешь под хелпером?
Если это какой-то класс, то он точно так же получается через DI и нет нужды что-то там протаскивать, DI сам разберется.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907930
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Код: c#
1.
IDataContextService  dataService3 = HttpContext.RequestServices.GetService<IDataContextService>();

Это вообще что ещё такое?

у тебя есть поле в контроллере, зачем ты еще раз что-то там тянешь?
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907937
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Что ты подразумеваешь под хелпером?
Если это какой-то класс, то он точно так же получается через DI и нет нужды что-то там протаскивать, DI сам разберется.


это моя ассембли
View->Controller->DbHelper

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

Например, GetCustomer(string id)

View->Controller
[HttpGet]
GetCustomer(string id)
{
...
DbHelper.GetCustomer(id); //<-здесь уже коннект, запрос, дисконнект и пр.
...
return View();
}
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907942
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
Код: c#
1.
IDataContextService  dataService3 = HttpContext.RequestServices.GetService<IDataContextService>();

Это вообще что ещё такое?

у тебя есть поле в контроллере, зачем ты еще раз что-то там тянешь?


здесь читаю
https://joonasw.net/view/aspnet-core-di-deep-dive
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907961
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Например, GetCustomer(string id)
Неправильно. Ты плохо читал DI
Ты должен получить свой экземпляр DbHelper через DI
у него может быть зависимость от IDataContextService, но это проблема DI
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907963
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
значит ты не понял

вот хорошая книга, но большая
https://smarly.net/dependency-injection-in-net

Еще у Фримана неплохо, в принципе, описано, причем кратенько и применительно к ASP.NET Core
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907964
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто возьми для начала за основу, что если ты сделал статический класс, значит что-то ты сделал неправильно
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907966
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
Например, GetCustomer(string id)
Неправильно. Ты плохо читал DI
Ты должен получить свой экземпляр DbHelper через DI
у него может быть зависимость от IDataContextService, но это проблема DI


т.е. получается что я должен и свой хелпер тоже зарегистрировать как DI?
Может не колбаситься, а просто сделать вспомогательный класс для контролллера, и там все операции с базой делать.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907967
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
т.е. получается что я должен и свой хелпер тоже зарегистрировать как DI?
Именно так.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907969
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
т.е. получается что я должен и свой хелпер тоже зарегистрировать как DI?
Именно так.
Когда всё, что тебе нужно для работы, ты получаешь через DI, тебе не нужно думать о таких вещах - "как я прокину свою строку через контроллер в хелпер"
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907976
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Shocker.Pro
пропущено...
Неправильно. Ты плохо читал DI
Ты должен получить свой экземпляр DbHelper через DI
у него может быть зависимость от IDataContextService, но это проблема DI


т.е. получается что я должен и свой хелпер тоже зарегистрировать как DI?
Может не колбаситься, а просто сделать вспомогательный класс для контролллера, и там все операции с базой делать.

А в WinForms приложении как сделано?
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907977
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Ролг Хупин
пропущено...


т.е. получается что я должен и свой хелпер тоже зарегистрировать как DI?
Может не колбаситься, а просто сделать вспомогательный класс для контролллера, и там все операции с базой делать.

А в WinForms приложении как сделано?


Там несколько ассемблей, одна - своеобразный хелпер для работы с базой, всякие общие утилиты.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907990
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
skyANA
пропущено...

А в WinForms приложении как сделано?


Там несколько ассемблей, одна - своеобразный хелпер для работы с базой, всякие общие утилиты.

Вот значит откуда ноги растут.
Небось в нём работа со всеми таблицами базы?
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39907993
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Ролг Хупин
пропущено...


Там несколько ассемблей, одна - своеобразный хелпер для работы с базой, всякие общие утилиты.

Вот значит откуда ноги растут.
Небось в нём работа со всеми таблицами базы?


Ну, да, жесткий ручной микс. Винформс был настоящей находкой для незашоренных творческих девелоперов
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39908034
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
skyANA
пропущено...

Вот значит откуда ноги растут.
Небось в нём работа со всеми таблицами базы?


Ну, да, жесткий ручной микс. Винформс был настоящей находкой для незашоренных творческих девелоперов

Да, да.
Объектно-ориентированное, предметно-ориентированное проектирование и принципы SOLID изучать надо.
Оставим это институтским ботанам.

Фигачь как умеешь
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39908049
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
пропущено...


Ну, да, жесткий ручной микс. Винформс был настоящей находкой для незашоренных творческих девелоперов

Да, да.
Объектно-ориентированное, предметно-ориентированное проектирование и принципы SOLID изучать надо.
Оставим это институтским ботанам.

Фигачь как умеешь


секундочку, здесь рассогласование времен: винформс приложение было давно, потому "Фигачь" не подходит.
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39908054
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Дмитрий Мух
пропущено...

Да, да.
Объектно-ориентированное, предметно-ориентированное проектирование и принципы SOLID изучать надо.
Оставим это институтским ботанам.

Фигачь как умеешь


секундочку, здесь рассогласование времен: винформс приложение было давно...

Ещё скажи до появления ООП, DDD и SOLID :)
...
Рейтинг: 0 / 0
Вопрос по структуре MVC
    #39908059
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
пропущено...


секундочку, здесь рассогласование времен: винформс приложение было давно...

Ещё скажи до появления ООП, DDD и SOLID :)


не скажу!
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по структуре MVC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]