powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Repository & Service
25 сообщений из 133, страница 3 из 6
Repository & Service
    #39185637
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttНу проще и понятнее было бы логику обособлять в отдельном модуле (или в модулях), для многократного использования в различном применении.Браво! Нобелевскую!

Ты первый, кто до этого додумался!

Алексей КМне надоело упражняться в красноречии, я лучше пойду. Удачи!

Упражняться надо не в красноречии, а в разработке, изучать тему, повышать профессионализм. Если тебе это не надо, зачем тогда лезть в дискуссии с нелепыми и глупыми высказываниями, без единой аргументации? Красноречие не поможет, увы.
...
Рейтинг: 0 / 0
Repository & Service
    #39185638
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, как обзывать классы, инкапсулирующие бизнес-логику, и в какие модули выносить - это отдельный вопрос.

Давай вернёмся к ТС: "Зачем вообще слой Service? Такое ощущение что вместо сервиса можно использовать сразу репозиторий в клиенте".

Тут как в присказке: сказал А, говори Б. Надо сначала разобраться что понимается под «слоем Service».

Прикладной код не должен иметь прямого доступа к репозиторию.
...
Рейтинг: 0 / 0
Repository & Service
    #39185701
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttskyANAhVostt, как обзывать классы, инкапсулирующие бизнес-логику, и в какие модули выносить - это отдельный вопрос.
Давай вернёмся к ТС: "Зачем вообще слой Service? Такое ощущение что вместо сервиса можно использовать сразу репозиторий в клиенте".
Надо сначала разобраться что понимается под «слоем Service».
Для этого было в начале выложен примеры кода - клиента, сервиса и репозитория, которые гуляют по интернету.

Всем спасибо. Много интересных коментариев.

По поводу выноса логики из вью, контроллеров итд ... с этим понятно. И с тем что нет условно одного правильного решения для всех случаев жизни. И вопрос не как правильно, а как правильнее ... Ну и да, смотря на пример выше я нивижу сервис каким то "пустым" чтоли... но как объяснили выше он может содержать в себе более 2х репозиториев, транзакции итд...

И тут у меня возникает еще один вопрос. Сервис имеет в себе репозиторий UserRepository с методом GetUser. Я получаю User'a и его Roles. Правильнее будет отключить LazyLoadingEnabled ? и добавить в сервис RoleRepository?
...
Рейтинг: 0 / 0
Repository & Service
    #39185798
Владимир Путин-Ленин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GПравильнее будет отключить LazyLoadingEnabled ? и добавить в сервис RoleRepository?

это чисто прикладное решение которое полностью за вами. можно и так и сяк
...
Рейтинг: 0 / 0
Repository & Service
    #39185887
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GИ тут у меня возникает еще один вопрос. Сервис имеет в себе репозиторий UserRepository с методом GetUser. Я получаю User'a и его Roles. Правильнее будет отключить LazyLoadingEnabled ? и добавить в сервис RoleRepository?

Правильнее так, lazy load это фишка EF, а по сути ни что иное, как костыль!

Сейчас тебе понадобилась просто ленивая загрузка данных через навигационные поля. А потом тебе понадобится фильтрация этих данных... и начались проблемы.

В общем, тяни данные только непосредственно из репозитория, навигационные поля используй для проекции и для записи/сохранения. Этим ты убережёшь себя и других разработчиков от огромной кучи проблем на будущее. И это правильно.

Обязательно разберись с проекциями, это мощнейший инструмент, я не перестаю повторять об этом здесь.
...
Рейтинг: 0 / 0
Repository & Service
    #39185938
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttОбязательно разберись с проекциями, это мощнейший инструмент, я не перестаю повторять об этом здесь.
хм, новое слово ... это вот об этом идет речь? https://msdn.microsoft.com/ru-ru/library/bb386978(v=vs.100).aspx
...
Рейтинг: 0 / 0
Repository & Service
    #39185971
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G
Код: c#
1.
2.
3.
4.
5.
6.
        public ActionResult Index()
        {
            var category = categoryService.GetCategory(false);
            var modelCategoryViewModel = Mapper.Map<Category, CategoryViewModel>(category);
            return View(viewModelGadgets);
        }


