2012-07-28 3 views
1

Im пытается улучшить мою структуру кода, поэтому, возможно, я мог бы получить некоторый вклад в следующих пунктах и ​​вопросах относительно того, как обращаться в первую очередь с сервисами.MVC код структурирования вопросы наилучшей практики

  1. услуга не должна зависеть от уровня представления, поэтому передавая материал как HttpContext в сервисные функции/услуг через конструктор и подобные плохая практика, правильно?

  2. Если у вас нет услуг, ссылающихся друг на друга? Должны ли они работать только «вниз», как, например, зависимость репозитория? Или это считается нормально?

  3. Будет ли услуга содержать только функции, связанные с фильтрацией и обработкой информации из базы данных/репозитория, или же можно рассматривать, например, класс, предназначенный исключительно для шифрования и генерирующий случайные строки/пароли, или оператор-посредник, обслуживающий класс, услуга? Или они/можно было бы считать полезными классами?

  4. Есть ли хороший и общепринятый способ манипулирования сеансами внутри службы, или это должно быть передано контроллеру и обработано там?

+2

Привет, добро пожаловать в stackoverflow. Я понимаю, что MVC - это сложный вопрос, но ваш вопрос очень широк. Если вы читаете faq (http://stackoverflow.com/faq#dontask) 'Если вы можете представить целую книгу, которая отвечает на ваш вопрос, вы слишком много спрашиваете.« Существует много книг по mvc. Мой совет - просто попытаться создать структуру mvc, а затем задать конкретные вопросы по мере их появления. Нет ответа, который любой может дать вам, который поможет MVC просто иметь смысл. Это понимание основано на опыте. – Dave

+1

Вы говорите об ASP.NET MVC или шаблоне MVC в целом? Ваши теги заставляют его сбивать с толку, потому что это не одно и то же. –

+0

Привет и спасибо за приветствие;) Я говорил о asp.net MVC и о причине, о которой я говорил в очень широких выражениях, было то, что я больше искал общие рекомендации (если это возможно), а затем точно ответил на одну конкретную проблему. Кажется, что Luxspes отвечает на уровень ответа, который я искал, так что я доволен этим ответом, если теперь у него есть какие-то полезные дополнения к нему. На боковой панели я увидел, что люди рекомендуют книгу «Чистый код», поэтому я подумывал проверить это, чтобы увидеть, помогает ли мне погрузиться в предмет. – Baserz

ответ

1

услуга не должна зависеть от уровня представления, так передавая такие вещи, как HttpContext в функции службы/службы через contstructor и подобных плохая практика, правильно

Если вы может избежать этого, избегать этого. Но это зависит, если это сервис для уровня представления, тогда это может быть ОК.

Если у вас нет услуг, ссылающихся друг на друга? Должны ли они только работать «вниз», как, например, зависимость от хранилища? Или это считается нормально?

Если вы можете избежать этого, избегайте его. Он dependes на вас архитектуры, если, например, ваш работают в ASP.NET MVC, вы бы хорошо избежать этого и сохранить вид кода, который дирижирует свой множественный сервис на уровне Controller

Would служба содержит только функциональные возможности, связанные непосредственно с фильтрацией и обработкой информации из базы данных/репозитория, или можно рассматривать, например, класс, предназначенный исключительно для шифрования , и генерирование случайных строк/паролей или поставщика обработки классов . Что ж? Или они/были бы , возможно, рассмотрены классы полезности?

Вы можете использовать сервисы для фильтрации и обработки информации из базы данных/репозитория или вы также можете создать один, предназначенный исключительно для шифрования и генерирующий случайные строки/пароли. Услуги классы, так что важно, что они следуют за Single Responsability Principle

Есть хороший и общепринятый способ манипулировать сессии внутри службы или это должно быть передано в контроллер и обрабатывается там?

Это лучше для масштабирования, если ваши услуги без гражданства, но если вы собираетесь иметь дело с сессиями или другой жизненным циклом вещью, и вы строите веб-системы в .net, лучшее, что вы можете сделать, это используйте asp.net mvc, интегрированный с Unity, так что вы получите Inversion Of Control, таким образом вы можете иметь дело с сеансом, используя life time managers

Смежные вопросы