|
MVP и Service Layer
|
|||
---|---|---|---|
#18+
Рою тут интернет, думаю. Куда расположить бизнес-логику в MVP? В одном проекте получилось выделить её в слой сервисов. Вид (формы) - пассивный, ничего не знает о презентерах. Презентеры тоже лаконичны, делают запросы в уровень сервисов. Сервисы содержат всю сложную логику, вычисления и для доступа к БД обращаются в слой репозиториев. И вот смотрю я на этот проект и понимаю, что слой Model - это просто классы с перечислением полей. Ну, например PassСard (пропуск-карточка). На форме у грида DataSource - это BindingList<PassCard>. Его присваивает презентер, презентеру этот список передаёт сервис, а сервис получает этот список из репозитория. То есть Model затрагивает все слои, хоть и пассивно, сам не содержит никаких функций вообще. Есть второй проект, в котором некоторая мешанина и её нужно прибрать. И вот я читаю интернетики и понимаю, что в MVP сервисов вроде как и вообще не должно быть. Но как это, понять сложно, проекты на github с MVP все довольно простые, замучился уже искать. То есть вот какой есть проект, например. Есть устройство, которое в своей памяти хранит ключи. Люди проходят через проходную, подносят к считывателю ключ-карту, устройство ищет в своей памяти ключ и если находит - открывает проход. Также есть ПО, которое эти ключи записывает в БД или удаляет их из БД. Серверное ПО должно следить, чтобы в БД и на устройстве ключи были идентичными. То есть программа выглядит следующим образом: получить ключи из устройства, получить ключи из БД, сравнить их и выполнить запись/стирание ключей на устройстве. Теперь как это выглядит (упрощённо) в архитектуре: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
Как вы думаете, нужны ли в данном случае сервисы и сервисный слой или это всё можно как-то распихать в модели? Мне вот просто непонятно, куда запихать тогда функцию SyncronizeKeys(). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2015, 05:02 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1401967]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 141ms |
0 / 0 |