Господа, я дико извиняюсь, но кто такой viewModelGadgets?
...
Рейтинг: 0 / 0
Repository & Service
    #39185973
Владимир Путин-Ленин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВГоспода, я дико извиняюсь, но кто такой viewModel Gadgets?
...
Рейтинг: 0 / 0
Repository & Service
    #39185981
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Путин-Ленин,
Где определение выше по коду?
...
Рейтинг: 0 / 0
Repository & Service
    #39185985
Владимир Путин-Ленин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВладимир Путин-Ленин,
Где определение выше по коду?


ну оно не в коде выше, видно в другом месте. если честно, не совсем вопрос понял
...
Рейтинг: 0 / 0
Repository & Service
    #39186001
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Путин-Ленин,
Смотри первый вопрос!
По идее он должен пихнуть был modelCategoryViewModel, иначе какой смысл получать эту мутоту?

А пихает неопознанный viewModelGadgets!
...
Рейтинг: 0 / 0
Repository & Service
    #39186007
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GhVosttпропущено...

Надо сначала разобраться что понимается под «слоем Service».
Для этого было в начале выложен примеры кода - клиента, сервиса и репозитория, которые гуляют по интернету.
В интернете подробно расписано, что такое репозиторий, зачем появился, как использовать, как не использовать... А Вы притащили сюда какой-то кривой пример, фиг знает кем писаный.

Вы лучше о своём проекте расскажите подробнее, будут более конкретные советы по его архитектуре.
...
Рейтинг: 0 / 0
Repository & Service
    #39186008
Владимир Путин-Ленин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВладимир Путин-Ленин,
Смотри первый вопрос!
По идее он должен пихнуть был modelCategoryViewModel, иначе какой смысл получать эту мутоту?

А пихает неопознанный viewModelGadgets!

ну, наверное опечатка
...
Рейтинг: 0 / 0
Repository & Service
    #39186186
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Путин-ЛенинЕвгенийВВладимир Путин-Ленин,
Смотри первый вопрос!
По идее он должен пихнуть был modelCategoryViewModel, иначе какой смысл получать эту мутоту?
А пихает неопознанный viewModelGadgets!
ну, наверное опечатка
Опечатка. Код был взять из проекта с GitHube и редактировался на форуме ... убиралось лишнее. оставлял только суть.
...
Рейтинг: 0 / 0
Repository & Service
    #39186251
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВы лучше о своём проекте расскажите подробнее, будут более конкретные советы по его архитектуре.

...
Рейтинг: 0 / 0
Repository & Service
    #39186255
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто вообще сказал, что сервис должен работать с репозиторием? сервис может работать с чем угодно и с репозиторием в том числе
...
Рейтинг: 0 / 0
Repository & Service
    #39186256
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesкто вообще сказал, что сервис должен работать с репозиторием? сервис может работать с чем угодно и с репозиторием в том числе

а к этому "чем угодно" он будет обращаться прямо?
...
Рейтинг: 0 / 0
Repository & Service
    #39186258
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesкто вообще сказал, что сервис должен работать с репозиторием? сервис может работать с чем угодно и с репозиторием в том числе

Вообще не должен. Сервис это некая универсальная концепция некой инкапсулированной работы, выраженная в дотнете интерфейсом и его реализующим классом, а в тестах подделкой.
...
Рейтинг: 0 / 0
Repository & Service
    #39186259
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил КантRoman Mejtesкто вообще сказал, что сервис должен работать с репозиторием? сервис может работать с чем угодно и с репозиторием в том числе

а к этому "чем угодно" он будет обращаться прямо?

Просто сервис может работать с данными, которые ему дадут вместо извлечения их из репозитория. Например, он может получать query handler.
...
Рейтинг: 0 / 0
Repository & Service
    #39186260
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИммануил Кантпропущено...


