задание сделать библиотеку(реальная с книгами и газетами) с использованием трехслойной архитектурой, где UI - asp net mvc. Первым заданием делал бизнем логику и дал(ado.net). Там я сделал методы для поиска, получения всех, сортировки по полю без пагинации. Потом дали тз на mvc. и там добавили пагинацию. И все методы что я делал без пагинации мне надо переделать так чтобы они могли принимать номер страницы и возвращать определенное количество объектов. Я стажер, и только обучаюсь к проду. Я понимаю, что это можно просто переделать, ко всем методам добавить по параметру(в логике, потом в DAL, потом в хранимые процедуры в БД). Это пока маленькая система, но ведь когда я буду на проде там будет системы большие. Ведь там я не буду переписывать все методы. В связи с этим вопрос. Как можно переделать так, чтобы не переписывать все методы , а просто как-нибудь расширить функционал методов. И я не прошу с кодом помочь, мне бы идею подкинуть, чтоб неполучилось *овно-кода Надеюсь не запутал. Заранее спасибо
Если правильно делать логику соблюдая все паттерны и трёхуровневую архитектуру, то переделывать если и надо будет то только метод в сервисе. И лучше списки в слое бизнес-логике писать с расчётом на пагинацию: опцинальные параметры take
и skip
. Например, метод для получения списка пользователей:
public async Task<List<UserResponse>> GetAllUsersAsync(int? skip = null, int? take = null)
{
if (take == null)
{
List<User> users = await _context.Users.OrderBy(x => x.FullNameNormalized)
.Skip(skip.GetValueOrDefault())
.ToListAsync();
return users.ToUserResponseList();
}
else
{
List<User> users = await _context.Users.OrderBy(x => x.FullNameNormalized)
.Skip(skip.GetValueOrDefault())
.Take(take.Value)
.ToListAsync();
return users.ToUserResponseList();
}
}
Я могу вызвать этот метод с null
параметрами и получить весь список, а могу указать смещение и сколько записей брать. Если понадобится сделать пагинацию, то мне не придётся ничего менять ни в слое доступа к данным, ни в слое бизнес-логики.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть textbox в который из бд выводится номер телефона:
На вьюхе есть Html хелпер который генерирует следующую разметку: