Почему это плохая практика — выполнять SQL и большую часть логики непосредственно в контроллере веб-API, взаимодействующC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему это плохая практика — выполнять SQL и большую часть логики непосредственно в контроллере веб-API, взаимодействующ

Сообщение Anonymous »

Я изо всех сил пытаюсь понять, почему абстракция необходима для основного веб-API asp.net. Я программист-любитель, поэтому это может быть ужасный вопрос, но я изо всех сил пытаюсь найти на него хороший ответ. Мое приложение — это приложение MVC, но это SPA, поэтому я решил наконец разделить свой бэкэнд и интерфейс. Но именно поэтому я начинаю сомневаться в своей текущей настройке серверной части. В настоящее время у меня есть контроллер для каждого аспекта моего приложения, например DashboardController, AccountController и т. д. для каждой страницы моего приложения, поэтому я объединяю свой запрос API с соответствующей страницей/контроллером. Я использую некоторые преимущества внедрения зависимостей и сервисов для вещей, которые я использую в контроллерах и методах в контроллерах, таких как методы графа MS для загрузки документов или отправки электронных писем и т. д. Каждый раз, когда я запускаю изящный SQL-запрос, я делаю это непосредственно в контроллере. как в этом примере:

Код: Выделить всё

    [HttpGet]
public async Task GetMyReviews()
{

string json;
string query;

using (var connection = new SqlConnection(connectionString))
{

query = "select dbo.storedprocedure_JSON(@UserID)";

json = await connection.QuerySingleAsync(query, new { UserID = UserID });

}

if (json == null)
{
json = "[]";
}

return Content(json, "application/json");
}
У меня есть миллион запросов такого типа в моих контроллерах для извлечения данных из нашей базы данных и передачи во внешний интерфейс, и иногда я делаю дополнительные действия с данными перед обновлением базы данных или раньше. отправка обратно во фронтенд. Из этой статьи о реализации dapper:
https://code-maze.com/using-dapper-with ... e-web-api/
Автор создает службу dbcontext в качестве временного процесса, который затем внедряется в другой репозиторий/интерфейс, где выполняются вызовы базы данных. Затем из контроллеров вызывается сам репозиторий/интерфейс. Это создает три отдельные области, которые необходимо поддерживать в коде, и в которых я по большей части просто помещаю все в контроллер. Кроме того, когда вы видите, что реализация dbcontext непосредственно в сервис все равно требует столько же кода с оператором using, сколько у меня, так что мне снова кажется, что это не имеет особого смысла:

Код: Выделить всё

public async Task GetCompanies()
{
var query = "SELECT * FROM Companies";
using (var connection = _context.CreateConnection())
{
var companies = await connection.QueryAsync(query);
return companies.ToList();
}
}
Так является ли мой способ сделать это неправильным, и мне следует следовать этому автору (многие статьи, которые я читаю, следуют этому похожему подходу) или лучше просто? У меня около 15 контроллеров, использующих мой подход. Стоит ли этот авторский подход отделять вещи или абстрагировать, если вы планируете повторно использовать функциональность снова и снова?

Подробнее здесь: https://stackoverflow.com/questions/781 ... controller
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • EF Core View — размещение логики бизнес-логики
    Anonymous » » в форуме C#
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Размещение логики ввода и логики обработки в C ++ [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Почему вызывать System.gc() — плохая практика?
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Плохая ли практика передавать списки между функциями для сохранения состояния ошибки?
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Неявный импорт подмодулей пакетов в Python — плохая практика?
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»