|
|
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! Решил переосмыслить свою недавнюю поделку - это небольшой портальчик, построенный с помощью MVC-фреймворка. Захотелось все сделать правильно с точки зрения проектирования архитектуры. Натолкнул на эту мысль очередной вебинар майкрософта по новой Visual Studio 11, в которой в том числе рассказывалось о MVC Mobile Applications. Идея то понятна: реализовать слой презентации можно как в виде обычного MVC-приложения, так еще и в виде мобильного MVC. Естественно, слой бизнес-логики остается один и тот-же. Так и решил сделать, разбив все на разные сборки. А дополнительно и DAL вынести отдельно, чтобы отделить реализацию конкретной ORM (сейчас у меня EF, но мало-ли что будет в дальнейшем). Появилась просто масса вопросов. Майкрософт везде об этом говорит абстрактно, мол - надо бы разделить, было бы неплохо. Но нигде в их сэмплах не увидел конкретной реализации этой идеи. Ну разве что DAL выделяют внутри с помощью инверсии зависимостей, вернее внедрения зависимостей. А вопросов действительно много. От простых, типа как правильно коннекшен-стринг до DAL протащить правильно, до более глобальных, типа как обеспечить общую модель обработки исключений. Собственно в этом и вопрос: Кто делал таким образом??? (т.е. разрабатывал многослойную архитектуру) Поделитесь, плиз, опытом. Мож, примеры какие-то... Не обязательно прям рабочие. Хотя-бы дрозофилку малюсенькую. А может быть просто кому-то попадались примеры и может ссылку кинуть! Я таких не смог найти - все довольно куцые. Перерыл кучу иностранных блогов и форумов, вплоть до индийских и китайских - такое скверное чувство что пока все это просто на словах... Иначе, чувствую, можно долго медитировать еще на картинку с разделением слоев и их названиями, но дело так и не сдвинется с мертвой точки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2012, 11:56 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
PS. Извините за ошибку в заголовке... случайность.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2012, 11:58 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeev, Модератор: Подправил название темы. А что Вы хотите от мобильного приложения? Это же форум по аспнет. Результат работы аспнет+ИИС - всегда html (xhtml) +цсс+яваскрипт, это всё почти всегда сейчас кушается мобильными устройствами. Или Вы хотите ИИС+аспнет на мобильное устройство поставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2012, 13:31 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
ShSergea_titeev, Модератор: Подправил название темы. А что Вы хотите от мобильного приложения? Это же форум по аспнет. Результат работы аспнет+ИИС - всегда html (xhtml) +цсс+яваскрипт, это всё почти всегда сейчас кушается мобильными устройствами. Или Вы хотите ИИС+аспнет на мобильное устройство поставить? дело не только в мобильном приложении, но в том числе и это. дело в корректном подходе проектирования MVC-приложения с разделением на логические части. Чего я не смог найти ни в одном полноценном примере... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2012, 13:42 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeevShSergea_titeev, Модератор: Подправил название темы. А что Вы хотите от мобильного приложения? Это же форум по аспнет. Результат работы аспнет+ИИС - всегда html (xhtml) +цсс+яваскрипт, это всё почти всегда сейчас кушается мобильными устройствами. Или Вы хотите ИИС+аспнет на мобильное устройство поставить? дело не только в мобильном приложении, но в том числе и это. дело в корректном подходе проектирования MVC-приложения с разделением на логические части. Чего я не смог найти ни в одном полноценном примере... ну в смысле, не поставить на мобильное устройство, а выделить уровень представления в отдельное приложение и по сути сделать их два - для обычных пользователей и для пользователей мобильных устройств, а не просто смешивая все в одном, разделяя вьюхи на обычные и мобильные, как в некоторых примерах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2012, 13:46 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeev а выделить уровень представления в отдельное приложение и по сути сделать их два - для обычных пользователей и для пользователей мобильных устройств, а не просто смешивая все в одном, разделяя вьюхи на обычные и мобильные, как в некоторых примерах. Вопрос в чем? Как вынести общий функционал в отдельную сборку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 15:58 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeevСобственно в этом и вопрос: Кто делал таким образом??? (т.е. разрабатывал многослойную архитектуру) Поделитесь, плиз, опытом. Мож, примеры какие-то... Не обязательно прям рабочие. Хотя-бы дрозофилку малюсенькую. А может быть просто кому-то попадались примеры и может ссылку кинуть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 16:07 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeevСобственно в этом и вопрос: Кто делал таким образом??? (т.е. разрабатывал многослойную архитектуру) Поделитесь, плиз, опытом. Мож, примеры какие-то... Не обязательно прям рабочие. Хотя-бы дрозофилку малюсенькую. А может быть просто кому-то попадались примеры и может ссылку кинуть! Какие примеры? Дрозофилка многослойной архитектуры? ) Нужно начинать с расслоения вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 19:16 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Парамон, вообщем-то, хотел именно пример, т.к. боюсь большого кол-ва вопросов... Можно конечно попробовать конкретизировать. Ну вот например: ну сделал я модель и интерфейсы репозитория - это bll? Я правильно понимаю? Цепляю di и имплементацию выношу в отдельную сборку - это и будет dal. Верно? Вот здесь бы пример посмотреть... Хотя здесь все еще логично. Но дальше - выношу всю бизнес-логику в сервис-прослойку bll. Контроллеры конкретные будут юзать только ее. Делаю mvc-приложение, подключаю сборку bll. Здесь уже непонятки с валидацией и обработкой исключений. Пример бы... Я понимаю, что пока это у меня в теории и 'на пальцах', поэтому и спрашивал - мож кто пример видел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 21:09 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Все зависит от масштабов, в разных приложениях может быть та или иная логика, которая в идеале там быть не должна. Теперь про идеал: a_titeevну сделал я модель и интерфейсы репозитория - это bll? Нет, это больше dal, репозиторий это прослойка между сервисным слоем и слоем данных. a_titeevЯ правильно понимаю? Цепляю di и имплементацию выношу в отдельную сборку - это и будет dal. Верно? Это больше bll. a_titeevЗдесь уже непонятки с валидацией и обработкой исключений. Логика валидации в сервисном слое, обработка исключений уже в контроллере ибо есть взаимодействие с UI. Пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 22:08 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Парамон, ну тогда это вообще все полностью наоборот! Не понял - как модель зависит от orm, а ведь dal - именно для этого и хотел - реализацию от ef отделить. Либо я путаю бизнес-сущности и сущности данных. Но тогда нужно будет вводить еще звено для конвертации. И насчет исключений большой вопрос. Имхо, должен быть единый механизм, сквозной для слоев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 22:37 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. -- Очень похоже на нынешний рынок IT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 22:38 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeevНе понял - как модель зависит от orm, а ведь dal - именно для этого и хотел - реализацию от ef отделить. Нужно немного вернутся назад и покурить терминологию. DAL это слой доступа к данным, ORM в вашей ситуации это и есть дал. На это натягиваем репозиторий, и дал уже имеет тупые запросы в базу. a_titeevЛибо я путаю бизнес-сущности и сущности данных. Это одно и тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 23:17 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Парамон, тогда да. Может запутался в терминах. Но думал что нужно отделить конкретную реализацию всех linq-методов от сервисов. Разве не это тогда и будет dal? Предположим, меняю я все под oracle. Весь bll по идее должен остаться неизменным. Те же модели... Та же логика., ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2012, 23:55 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. -- Очень похоже на нынешний рынок IT Или говоря попросту - фуфло впарить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 01:21 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeevНо думал что нужно отделить конкретную реализацию всех linq-методов от сервисов. Разве не это тогда и будет dal? Предположим, меняю я все под oracle. Весь bll по идее должен остаться неизменным. Те же модели... Та же логика., Каша у вас, linq методы могут иметь бизнес логику. Работать с разными db провайдерами это задача ORM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 11:43 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
a_titeev...Предположим, меняю я все под oracle. Весь bll по идее должен остаться неизменным. Те же модели... Та же логика., Это если БД не сложнее телефонного справочника . Иначе, какой смысл в кроссбазовом приложении, если приложение заново переписать гораздо дешевле, чем базу на другой платформе пересоздать? За всю историю реляционных БД, никогда таким не занимался. А вот программы-клиенты БД переписывал неоднократно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 15:18 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
ShSergeприложение заново переписать гораздо дешевле, чем базу на другой платформе пересоздать? В приложении бывает более 20 строк ), а для конверта базы есть готовые инструменты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 17:03 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
ПарамонВ приложении бывает более 20 строк ), а для конверта базы есть готовые инструменты. Насчёт конвертора - шутка такая? Даже "ручками" не всегда получается. Типы не совпадают, например. Я уже не говорю про триггеры, функции и хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 18:04 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
ShSerge Я уже не говорю про триггеры, функции и хранимые процедуры. Не все нынче держат логику в базе. Только без холивара на эту тему ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 19:28 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Парамон, Старые таки да, держат. Очень многие. Включая Вашу зарплатную карточку. :) А почему без холивара? В холеваре рождается истина. У меня был проект насчёт карточек, которые в поликлинике. В масштабе РФ. Миллионы записей. Вся логика была реализована в БД. Прикрутить вэб-интерфейс (на любой платформе, начиналось с делфей) или любую другую морду - вообще, как два пальца... . А что Вы будете делать со своим мегапроектом с логикой в приложении? Даже смайлик не ставлю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 20:58 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
Курим Microsoft Application Architecture Guide, 2nd Edition. Там всё написано, где должна быть логика. Сразу оговорюсь, в базе данных ей не место. По поводу "зарплатных карточек". Весь современный мир биллинга юзает SOA подходы, еще со времен СиБосса, который впаривал биллинг МТС'у. О логике в БД с триггерами пусть вспоминают деды-колдуны на дельфи 5. Там да, особо не попляшешь на апп слое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 21:05 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
МСУ в топке, Ну и что? Мы же здесь не сертификаты забабло продаём. Можно и честно сказать, что много есть такого, что и не снилось вашим преподавателям. В противном случае, они бы просто из этих самых преподавателей уволились бы и занялись продажей шавермы, что для общества было бы гораздо полезнее, если соблюдать санитарные нормы, конечно. Я привёл пример, когда база - достаточно бòльшая ценность, чем Ваша программа, которых над одной базой бывает десятки, как было у меня. Не платите деньги карточкой, не летайте самолётами (опасно с такими специалистами, однако), и т.д. и т.п. . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 21:30 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
МСУ в топке...Сразу оговорюсь, в базе данных ей не место... Вы офонарели? Майкрософт с самого начала писал, что именно в БД бизнеслогике место. С тех пор инструменты и технология только улучшилась. Теперь почти обо всех БД так пишут. За исключением, конечно некоторых, которые явно на любителя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 21:43 |
|
||
|
MVC. Многослойная архитектура.
|
|||
|---|---|---|---|
|
#18+
ShSergeА почему без холивара? На эту тему их уже было достаточно, а повторятся в каждой теме, это против - (DRY) Don't Repeat Yourself. Нет сомнений, что работа приложения, больше зависит от прямоты рук, чем от выбора архитектуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2012, 22:24 |
|
||
|
|

start [/forum/topic.php?fid=18&tid=1359827]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 502ms |

| 0 / 0 |