а к этому "чем угодно" он будет обращаться прямо?

Просто сервис может работать с данными, которые ему дадут вместо извлечения их из репозитория. Например, он может получать query handler.


если выделили этот слой. то данные только из репо.
...
Рейтинг: 0 / 0
Repository & Service
    #39186261
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил КантhVosttпропущено...


Просто сервис может работать с данными, которые ему дадут вместо извлечения их из репозитория. Например, он может получать query handler.


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

или ты имеешь ввиду некоторый "вход"?
...
Рейтинг: 0 / 0
Repository & Service
    #39186263
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа

Код: c#
1.
2.
3.
4.
5.
void M (Some s)
{
    if (проверка(s))
       throw;
}
...
Рейтинг: 0 / 0
Repository & Service
    #39186622
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttОбязательно разберись с проекциями, это мощнейший инструмент, я не перестаю повторять об этом здесь.
Продублирую еще раз вопрос, так как видно потерялся :)
хм, новое слово ... это вот об этом идет речь? https://msdn.microsoft.com/ru-ru/library/bb386978(v=vs.100).aspx
...
Рейтинг: 0 / 0
Repository & Service
    #39186647
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GhVosttОбязательно разберись с проекциями, это мощнейший инструмент, я не перестаю повторять об этом здесь.
Продублирую еще раз вопрос, так как видно потерялся :)
хм, новое слово ... это вот об этом идет речь? https://msdn.microsoft.com/ru-ru/library/bb386978(v=vs.100).aspx

Да, об этом. Ещё можно воспользоваться вот этим: https://github.com/AutoMapper/AutoMapper/wiki/Projection
...
Рейтинг: 0 / 0
Repository & Service
    #39186721
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просмотрел кучу инет страниц об UnitOfWork. Оказалась каждый делает как ему в голову стукнет. Вариантов с десяток.
И появилось еще несколько вопросов ... как будет правильнее / лучше ...

1. Передав UnitOfWork в сервис (пример в спойлере), нужно ли передовать еще и Репозиторий IApplicationRepository?
Видел вариант где в конструктор Сервиса передавался и IApplicationRepository и UnitOfWork. Запросы делались через IApplicationRepository а у UnitOfWork использовался только метод SaveChanges. Но мне кажется что передавать еще и IApplicationRepository излишне.

2. Видел вариант где в Сервисе в конструкторе передается IReposritory<Application> а не IApplicationRepository, а ApplicationRepository и его методы статичны и расширяют IReposritory<Application>. Это нормально? или Правильно? Сейчас у меня в IUnitOfWork IApplicationRepository, а не IReposritory<Application> можно увидет в примере ниже, иначе я не имею доступ к методу GetApplications(Blocked: blocked), который в IApplicationRepository.

3. Транзакции делаются в Сервисе через TransactionScope? или есть другие варианты? для примера с DbContextTransaction?
Помниться у меня был какой-то негативный опыт с TransactionScope. Какой, не помню.

Пример ApplicationService
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    public class ApplicationService : IApplicationService
    {
        private readonly IUnitOfWork unitOfWork;
        private readonly IMapper mapper;
        public ApplicationService(IUnitOfWork unitOfWork, IMapper mapper)
        {
            this.unitOfWork = unitOfWork;
            this.mapper = mapper;
        }
        public IEnumerable<Application> GetApplications(bool blocked)
        {
            var applicationsDb = unitOfWork.ApplicationRepository.GetApplications(Blocked: blocked);  //   <--- Это корректно? Или 
            var applications = mapper.Map<IEnumerable<Application>>(applicationsDb);
            return applications;
        }
    }
}



Пример UnitOfWork
Код: c#
1.
2.
3.
4.
5.
    public interface IUnitOfWork : IDisposable
    {
        IApplicationRepository ApplicationRepository { get; }
        void Commit();
    }


...
Рейтинг: 0 / 0
25 сообщений из 133, страница 3 из 6
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Repository & Service
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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