powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переход на MVC 4
223 сообщений из 223, показаны все 9 страниц
Переход на MVC 4
    #38092633
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Есть проект на MVC3 все работает, но есть активность (пока только шум), что надо будет переводить на MVC4.
Лично я не вижу ни каких плюшек, может кто что подсказать по данной теме? У кого был опыт перевода или разработки под MVC4, какие грабли, в чем преимущества или наоборот и т.д.?

P.S. Пока я вижу что только увеличился размер за счет бОльшого количества библиотек. Сам проект это корпоративное приложение, нет цели поддерживать моб. устройства или например web api сейчас и так все на wcf работает, оснастку можно любую прикрутить.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092641
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092659
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок,
еще не успел почитать доку по MVC 4.

P.S. от вас не ожидал этого услышать :) ну это так в шутку!
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092668
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackP.S. от вас не ожидал этого услышать :) ну это так в шутку!
Мне MVC4 нравится больше, чем WebForms. Просто последнему жить точно, а MVC под вопросом :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092683
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVC же помер, не?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092694
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMVC же помер, не?
SL помер, MVC следующий. Посмотрим.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092715
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУeJackP.S. от вас не ожидал этого услышать :) ну это так в шутку!
Мне MVC4 нравится больше, чем WebForms. Просто последнему жить точно, а MVC под вопросом :)

Ок, понятно.

Коллеги, давайте холивар не начинать.
Всем большое спасибо!
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092718
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackКоллеги, давайте холивар не начинать.
слово - не воробей, вылетит - не поймаешь.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092743
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackКоллеги, давайте холивар не начинать.
Шутник
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092752
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIeJackКоллеги, давайте холивар не начинать.
Шутник
кто в восторге от Razor ?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092848
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

SL с самого начала была полуглупая затея, но при чём тут MVC? с чего это он должен умереть? посмотрите количество проектов под MVC на GitHub , на CodePlex , последний коммит в ветку разработки MVC был 4 дня назад.

Откуда такие мысли про смерть ASP.NET MVC? Учитывая, что по сравнению с WebForms это действительно полезный и мощный инструмент. Когда я в последний раз разрабатывал под WebForms, мне хотелось выстрелить себе в голову. А на MVC — кайф ))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092879
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
SL с самого начала была полуглупая затея...
И че ета?

hVosttКогда я в последний раз разрабатывал под WebForms, мне хотелось выстрелить себе в голову.
Тебе все таки придется это сделать когда МСУ проснется
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092886
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилкто в восторге от Razor ?
Я. ASPX движок какой-то унылый.

hVosttМСУ, SL с самого начала была полуглупая затея
Это еще почему? Вроде как конкуренция флешу, своя клиентская песочница от майкрософта - выглядит весьма аппетитно (если взлетело бы).

hVosttно при чём тут MVC? с чего это он должен умереть?
Читать с самого начала: http://www.sql.ru/forum/actualthread.aspx?tid=989503

hVosttКогда я в последний раз разрабатывал под WebForms, мне хотелось выстрелить себе в голову
Нужно было это сделать. Ибо не осилил ты.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092887
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIТебе все таки придется это сделать когда МСУ проснется
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092905
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttМСУ, SL с самого начала была полуглупая затея
Это еще почему? Вроде как конкуренция флешу, своя клиентская песочница от майкрософта - выглядит весьма аппетитно (если взлетело бы).

Про конкуренцию флешу, поздноватенько вышли на рынок. Сама по себе вещь-то не плохая вышла, но смысол при активном развитии HTML5? Во внутрикорпоративных сетях ОК, но не для инета.

МСУhVosttно при чём тут MVC? с чего это он должен умереть?
Читать с самого начала: http://www.sql.ru/forum/actualthread.aspx?tid=989503

Расплывчато и не понятно. Четких аргументов нет. Если моська сказала, что возможно не будет развивать MVC, так оно опен-соурс, и живет на стеке ASP.NET. Развивается ASP.NET, значит развивается MVC. Нет причин для паники ))

МСУhVosttКогда я в последний раз разрабатывал под WebForms, мне хотелось выстрелить себе в голову
Нужно было это сделать. Ибо не осилил ты.

Нет уж. Осиливать дао борьбы с фреймворком это задача для истиных самураев, умеющих ко всему прочему втягивать в себя яйца. Веб-сайты на вебформах в 90% убоги чуть менее, чем полностью. Начиная с хранения состояния формы — оно вообще, зачем может в принципе понадобиться? Больное вооброжение создателей наверняка рисовало себе картины, в которых программист пишет один и тот же код для настольных и веб-приложений. Но они же, чорт побьери, разные..
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092921
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПро конкуренцию флешу, поздноватенько вышли на рынок. Сама по себе вещь-то не плохая вышла, но смысол при активном развитии HTML5? Во внутрикорпоративных сетях ОК, но не для инета.
1. Своевременность - не проблема, при активной финансовой составляющей маркетинга MS, они-таки убили бы флеш от адоба.
2. Так или иначе, сравнивать возможности XAML и HTML5 бессмысленно, полноценная песочница на клиенте мощнее по определению.

hVosttРасплывчато и не понятно. Четких аргументов нет. Если моська сказала, что возможно не будет развивать MVC, так оно опен-соурс, и живет на стеке ASP.NET. Развивается ASP.NET, значит развивается MVC. Нет причин для паники ))
Не расплывчато и конкретно - нет смысла держать на привязи двух оголтелых псов, внося раздор в комьюнити. Стратегия должна быть однозначна и понятна всем.

hVosttНет уж. Осиливать дао борьбы с фреймворком это задача для истиных самураев, умеющих ко всему прочему втягивать в себя яйца.
Именно для таких самураев разработка противопоказана априори, глядишь и яйца себе разобьют. Тут нужно еще шевелить мозгами, если их нет - лучше заняться земледелием.

hVosttВеб-сайты на вебформах в 90% убоги чуть менее, чем полностью.
У таких самураев - да, у нормальных специалистов - нет, эти сайты ничем не отличаются от остальных.

hVosttНачиная с хранения состояния формы — оно вообще, зачем может в принципе понадобиться?
Не вижу ничего предсудительного в хранении вьюстейта. Оно вообще может понадобиться, когда тебе нужно сохранять состояние. Банально, да? Многие контролы используют его, особенно полезно в гридах и т.п. Не нравится - никто не заставляет использовать, не вижу паники.

hVosttБольное вооброжение создателей наверняка рисовало себе картины, в которых программист пишет один и тот же код для настольных и веб-приложений. Но они же, чорт побьери, разные..
Вовсе не так, создатели хотели отделить представление от его логики, и им это удалось - aspx/ascx и кодбехайнд.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092935
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ладно про SL и смерть MVC забьём (хотя покопайтесь в предыстории создания MVC, одна из основных причин — уродство WebForms и тонна критики сообщества за это уродство)

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

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

вернемся к сути. состояние. вы вообще в курсе про REST? каким задумывался веб? каким он должен быть? и самое главное, почему REST, а не какие-нить RPC или суррогатные недоделанные убогие веб-формы, которые только с виду кажутся «элементами на событиях». никаких событий там и в помине нет. все эт (за каким-то хреном) эмулируется. и затраты не оправданы.

П.С. видали мы засейвленные вьюстейты гигабайтных размеров.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092941
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНет уж. Осиливать дао борьбы с фреймворком это задача для истиных самураев, умеющих ко всему прочему втягивать в себя яйца. Веб-сайты на вебформах в 90% убоги чуть менее, чем полностью. Начиная с хранения состояния формы — оно вообще, зачем может в принципе понадобиться? Больное вооброжение создателей наверняка рисовало себе картины, в которых программист пишет один и тот же код для настольных и веб-приложений. Но они же, чорт побьери, разные..

не пишите пурги...не важно мвц или формы. и там и там можно делать одно и тоже.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092946
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

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

но на мвц я это можно сделать в разы быстрее, с комфортом и ветерком.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092953
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвернемся к сути. состояние. вы вообще в курсе про REST? каким задумывался веб? каким он должен быть? и самое главное, почему REST, а не какие-нить RPC или суррогатные недоделанные убогие веб-формы, которые только с виду кажутся «элементами на событиях». никаких событий там и в помине нет. все эт (за каким-то хреном) эмулируется. и затраты не оправданы.

и? почему от этого сайты убогие ?) вопрос рук актуален..если вы перетаскиваете контролы это ваши проблемы
про затрыты..нука в студию ссылки что веб формы медлнее мвц.

hVosttП.С. видали мы засейвленные вьюстейты гигабайтных размеров.

ахаха ..собственно МСУ и сказал про корявость рук.

П.С. конечно мвц удобнее но говорить что веб формы убого все это вопрос убогости мышления и применения на практике. Мне вообще плевать на чем делать, закажут на веб формах сделаю на них...скажут мвц сделаю на них..плевать но получиться для юзера одно и тоже
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092959
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttхотя покопайтесь в предыстории создания MVC, одна из основных причин — уродство WebForms и тонна критики сообщества за это уродство
Вовсе не так, MVC появилось не для того, чтобы заменить WebForms, и показывать её недостатки. MVC появилось для того, чтобы людям показать другую концепцию написания веб-приложений, ориентированную на модный паттерн проектирования MVP (MVC). Всего-то. А комьюнити восприняло это как убиение WebForms и всё пошло как обычно - шумиха, гул и троллинг. Именно поэтому нельзя вести такую политику и в MS это осознают - зачем держать в узде две как-бы конкурирующие технологии, внося раздор в своё же комьюнтти? У PHP и Java такого беспредела не наблюдается.

hVosttна счет веб-формс. вот только не надо начинать про профессионализм. найдутся и такие специалисты, которые на брайнфаке смогут виндоус написать. а потом говорить остальным, что они просто все тупые, недалекие идиоты.
Про профессионализм нужно начинать, причем всегда. Найдутся такие кретины, которые на самом деле ничего не умеют и ничего не знают, но при этом будут утверждать, что это гавно, а это кул. По типу, Достоевского не читал, но осуждаю.

hVosttхороший фреймворк должен быть легкоусвояем, прост, удобен и быстр. это не значит что он должен быть для домохояек. хотя именно для домохозяек изначально и позиционировался веб-формс. контролы мышой двигуются на форму ложатся, даже байндинги устанавливаются мышой. красота. но почему же при фсем при этом требуется недюжий профессионализм, чтобы из этого сделать хоть что-то хорошее? не складывается.
А что ж тут плохого, если у технологии низких порог вхождения? Это особенно полезно тем, кто перелез с десктопа.
Во-вторых, даже мышкой можно сделать качественный продукт, который будет удовлетворять всем требованиям.

hVosttвернемся к сути. состояние. вы вообще в курсе про REST?
Вообще, в курсе.

hVosttкаким задумывался веб? каким он должен быть? и самое главное, почему REST, а не какие-нить RPC или суррогатные недоделанные убогие веб-формы, которые только с виду кажутся «элементами на событиях». никаких событий там и в помине нет. все эт (за каким-то хреном) эмулируется. и затраты не оправданы.
REST - не панацея, я это говорил, говорю и буду говорить. Давай еще порассуждаем, что SOAP - это зло, а RESTful - тру.
Каким задумывался веб - малоинтересующий фактор, не нужно жить конкретными стереотипами, события - это хорошо и удобно.
В классическом вебе не было и аякса, и песочниц со своими экшен скриптами и т.п. Что дальше, как вообще жить без аякса в современном обществе? Стереотипы нужно ломать.

hVosttП.С. видали мы засейвленные вьюстейты гигабайтных размеров.
Проблема не технологии, а водителя. Зришь не в тот корень.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092960
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttна мвц я это можно сделать в разы быстрее, с комфортом и ветерком.
На счет скорости разработки - глупости несусветные.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092964
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвернемся к сути. состояние. вы вообще в курсе про REST? каким задумывался веб? каким он должен быть? и самое главное, почему REST, а не какие-нить RPC или суррогатные недоделанные убогие веб-формы, которые только с виду кажутся «элементами на событиях». никаких событий там и в помине нет. все эт (за каким-то хреном) эмулируется. и затраты не оправданы.

Как позновательно и каким же задумывался веб? И каким он должен быть?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092965
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

что-то вы опять придумываете. я ничего не говорил про «медленнее». и хотя общее впечатление от сайтов на веб-формах именно такое у меня и осталось. но это все конечно же происки кривых рук. они везде, они повсюдуу... так можно про всё что угодно сказать — не вышел по нашему рецепту пирог?? да у вас же кривые руки!
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092970
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтак можно про всё что угодно сказать — не вышел по нашему рецепту пирог?? да у вас же кривые руки!
Сайт, на котором ты пишешь эти буквы, написан на ASP.NET WebForms. Чем он принципиально отличается от других сайтов? Не нравится дизайн - натяни другую верстку. Всё как везде. Причем тут веб, REST и обработчики?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092974
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKI,

http://ru.wikipedia.org/wiki/REST

но на самом деле, секрет состоит в прямых руках. куются они в скрытых, недоступных глазу обывателей, кузницах, они могу все, любая задача им по плечу. клиент сказал веб-формс, значит будет веб-формс. клиент сказал мвц, значит будет мвц.

одного только не могу понять. как клиент может вообще такие задачи ставить? а он случайно не объявляет для разработчика набор переменных, которые должны обязательно быть в коде и список методов, один из которых «сделать_хорошо()»? ))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092976
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostthandmadeFromRu,
что-то вы опять придумываете. я ничего не говорил про «медленнее». и хотя общее впечатление от сайтов на веб-формах именно такое у меня и осталось. но это все конечно же происки кривых рук. они везде, они повсюдуу... так можно про всё что угодно сказать — не вышел по нашему рецепту пирог?? да у вас же кривые руки!

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

народ седня ж не пятница для холиваров))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092982
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttодного только не могу понять. как клиент может вообще такие задачи ставить? а он случайно не объявляет для разработчика набор переменных, которые должны обязательно быть в коде и список методов, один из которых «сделать_хорошо()»? ))
Ну вот видишь, если ты не встречал, это ведь не означает, что такого нет, верно ведь? Открою тебе секрет - такое сплошь и рядом. Банальный пример, мы на аутсорс (через подряд, через интегратора и т.д.) отдаем проект команде, чтобы нам сделали решение. Решение после этого упадет к нам на поддержку и развитие. На внешку мы отдаем проект для экономии своих ресурсов, которые сейчас заняты на других более приоритетных проектах. Разумеется, мы будем диктовать условия - на каких технологиях писать решение, какую СУБД использовать, какой язык использовать, вопросы лицензирования и пр.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092988
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, про руки.
у меня не давно был проект который пришел в фирму от владельца одного сайта не большого. сделан на мвц..я думал круто будет..а хрен там ...ормка ввиде синглетона , трайкетчи понатыканы везде, чертовы лейзи загрузки из самой вьюшки когда вроде как по феншую надо вьюмодел готовую и можно дальше перечислять....
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092992
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

вы очень адекватно ответили. с этим, прям и не поспоришь. в общем-то да, ломать стереотипы можно, а иногда даже нужно. но REST, это не стереотип, это архитектура веб. все сервера работают на этом принципе.

например, веб-сокеты, появившиеся не так уж и давно не являются нарушением REST архитектуры, и не ломают её, они её качественно дополняют. AJAX полностю укладывается в архитектуру REST.

такого количества кривых рук программистов на веб-форм наверное нигде больше нет. ни о чем не заставляет задуматься? нет? согласен, есть некоторое количество виртуозов, чувствующих себя на веб-форм кофмортно. но если начинать дружить несколько технологий, ведь в общий стек с MVC легко (я бы даже сказал, почти безукоризненно) ложатся мощные JS-фреймворки (бекбон, кнокаут...), и даже серверные движки типа node.js, все эт в одной архитектуре. я считаю, что это очень удобно и никогда не посоветую никому курить веб-формс, потому что наверняка обнаружатся проблемы с кривыми руками...

ну а те, кто выкурили все маны, прониклись и приняли концепцию веб-формс, мои глубочайшие поздравления. но нам, простым смертным, слишком далеко до этого левела :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38092993
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttа он случайно не объявляет для разработчика набор переменных, которые должны обязательно быть в коде и список методов, один из которых «сделать_хорошо()»? ))
Не поверишь, и такое часто бывает. Мы указываем сигнатуры (названия методов, входные параметры, тип результата) для взаимодействия с хранилищем (БД, SOA, и т.д.) в виде DLL с интерфейсами. Фейковая реализация этих интерфейсов - на их стороне.
На этапе тестирования на нашей стороне и после приемки - мы подменяем фейковые реализации (просто выкидываем их) на нужные нам (боевые базы и сервисы) и стыкуем их приложение.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093002
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
прости вы считаете что бекбон и прочую тему в формы не засунуть?) и все разработчики на асп мвц такие крутые перцы?: ))) вопрос рук всегда будет актуален...щас скианыч прийдет и всех потушит рестфул сервисами!!) отдельное спасибо ему ..увлекло и понравилось)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093003
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttодного только не могу понять. как клиент может вообще такие задачи ставить? а он случайно не объявляет для разработчика набор переменных, которые должны обязательно быть в коде и список методов, один из которых «сделать_хорошо()»? ))
Ну вот видишь, если ты не встречал, это ведь не означает, что такого нет, верно ведь? Открою тебе секрет - такое сплошь и рядом. Банальный пример, мы на аутсорс (через подряд, через интегратора и т.д.) отдаем проект команде, чтобы нам сделали решение. Решение после этого упадет к нам на поддержку и развитие. На внешку мы отдаем проект для экономии своих ресурсов, которые сейчас заняты на других более приоритетных проектах. Разумеется, мы будем диктовать условия - на каких технологиях писать решение, какую СУБД использовать, какой язык использовать, вопросы лицензирования и пр.

и все же, это совсем другое. если ты уже давно в теме веб-формс, ты берешь проект или часть проекта на аутсорс, делаешь её, там.. потом сдаешь... потом переделываешь... потом опять сдаешь... ну или что-то вроде того. с такими ребятами спорить так же глупо, как спорить с действующим извозчиком на лошади, типа «бросай ты свою клячу, пересажывайся на майбах!» ))

я именно про выбор средств разработчиком до старта проекта. и когда заказчику параллельно, на чем это будет сделано, лишь бы ТЗ было выполнено и все работало в срок. ну может еще какие издержки потребуются на сопровождение, ведь чем мудреннее технология, тем дороже потом программист. поэтому выбирать надо что-то такое, что сможет быстрее освоить веб-программер, даже если он пол жизни ездил на рельсах, с разжиженными перлом мозгами в детстве ))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093004
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttEDUARD SAPOTSKI,

http://ru.wikipedia.org/wiki/REST За ссыль на википедию спасибо, не знал что такой позновательный ресурс есть Но я думал кто-то тут расскажет каким интернет задумывался и каким он должен быть...
hVosttодного только не могу понять. как клиент может вообще такие задачи ставить? а он случайно не объявляет для разработчика набор переменных, которые должны обязательно быть в коде и список методов, один из которых «сделать_хорошо()»? )) Ну если этого не можешь понять то до ПМ-а тебе еще очень далеко. Никогда не задумывался почему можно в автосалоне заказать машину с определенной комплектацией и дизайном?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093007
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttно REST, это не стереотип, это архитектура веб. все сервера работают на этом принципе.
1. REST - это не архитектура. Это архитектурный стиль , другими словами - стереотип, религия, идея. Как не назови, всё правильно.
2. Сервера не работают на этом принципе :) Рассмотрим пример, классический ASMX сервис, работающий на SOAP рельсах. Откуда там REST?

hVosttAJAX полностю укладывается в архитектуру REST.
Правильно, но я говорил о другом. Речь же шла о том, каким "веб задумывался", вот я и аргументировал аяксом.

hVosttтакого количества кривых рук программистов на веб-форм наверное нигде больше нет. ни о чем не заставляет задуматься? нет?
Тут не совсем верно сравнивать, WebForms на рынке сущсетвует уже более десятка лет, MVC начал набирать обороты только с 3 версии (предыдущее - несъедобное гумно на лопате). Сравнивать миллион "кривых программистов" и "сотню умных" - согласись, неразумно. В обоих технологиях есть нормальные спецы, а есть идиоты. Это жизнь.

hVosttну а те, кто выкурили все маны, прониклись и приняли концепцию веб-формс, мои глубочайшие поздравления. но нам, простым смертным, слишком далеко до этого левела :)
Да ладно тебе, какие маны :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093010
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuщас скианыч прийдет и всех потушит рестфул сервисами!!)
Скианыч еще не вышел из стадии кодеманки )
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093012
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя именно про выбор средств разработчиком до старта проекта. и когда заказчику параллельно, на чем это будет сделано, лишь бы ТЗ было выполнено и все работало в срок. ну может еще какие издержки потребуются на сопровождение, ведь чем мудреннее технология, тем дороже потом программист. поэтому выбирать надо что-то такое, что сможет быстрее освоить веб-программер, даже если он пол жизни ездил на рельсах, с разжиженными перлом мозгами в детстве ))
Даже в таких случаях (технология хотя бы) прописывается в техническом задании. Но заказчику по идее должно быть фиолетово, главное, чтоб работало
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093013
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuhVostt,
прости вы считаете что бекбон и прочую тему в формы не засунуть?) и все разработчики на асп мвц такие крутые перцы?: ))) вопрос рук всегда будет актуален...щас скианыч прийдет и всех потушит рестфул сервисами!!) отдельное спасибо ему ..увлекло и понравилось)

ну действительно, чоб бекбон в веб-формс не засунуть, где ему еще-то быть? )) засунуть можно. вы картинку про хлебный трамвай видели? или вам запостить? :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093032
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

архитектура, стиль.... я однажды как-то пытался свою коллекцию музыки посортировать )) пока не понял, что металика играет в том же жанре, что и бритни спирс.

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

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

ну в общем вы поняли :) чувствуете, что попахивает кривыми руками? ))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093040
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпри усложнении приложений, границы фреймворков начинают стираться, поэтому один и тот же программист скорее всего сделает очень похожие вещи, что на веб-формс, что на мвц.
+1

hVosttну в общем вы поняли :) чувствуете, что попахивает кривыми руками? ))
О них и речь
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093041
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

про MVC ниже 3-ей версии обсолютно согласен. я на том его этапе развития чуть для себя его не похоронил.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093048
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttну действительно, чоб бекбон в веб-формс не засунуть, где ему еще-то быть? )) засунуть можно. вы картинку про хлебный трамвай видели? или вам запостить? :)
да не спасибо) уже пошел просто какой то холивар)))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093059
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIhVosttодного только не могу понять. как клиент может вообще такие задачи ставить? а он случайно не объявляет для разработчика набор переменных, которые должны обязательно быть в коде и список методов, один из которых «сделать_хорошо()»? )) Ну если этого не можешь понять то до ПМ-а тебе еще очень далеко. Никогда не задумывался почему можно в автосалоне заказать машину с определенной комплектацией и дизайном?

пм — прожект менегер? не хочу )) ...но приходится

да, я вот задумывался как-то о том, почему нельзя заказать машину с определенным дизайном и комплектацией. дают несколько вариантов на выбор. обычно нужно как можно навороченней и как можно понтовей. поэтому с небольшим выбором, это удобно, не надо париться над тем «а как сейчас модно», заходишь и забираешь самое последнее. только я не понимаю, как это относится к теме?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093070
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuhVostt, про руки.
у меня не давно был проект который пришел в фирму от владельца одного сайта не большого. сделан на мвц..я думал круто будет..а хрен там ...ормка ввиде синглетона , трайкетчи понатыканы везде, чертовы лейзи загрузки из самой вьюшки когда вроде как по феншую надо вьюмодел готовую и можно дальше перечислять....

ну лейзи загрузки из вьюшки не так уж и плохи в некоторых случаях. конечно, гоняться за стопроцентным соблюдением паттерна также плохо, как и совсем не следовать ему.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093075
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лан, холиворить похоже над приходить в пятницу )) всем удачного дня!
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093077
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttну лейзи загрузки из вьюшки не так уж и плохи в некоторых случаях. конечно, гоняться за стопроцентным соблюдением паттерна также плохо, как и совсем не следовать ему.
вьюшка не должна грузить себе что то еще, а должна только отображать..хотите кашу вперед... и это фейл если еще есть доступ вьюшки к бд/орму
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093085
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuвьюшка не должна грузить себе что то еще, а должна только отображать..хотите кашу вперед... и это фейл если еще есть доступ вьюшки к бд/орму

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

поясню. например, у меня три различных вьюшки для одного и того же. для десктопов, для мобилок ну и для чтения (печати, а также олдскул браузеров, включая текстовых). где-то нужно больше информации отобразить, где-то меньше. контроллеру, что там на выходе обычно знать ни к чему. ну это если следовать чистой мвс логике. а еще ведь могут быть атом/фиды и другие причины вью не заниматься фигней, заставляя всю подинфраструктуру передачи данных повторять по 10 раз.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093102
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвьюшка должна делоть то, что должна. презентовать слой логики. каши как раз нет. ef, например как раз и предоставляет айквериэйбл, типа микроконтроллера. никакого доступа к орму нет. только легкое ненавязчивое управление выводом.
Чего чего? Ты что, во вьюху пихаешь IQueryable члены? С дубу что-ли рухнул? :)
Во-первых, датаконтекст будет уже задестроен, трансляции SQL никакой уже не будет. Во-вторых, ты что, используешь глобальный (кеш, статика, аппликейшен) датаконтекст EF?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093119
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧего чего? Ты что, во вьюху пихаешь IQueryable члены? С дубу что-ли рухнул? :)
Во-первых, датаконтекст будет уже задестроен, трансляции SQL никакой уже не будет. Во-вторых, ты что, используешь глобальный (кеш, статика, аппликейшен) датаконтекст EF?


временем жизни управляет другой механизм, например автофак. все там ок, вы не переживайте, и трансляция SQL и своевременное уничтожение контекстов. честно говоря, вью вообще не в курсе, что там какая-то база данных сидит, у которой бывает невиданный «езык запросов». строя архитектуру по этому курсу, в последствии легко сменить поставщик данных на какой-нибудь равен или монго. главное, это хороший di контейнер и разруливание зависимостей и временем жизни объектов.

юзинг-отдай-данные-умри это из учебных примеров, весьма хорош для начинаний ))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093128
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвременем жизни управляет другой механизм, например автофак. все там ок, вы не переживайте, и трансляция SQL и своевременное уничтожение контекстов. честно говоря, вью вообще не в курсе, что там какая-то база данных сидит, у которой бывает невиданный «езык запросов». строя архитектуру по этому курсу, в последствии легко сменить поставщик данных на какой-нибудь равен или монго. главное, это хороший di контейнер и разруливание зависимостей и временем жизни объектов.

юзинг-отдай-данные-умри это из учебных примеров, весьма хорош для начинаний ))

Тааак, что-то ты мне голову морочишь :) Вообщем, жду от тебя пример контроллера, в котором будет четко отражено, как он подготавливает модель для представления. А потом продолжим дискуссию.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093153
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

хм а для таких случаев делаю через RenderPartial / RenderAction вызываю или нет и концепция сохраняется
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093162
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttef, например как раз и предоставляет айквериэйбл, типа микроконтроллера. никакого доступа к орму нет. только легкое ненавязчивое управление выводом.
1. Еще раз не совем понятно, что за "ненавязчивое управление выводом" и в каком слое оно реализовано?
2. Какой-такой микроконтроллер? :) Ты, наверное, рассуждаешь о неком IService или фабрике? Опять же, в каком слое?
3. Давай всё по-порядку, рассмотрим 3 слоя: модель, представление и контроллер (можно четвертый слой ввинтить - модель представления).
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093181
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Код: 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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
 public class ProjectController : Controller
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(ProjectController));

        private readonly IProjectRepository _projectRepository;
        private readonly IUnitOfWork _unitOfWork;
        private readonly IUserActionLogger _userActionLogger;
        private readonly Lazy<IProjectDeleteService> _projectDeleteService;

        public ProjectController(IProjectRepository projectRepository, Lazy<IProjectDeleteService> projectDeleteService, IUnitOfWork unitOfWork, 
            IUserActionLogger userActionLogger)
        {
            Contract.Requires(projectRepository != null);
            Contract.Requires(unitOfWork != null);

            _projectRepository = projectRepository;
            _tabContainer = tabContainer;
            _projectDeleteService = projectDeleteService;
            _unitOfWork = unitOfWork;
            _userActionLogger = userActionLogger;

            if(log.IsDebugEnabled) log.Debug("Created ProjectController");
        }

        //
        // GET: /Project/

        public ActionResult Index(int ? page, GridSortOptions sort)
        {
            IQueryable<Project> projects;

            if (showClosedProjects)
            {
                projects = _projectRepository.AllIncluding(project => project.Tasks);
            }
            else
            {
                projects = _projectRepository.AllIncluding(project => project.Tasks)
                    .Where(project => project.StateImpl == (int)ProjectState.InProgress);
            }

            if(sort.Column == null)
                sort = new GridSortOptions { Column = "Name", Direction = SortDirection.Ascending };

            ViewBag.Sort = sort;
            ViewBag.Page = page ?? 1;

            if (Request.IsAjaxRequest())
            {
                return PartialView("_ProjectList", projects);
            }

            return View(projects);
        }

....



как видно все, что нужно для работы инжектируется в контроллер каким-то внешним объектом (депенси ресолвером), оно же управляет временем жизни.

зачем отдавать вью квери и параметры сортировки? ну, например, хотя бы потому, что вью может выбрать столько, сколько нужно и отсортировать в соответствии со видом и назначением вью (например, параметры сортировки для атома всегда одни и те, же в независимости от того, что там хочет контроллер)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093197
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
представленный выше пример достаточно примитивный, конечно в реальном большом проекте фильтры/сортировки инкапсулируются в отдельные структуры, и во вью отдаётся специальный моделвью

но в использовании iqueryable ничего плохого нет, я считаю. так как сломать данные (базу) нельзя, отсутствует доступ к контексту и к unitofwork, все что можно делать, это сортировать и фильтровать. но при развитии проекта, iqueryable все реже перепадает вью.

я знаю, что различные гуру советуют все упаковывать во вью модель и только так. не согласен с ними. заочно не согласен с любыми позициями, где фигурируют слова «только вот так, и никак иначе» :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093218
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttef, например как раз и предоставляет айквериэйбл, типа микроконтроллера. никакого доступа к орму нет. только легкое ненавязчивое управление выводом.
1. Еще раз не совем понятно, что за "ненавязчивое управление выводом" и в каком слое оно реализовано?
2. Какой-такой микроконтроллер? :) Ты, наверное, рассуждаешь о неком IService или фабрике? Опять же, в каком слое?
3. Давай всё по-порядку, рассмотрим 3 слоя: модель, представление и контроллер (можно четвертый слой ввинтить - модель представления).

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

микроконтроллер, я так называю некоторые самодостаточные интерфейсы, IEnumerable и IQueryable вкупе с LINQ одни из них. т.е. универсальные сервисы. еще это могут быть всякие IPageable, IRoleable....

то, что эти насквозь прошивают «великую и могучую» MVC не нарушает её принципов, если не нарушают принципов независимости и самодостаточности. как говорится, не плодите лишних сущностей :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093226
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttкак видно все, что нужно для работы инжектируется в контроллер каким-то внешним объектом (депенси ресолвером), оно же управляет временем жизни.
В большинстве случаев (а их 99%) достаточно ручной инстанциации экземпляра (IProjectRepository) - через конструктор базового контроллера. У тебя он отсутствует.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class BaseController : Controller
{
    public IDataService DataService { get; private set; }

    public BaseController()
    {
        this.DataService = new DataService.Sql.SqlDataService();
    }
}



В IDataService - только IEnumerable , никаких квери и еще что-либо.

Код: c#
1.
2.
3.
4.
5.
public class IDataService
{
    Category GetCategoryById(int id);
    IEnumerable<Category> GetCategories();
}



По причине того, что мы можем подключить сторонний датасервис, например, XmlDataService, который ничего не знает о трансляции SQL. IEnumerable - это бест практис.

hVosttзачем отдавать вью квери и параметры сортировки? ну, например, хотя бы потому, что вью может выбрать столько, сколько нужно и отсортировать в соответствии со видом и назначением вью (например, параметры сортировки для атома всегда одни и те, же в независимости от того, что там хочет контроллер)
Как решается эта задача - в IDataService:

Код: c#
1.
IEnumerable<Category> GetCategoriesPages(int pageIndex, int pageSize)



Всё. А в своём SqlDataService или XmlDataService делаешь реализацию.

Из контроллера:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public ActionResult Index(int? page)
{
    var model = new IndexViewModel();
    // ...
    var items = base.DataService.GetCategoriesPages(page.GetValueOfDefault(), 30);
    model.Items.AddRange(items);
    return View(model);
}



Идея понятна?

P.S. Слишком много инъекций с ресолвами, код выглядит загаженно и удручающе. В моем случае - код чистый, инкапсуляция рулит.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093238
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
ваша позиция ясна) а вам никто не говорил делать так и не иначе по другому. на вкус и цвет фломастеры разные) но чет смущает меня. зачем к примеру зачем отдельный репозиторий, если есть UoW? или то что код загажен как то, хотя я может не прав тут.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093251
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

нееет, батенька )) про 99% разработчиков, не применяющих TDD вы конечно загнули. ладно, забьём на тесты, русские тру-кодеры хотели покакать на это ваше тестирование с большой мариуопольской вышки.

кейс №1. базовый контроллер — это плохо. это действительно плохо, так как рулить контроллерами должна фабрика, а не инкапсуляция. а мало ли чего (мы же забыли про тесты, та?). если хотябы фабрика своя и она даёт датасервис каждому контроллеру... ну это вообще жуть. получается каждый контроллер де-факто имеет доступ ко всей дата бейз? ну и ну.

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

едем дальше. наконец, кейс. реальный! жил-проект. у него все было в одной базе и все было круто. потом вдруг этот проект попадает в стек других проектов, где есть своя база данных пользователей, ролей и прочей профильной фигни. как же это решается? ничегошеньки переделывать не надо. пишется реализация IUserRepository, подсовывается в депенси ресолвер. в итоге, ни один контроллер, ни один сервис, ни один фильтр не почувствал разницы. ок? заказчик доволен, программеры в экстазе. все решилось быстро и без нервотрепки.

ну и на последок. ладно вы отдаете в контроллер инстанс датасервиса через базовый класс. а кто отдает этот инстанс различным фильтрам? в том числе глобальным?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093253
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuзачем к примеру зачем отдельный репозиторий, если есть UoW?
Немного не понял, о каком репозитории речь? :) У меня нет репозиториев, у меня абстракция для контроллера - IDataService. С реализациями в виде SqlDataService, XmlDataService и т.д. Подключай к базовому контроллеру любой провайдер (сервис), и твоё приложение будет крутиться на новых рельсах (вроде инкапсулированного мока).
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093254
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

потому что у UoW одна задача — сделать дать сделать коммит (или не дать). ради чего в этот вов пихают свои сервисы и репы не пойму.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093263
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

и эта.. IDataService это не абстракция )) это весьма конкретный дай-сюда-это, возьми-вот-это, сделай-как-то-так. интерфейсом зовётся. ну если только это не обстракция в виде:

IDataService {

MyDbContext Context {get;}

}
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093264
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, нееет, батенька )) про 99% разработчиков, не применяющих TDD вы конечно загнули.
Я ничего не говорил про "неприменение TDD". Мой "вариант" так же легко можно тестировать.

hVosttладно, забьём на тесты, русские тру-кодеры хотели покакать на это ваше тестирование с большой мариуопольской вышки.
Не согласен. Тестирование - это хорошо, я это не отрицаю :) Просто главное понимать, тесты пишутся для программ, но не наоборот. Это я к 100% покрытию (шизофрения).

hVosttкейс №1. базовый контроллер — это плохо. это действительно плохо, так как рулить контроллерами должна фабрика, а не инкапсуляция. а мало ли чего (мы же забыли про тесты, та?). если хотябы фабрика своя и она даёт датасервис каждому контроллеру... ну это вообще жуть. получается каждый контроллер де-факто имеет доступ ко всей дата бейз? ну и ну.
1. Ну так рули в базовом контроллере, хоть руками, хоть через фабрику. Какая принципиальная разница? Зато я не размазываю эту логику в самих прикладных контроллерах. Даешь чистый контроллер!
2. Каждый контроллер де-факто не имеет доступ ко всей дата бейз, каждый контроллер де-факто имеет доступ своему IDataServive. Почувствуй разницу.

hVosttпоехали дальше. почему репа и сервис — вещи разные. потому что репа, это инстанс дженерика почти во всех случаях.
Чё-то я нифига не понял, еще раз - причем тут вообще дженерик? Репозиторий так же не обязан быть дженериком.

hVosttа сервис, более умный брат репы, так как знает больше умных слов, чем чего-то откуда-то взять и куда-то сохранить. а еще в сервис может инжектироваться кеш-провайдер. и сервис будет послушно брать данные из кеша, при чем даже не догадываясь, как это вообще получилось.
Да это принципиально одно и то же, у меня просто абстракция в дата слое.

hVosttедем дальше. наконец, кейс. реальный! жил-проект. у него все было в одной базе и все было круто. потом вдруг этот проект попадает в стек других проектов, где есть своя база данных пользователей, ролей и прочей профильной фигни. как же это решается? ничегошеньки переделывать не надо. пишется реализация IUserRepository, подсовывается в депенси ресолвер. в итоге, ни один контроллер, ни один сервис, ни один фильтр не почувствал разницы. ок? заказчик доволен, программеры в экстазе. все решилось быстро и без нервотрепки.
Так у меня точно так же, пишется свое реализация IDataService (например, был SqlDataService, а стал WcfDataService или XmlDataService). Потом в базовом конструкторе кентроллера мы подключили наш новый сервис и всё стало так же работать (через абстракции IDataService). Ты читаешь как-то между строк, что-ли? Или я пишу непонятно :)

hVosttну и на последок. ладно вы отдаете в контроллер инстанс датасервиса через базовый класс. а кто отдает этот инстанс различным фильтрам? в том числе глобальным?
Выражайся по-русски, инопланетяне сейчас не в моде. Какой фильтр? Что такое глобальный фильтр, ты о чем вообще?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093269
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

и эта.. IDataService это не абстракция )) это весьма конкретный дай-сюда-это, возьми-вот-это, сделай-как-то-так. интерфейсом зовётся. ну если только это не обстракция в виде:

IDataService {

MyDbContext Context {get;}

}



Нет, это абстракция.

Код: c#
1.
2.
3.
4.
5.
public interface IDataService
{
    Category GetCategoryById(int id);
    IEnumerable<Category> GetCategories();
}



P.S. Мляяя, сорри, я понял ошибку Я в начале написал "class", а надо "interface". Разумеется, речь о interface, сорри Из-за этого сыр-бор :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093291
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ эт я hVostt вопрос адресовал)

hVostt,
ну да но uow и репо близки. честно ...чет я сам запутался. загуглил сюды
http://stackoverflow.com/questions/7940854/is-unit-of-work-and-repository-patterns-very-useful-for-big-projects

uow - это типа буфера для команд обновления БД
репозиторий - это ОО интерфейс к данным. он же отслеживает изменения в модели и выдает команды к uow
фишка в том, что все крупные ORM - это UoW + Repository

собственно из-за этого и спросил про зачем они вместе лежат
по мне EF + тонкий интерфейс над ним - вот и все, что нужно. или вам надо сделать абстракцию над орм? ...я думаю переезды на другую орм ..я хз событие как конец света - редкое, но веселое)!

п.с. надеюсь я еще адекватен и не в бреду и правильно понял) даешь пятницу в среду!!!
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093292
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttМСУ, нееет, батенька )) про 99% разработчиков, не применяющих TDD вы конечно загнули.
Я ничего не говорил про "неприменение TDD". Мой "вариант" так же легко можно тестировать.

хотел бы я на это посмотреть.

МСУhVosttкейс №1. базовый контроллер — это плохо. это действительно плохо, так как рулить контроллерами должна фабрика, а не инкапсуляция. а мало ли чего (мы же забыли про тесты, та?). если хотябы фабрика своя и она даёт датасервис каждому контроллеру... ну это вообще жуть. получается каждый контроллер де-факто имеет доступ ко всей дата бейз? ну и ну.
1. Ну так рули в базовом контроллере, хоть руками, хоть через фабрику. Какая принципиальная разница? Зато я не размазываю эту логику в самих прикладных контроллерах. Даешь чистый контроллер!
2. Каждый контроллер де-факто не имеет доступ ко всей дата бейз, каждый контроллер де-факто имеет доступ своему IDataServive. Почувствуй разницу.

получается, вы размазали свой код не вдоль, а поперёк. Действительно, какая принципиально разница? Вы выиграли только визуально (меньше кода в контроллере отображается), но функционально.... в общем дабы избежать долгого спора, раньше я именно так и делал (как вы) :) вот практически один в один, базовый контроллер, большой дата сервис (обстракция!). но потом пришло время расти. надо было 100% тестирование. это не шиза, это реальное условие заказчика (к вопросу об условиях заказчика, в особенности зарубежного).

МСУhVosttпоехали дальше. почему репа и сервис — вещи разные. потому что репа, это инстанс дженерика почти во всех случаях.
Чё-то я нифига не понял, еще раз - причем тут вообще дженерик? Репозиторий так же не обязан быть дженериком.

это я к слову сказал. но чтобы было понятней: Repository<TEntity>: IRepository<TEntity>... скафолдинг и кодогенерация (а ручки-то вот они где)

МСУhVosttа сервис, более умный брат репы, так как знает больше умных слов, чем чего-то откуда-то взять и куда-то сохранить. а еще в сервис может инжектироваться кеш-провайдер. и сервис будет послушно брать данные из кеша, при чем даже не догадываясь, как это вообще получилось.
Да это принципиально одно и то же, у меня просто абстракция в дата слое.

не одно и тоже. репу можно подсунуть другую, сервис будет работать с любой репой. а вот если надо переписывать весь сервис из-за смены Sql на Xml (кстати, хотел спросить что за пример такой допотопный, кому вообще может прийти в голову менять Sql на Xml? или веб-сервис? я еще понимаю монго, мемори...)

МСУhVosttедем дальше. наконец, кейс. реальный! жил-проект. у него все было в одной базе и все было круто. потом вдруг этот проект попадает в стек других проектов, где есть своя база данных пользователей, ролей и прочей профильной фигни. как же это решается? ничегошеньки переделывать не надо. пишется реализация IUserRepository, подсовывается в депенси ресолвер. в итоге, ни один контроллер, ни один сервис, ни один фильтр не почувствал разницы. ок? заказчик доволен, программеры в экстазе. все решилось быстро и без нервотрепки.
Так у меня точно так же, пишется свое реализация IDataService (например, был SqlDataService, а стал WcfDataService или XmlDataService). Потом в базовом конструкторе кентроллера мы подключили наш новый сервис и всё стало так же работать (через абстракции IDataService). Ты читаешь как-то между строк, что-ли? Или я пишу непонятно :)

вы лезете в конструктор контроллера и что-то там меняете, чтобы сменить сервис. и после этого вы мне говорите, что ваше решение готово к TDD? вы издеваетесь?

МСУhVosttну и на последок. ладно вы отдаете в контроллер инстанс датасервиса через базовый класс. а кто отдает этот инстанс различным фильтрам? в том числе глобальным?
Выражайся по-русски, инопланетяне сейчас не в моде. Какой фильтр? Что такое глобальный фильтр, ты о чем вообще?[/quot]

ActionFilter, ActionFilterAttrribute, AuthorizationFilterAttribute..... etc.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093321
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уууу, вот поперла тема!
Пиво и попкорн закупил вечером после раббы почитаю :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093335
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотел бы разъяснить, почему я провожу четкую черту между сервисом и репозиторием

вот репозиторий:

Код: 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.
public interface IRepository<TEntity, in TKey>
		where TEntity : IEntity<TKey>
	{
		int Count();
		int Count(Expression<Func<TEntity, bool>> filter);

		IQueryable<TEntity> All { get; }
		IQueryable<TEntity> AllIncluding<TProperty>(Expression<Func<TEntity, TProperty>> includeProperty);
		IQueryable<TEntity> AllIncluding(params Expression<Func<TEntity, object>>[] includeProperties);

		IQueryable<TEntity> Filter(Expression<Func<TEntity, bool>> predicate);
		IQueryable<TEntity> Filter(Expression<Func<TEntity, bool>> filter, out int total, int index = 0, int size = 25);

		bool Contains(Expression<Func<TEntity, bool>> predicate);

		TEntity Find(Expression<Func<TEntity, bool>> predicate);
		TEntity GetById(TKey id);

		void Insert(TEntity entity);

		void Update(TEntity entity);

		void Delete(TKey id);
		void Delete(TEntity entity);
		void Delete(Expression<Func<TEntity, bool>> predicate);
	}



репы для остальных сущностей делаются так

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public interface IRateRepository : IRepository<Rate, int>
	{
	}
....
а инстант обычно вот такой:

RateRepository: Repository<Rate>, IRateRepository
{
}



ничего нового? ну это нужно потому, что отдельные сущности могут потребовать каких-то сложных ресурсоёмких операций, которые должны быть реализованы именно в слое данных (вьюха или табличная процедура в базе, например), но это редкий случай. выборки, даже сложные в LINQ обычно отрабатывают достаточно быстро, а с учетом кеширования....

а вот сервис, это такой умный братан репы, который знает много контекстно-зависимых слов:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public interface IProjectService
	{
		IEnumerable<Project> GetTop();
		void ReNumber();
		void Move(int id, int? targetId);
		void MoveUp(int id);
		void MoveDown(int id);
		........
	}



реализован сервис полностью через репозиторий. поэтому достаточно сменить репу. при чем, репу сменить можно всего одной строчкой в конфиге CS или даже в web.config, так что эта репа будет использоваться везде в проекте. при чем репу можно сменить для отдельной сущности.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093355
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuМСУ эт я hVostt вопрос адресовал)

hVostt,
ну да но uow и репо близки. честно ...чет я сам запутался. загуглил сюды
http://stackoverflow.com/questions/7940854/is-unit-of-work-and-repository-patterns-very-useful-for-big-projects

uow - это типа буфера для команд обновления БД
репозиторий - это ОО интерфейс к данным. он же отслеживает изменения в модели и выдает команды к uow
фишка в том, что все крупные ORM - это UoW + Repository

собственно из-за этого и спросил про зачем они вместе лежат
по мне EF + тонкий интерфейс над ним - вот и все, что нужно. или вам надо сделать абстракцию над орм? ...я думаю переезды на другую орм ..я хз событие как конец света - редкое, но веселое)!

п.с. надеюсь я еще адекватен и не в бреду и правильно понял) даешь пятницу в среду!!!

у EF DbContext это UnitOfWork. но мы делаем свой UoW, поверх него. задача у него одна, принципиальная. в контроллер мы никогда не прокидываем DbContext. а сохранять данные как-то надо. прокидываем IUnitOfWork, у которого есть Save (или Commit, кому как нравится). да, он может много чего еще. отслеживать изменения данных, вешаясь на определенные события, если надо. в общем, действовать как транзакционная машина, обрабатывать программные триггеры.

ну и самое главное. если в контроллере нет IUnitOfWork, значит он гарантированно 100% ничего в базу не сохраняет. только берет. это важный в разработке ньюанс. на самом деле приведенный выше код, это не «много грязи в коде», это кристальная ясность относительно того, что контроллер делает. а если контроллер чист, типа все ему передается через базовый класс, то не понятно ничего. надо копать. в большом проекте ковыряться для выяснения обстоятельств, — нудное и безынтересное занятие.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093369
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttхотел бы я на это посмотреть.
Гавно вопрос, выложил сюда подход: http://codearticles.ru/Home/ArticleView/2155

hVosttполучается, вы размазали свой код не вдоль, а поперёк. Действительно, какая принципиально разница? Вы выиграли только визуально (меньше кода в контроллере отображается), но функционально....
1. Визуальность рулит, дружище. Смотреть в каждый код на тонны гавнокода, гвоздями прибитого к фабрикам, репозиториям, датасервисам... Бррр. Вспомни о трёх китах объектно-ориентированного программирования :)
2. Функционально я не проигрываю, сколько раз тебе объяснять, могу еще раз объяснить это. Ты просто помешан на резолвах в локаторах, а я объясняю, что в большинстве случаев и инстанция подойдет - главное, что она в одном месте . Зачем мне 100500 резолвов, размазанных в 100500 контроллерах, если я один раз в базовом контроллере инстанциируюсь и все унаследованные контроллеры получат своего поставщика.

hVosttв общем дабы избежать долгого спора, раньше я именно так и делал (как вы) :) вот практически один в один, базовый контроллер, большой дата сервис (обстракция!). но потом пришло время расти. надо было 100% тестирование. это не шиза, это реальное условие заказчика (к вопросу об условиях заказчика, в особенности зарубежного).
Ты в упор не видишь то, что я пишу? Еще раз - мой вариант отлично тестируемый, ничем не уступает твоему. Но главный его плюс - это его чистота, посмотри в примере в аттаче и сравни со своей "грязной" реализацией.

hVosttэто я к слову сказал. но чтобы было понятней: Repository<TEntity>: IRepository<TEntity>... скафолдинг и кодогенерация (а ручки-то вот они где)
На свалку, ибо Repository может зависить от n entity. А если у на 2 БД, плодить два репозитория и делать 2 подключения к БД? :) У меня же IDataService более "абстрактен", к нему можно прибить 2 базы данных (по сути это одно хранилище, разнесенное по базам - так, к примеру, шарепоинт работает), а на выхлопе использовать родные сущности. И всё это счастье за единый коннекшен (в твоем случае их будет уже два). Кстати, один из минусов ORM это то, что они прибиваются к одной БД в разрезе контекста. Последствия сам понимаешь какие. Я же всегда могу обойти это в своем слое (на ридерах вмапиться в прокси классы) за одно физическое соединени к БД.

hVosttне одно и тоже. репу можно подсунуть другую, сервис будет работать с любой репой. а вот если надо переписывать весь сервис из-за смены Sql на Xml (кстати, хотел спросить что за пример такой допотопный, кому вообще может прийти в голову менять Sql на Xml? или веб-сервис? я еще понимаю монго, мемори...)
Ну почему допотопный, вот тебе ситуация из жизни. Нужно писать софт, ТЗ готово, всё готово, люди пишут. Но планируется, что через n-месяцев, когда будет запущено сторонее приложение (пусть на аксапте) мы будем осуществлять поставку данных через эту систему - например, некоторые справочники и служебные данные. Мы пишем свой Sql сервис и спокойно живем. Потом, когда вклинивается аксапта и говорит - берите данные теперь через меня, мы переключаем своё приложение на новый источник - через аксаптовых WCF сервис. Классическое интеграционное решение, просто ты в таких не участвовал, это видно невооруженным глазом :) Я ж говорю, меняй стереотипы, иначе так и помрешь в неведении ))

hVosttвы лезете в конструктор контроллера и что-то там меняете, чтобы сменить сервис. и после этого вы мне говорите, что ваше решение готово к TDD? вы издеваетесь?
Никто не мешает управлять точно так же через резолвинг через тот же автофак. Зри в корень, а не плавай на поверхности.

hVosttActionFilter, ActionFilterAttrribute, AuthorizationFilterAttribute..... etc.
См. выше, ты можешь управлять экземпляром в единой песочнице и подсовывать ее в базовый конструктор, фильтры и иже с ним.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093379
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttхотел бы разъяснить, почему я провожу четкую черту между сервисом и репозиториемрепы для остальных сущностей делаются так
Лишняя работа, обреченная на гавнокод.

hVosttа вот сервис, это такой умный братан репы, который знает много контекстно-зависимых слов:
Говорю же, лишнее расслоение. В моем случае я создал бы новый IProjectService и научил бы его последователей всему тому, что требуется.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093415
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttхотел бы я на это посмотреть.
Гавно вопрос, выложил сюда подход: http://codearticles.ru/Home/ArticleView/2155
Посмотрю сегодня вечером, о результатах отпишусь :-)

МСУhVosttполучается, вы размазали свой код не вдоль, а поперёк. Действительно, какая принципиально разница? Вы выиграли только визуально (меньше кода в контроллере отображается), но функционально....
1. Визуальность рулит, дружище. Смотреть в каждый код на тонны гавнокода, гвоздями прибитого к фабрикам, репозиториям, датасервисам... Бррр. Вспомни о трёх китах объектно-ориентированного программирования :)
2. Функционально я не проигрываю, сколько раз тебе объяснять, могу еще раз объяснить это. Ты просто помешан на резолвах в локаторах, а я объясняю, что в большинстве случаев и инстанция подойдет - главное, что она в одном месте . Зачем мне 100500 резолвов, размазанных в 100500 контроллерах, если я один раз в базовом контроллере инстанциируюсь и все унаследованные контроллеры получат своего поставщика.

1. Никакой тонны. Я смотрю на то, с чем работаю. Вижу IUnitOfWork, значит понимаю, что могу сохранять данные. Вижу сервис с определенным названием, значит знаю какую область я решаю. Хорошо, когда помнишь. Плохо, когда уже подзабыл, или вас несколько человек работает над одним проектом. Абсолютно ничего лишнего. Я вижу с чем работает контроллер, а не лажу в базовый класс, чтобы разобраться что мне оттуда приходит. В этом и прелесть, дружище :)
2. Она у тебя в базовом контроллере. Считаешь, это лучшее место для управления жизнью инстансов, которые могут понадобиться еще и за пределами контроллера (фильтры, например)?

МСУ... Но главный его плюс - это его чистота, посмотри в примере в аттаче и сравни со своей "грязной" реализацией.
про тестирование, вечером гляну. а вот грязи никакой нет. класс самодостаточен, я вижу что он получает при создании (конструктор), вижу что он хранит. я могу создать такой контроллер отдельно, вообще в другой сборке. это самый чистый контроллер из всех.

МСУhVosttэто я к слову сказал. но чтобы было понятней: Repository<TEntity>: IRepository<TEntity>... скафолдинг и кодогенерация (а ручки-то вот они где)
На свалку, ибо Repository может зависить от n entity. А если у на 2 БД, плодить два репозитория и делать 2 подключения к БД? :) У меня же IDataService более "абстрактен", к нему можно прибить 2 базы данных (по сути это одно хранилище, разнесенное по базам - так, к примеру, шарепоинт работает), а на выхлопе использовать родные сущности. И всё это счастье за единый коннекшен (в твоем случае их будет уже два). Кстати, один из минусов ORM это то, что они прибиваются к одной БД в разрезе контекста. Последствия сам понимаешь какие. Я же всегда могу обойти это в своем слое (на ридерах вмапиться в прокси классы) за одно физическое соединени к БД.

мда... :) мы похоже забыли про прослойку EF, которой можно отдать другой провайдер данных в конфиге, или другую строку соединения. речь идёт о принципиальной смене поставщика данных. DbContext там не катит. поэтому приложение ничего не знает об это контексте. он работает только с сервисами и репами.

МСУЯ ж говорю, меняй стереотипы, иначе так и помрешь в неведении ))

а вы... а вы.. )) уничтожаете мои стереотипы, как не стыдно!

МСУНикто не мешает управлять точно так же через резолвинг через тот же автофак. Зри в корень, а не плавай на поверхности.

ну если так, другое дело. просто вы говорите, можно, но так не делаете. значит для TDD вам потребуется подгонка проекта. ну может вам перепадёт заказ со 100% тдд, а вы их окрестите шизой ))

МСУhVosttActionFilter, ActionFilterAttrribute, AuthorizationFilterAttribute..... etc.
См. выше, ты можешь управлять экземпляром в единой песочнице и подсовывать ее в базовый конструктор, фильтры и иже с ним.

единая песочница где находится? это синглетон? статик класс? отдельный менеджер? что бы вы не назвали, оно тоже должно где-то находиться )) только вот, что это за мифическая штуковина, которая снабжает инстантами контроллеры, фильтры и следит за временем их жизни?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093433
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttхотел бы разъяснить, почему я провожу четкую черту между сервисом и репозиториемрепы для остальных сущностей делаются так
Лишняя работа, обреченная на гавнокод.

интересный вывод )) жаль, не приправленный доводами... знаете, как-то безвкусно, может найдется щепотка... чего-нибудь?

МСУhVosttа вот сервис, это такой умный братан репы, который знает много контекстно-зависимых слов:
Говорю же, лишнее расслоение. В моем случае я создал бы новый IProjectService и научил бы его последователей всему тому, что требуется.

звучит как будто из уст проповедника )) идите мои браться, да распространится знание по миру!

расслоение лишним никогда не бывает. собрать, знаете ли, на много проще, чем разобрать (в мире программирования). тем более не забывайте о Single Of Responsibility. оно знаете ли, очень хорошо выручает, когда требуется вносить изменения и на этапе интенсивной итеративной разработки. и не забывайте еще, что в человеке 206 костей, а не две-три большие. умные дядьки вообще говорили, что один класс должен выполнять одну маленькую задачу. например, одного такого зовут мартин фаулер. хотя вообще-то он просто надменный ботан, ничего не понимающий в разработке приложений. а ТДД, оно и понятно, что для шизанов ))
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093460
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПосмотрю сегодня вечером, о результатах отпишусь :-)
Ок, главное обращай внимание на чистоплотность кода )

hVostt1. Никакой тонны. Я смотрю на то, с чем работаю. Вижу IUnitOfWork, значит понимаю, что могу сохранять данные. Вижу сервис с определенным названием, значит знаю какую область я решаю. Хорошо, когда помнишь. Плохо, когда уже подзабыл, или вас несколько человек работает над одним проектом. Абсолютно ничего лишнего. Я вижу с чем работает контроллер, а не лажу в базовый класс, чтобы разобраться что мне оттуда приходит. В этом и прелесть, дружище :)
2. Она у тебя в базовом контроллере. Считаешь, это лучшее место для управления жизнью инстансов, которые могут понадобиться еще и за пределами контроллера (фильтры, например)?
1. А ты никогда не работает в команде? Ууу... Я точно так же вижу интерфейс сервиса, вижу его члены, значит знаю какую область я решаю.
2. Еще раз, не путай хранение сервиса в базовом контроллере и управление жизнью. Если ты хочешь управлять жизнь, ты точно так же в базовом контроллере можешь сделать ссылку на фабрику, которая выплевывает тебе экземпляр. Я тебе об этом уже битый час тылдычу, чтож так туго доходит. Не понимаешь до сих, о чем я говорбю? :) Мля, ну на пальца - ты прибиваешь свои интерфейсы в реализации прикладного контроллера. Я прибиваю - в реализации базового контроллера. Всё, только в этом разница. Нужно руками инстанциироваться - пожалуйста, хочешь честный TDD - выноси жизнь экземпляра на дополнительную абстракцию DI. Ну что ж такое-то...

hVosttпро тестирование, вечером гляну. а вот грязи никакой нет. класс самодостаточен, я вижу что он получает при создании (конструктор), вижу что он хранит. я могу создать такой контроллер отдельно, вообще в другой сборке. это самый чистый контроллер из всех.
Гы, ты же сам признал ранее, что грязно :)

hVosttмда... :) мы похоже забыли про прослойку EF, которой можно отдать другой провайдер данных в конфиге, или другую строку соединения. речь идёт о принципиальной смене поставщика данных. DbContext там не катит. поэтому приложение ничего не знает об это контексте. он работает только с сервисами и репами.
А причем тут прослойка EF, если ты генерик репозиторий прибиваешь к определенному типу контекста? Или не к типу контекста?
Вот смотрю твой код репозитория, он выплевывает IQueryable. Откуда ты берешь контексты EF и как ими управляешь? Ты не показал самого главного.

hVosttа вы... а вы.. )) уничтожаете мои стереотипы, как не стыдно!
Ломать не строить

hVosttну если так, другое дело. просто вы говорите, можно, но так не делаете. значит для TDD вам потребуется подгонка проекта. ну может вам перепадёт заказ со 100% тдд, а вы их окрестите шизой ))
Ну наконец! TDD - это еще не значит, что обязательно нужен сервис локатор, согласен? :)

hVosttединая песочница где находится? это синглетон? статик класс? отдельный менеджер? что бы вы не назвали, оно тоже должно где-то находиться )) только вот, что это за мифическая штуковина, которая снабжает инстантами контроллеры, фильтры и следит за временем их жизни?
Да хоть ASP.NET кеш или application, без разницы :) А мифическая штука - это называется фабрика (factory). Слыхал о таком паттерне?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093461
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
у EF DbContext это UnitOfWork. но мы делаем свой UoW, поверх него. задача у него одна, принципиальная. в контроллер мы никогда не прокидываем DbContext. а сохранять данные как-то надо. прокидываем IUnitOfWork, у которого есть Save (или Commit, кому как нравится). да, он может много чего еще. отслеживать изменения данных, вешаясь на определенные события, если надо. в общем, действовать как транзакционная машина, обрабатывать программные триггеры.

ну и самое главное. если в контроллере нет IUnitOfWork, значит он гарантированно 100% ничего в базу не сохраняет. только берет. это важный в разработке ньюанс. на самом деле приведенный выше код, это не «много грязи в коде», это кристальная ясность относительно того, что контроллер делает. а если контроллер чист, типа все ему передается через базовый класс, то не понятно ничего. надо копать. в большом проекте ковыряться для выяснения обстоятельств, — нудное и безынтересное занятие.

да какой то выхлоп не большой ...обертку над оберткой. как я уже писал "EF + тонкий интерфейс над ним - вот и все". ну на этом я закончу дебаты и просто попкорном запасусь)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093469
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttинтересный вывод )) жаль, не приправленный доводами... знаете, как-то безвкусно, может найдется щепотка... чего-нибудь?
А какие тут доводы нужны, если ты расслаиваешь свой EF контекст и выводишь уже свои IQueryable. Нафига? EF контекст - это и так уже по сути репозиторий (кодогенеренный или codefirst). Зачем делать второй репозиторий?

hVosttзвучит как будто из уст проповедника )) идите мои браться, да распространится знание по миру!
Дак это баян, извини, что про тебя забыли. Сто раз перетирали, что делать второй репозиторий наж контекстом - зло.

hVosttрасслоение лишним никогда не бывает.
Во всём нужно знать меру. Иначе твой подход превращается в безумие.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093470
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuда какой то выхлоп не большой ...обертку над оберткой. как я уже писал "EF + тонкий интерфейс над ним - вот и все". ну на этом я закончу дебаты и просто попкорном запасусь)
+1
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093508
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhandmadeFromRuщас скианыч прийдет и всех потушит рестфул сервисами!!)
Скианыч еще не вышел из стадии кодеманки )Опа-на, обоснуй.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093576
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОпа-на, обоснуй.
Чё обосновывать,
1. Только укуренные могут переписывать приложение с MVC на WebForms
2. Только укуренные могут скрещивать ужа с удавом
3. Только укуренные могут использовать разные левые гавношаблоны
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093581
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

неубедительно
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093594
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУ, неубедительно
Давняя история.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093629
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttхотел бы разъяснить, почему я провожу четкую черту между сервисом и репозиторием

Так и есть, репозиторий тупо для CRUD, сервис это уже BL.
В мелких проектах правда без разницы.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093777
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAОпа-на, обоснуй.
Чё обосновывать,
1. Только укуренные могут переписывать приложение с MVC на WebForms
2. Только укуренные могут скрещивать ужа с удавом
3. Только укуренные могут использовать разные левые гавношаблоны1. Уже уточнял, что никто ничего не преписывает с WebForms на MVC. Пишется новый большой модуль системы на MVC: CMS.
Старая CMS имеет примитивный функционал, который не переписывается, а выкидывается, а то, что не выкидывается, дёргается из MVC.
Улавливаешь, или укуренный?
2. Если не переписывать, то приходится вызывать некоторые контролы в том виде, в каком они есть. Это просто, а не то, что скрещивать ужа с удавом в надежде получить нормальный гибрид
3. Говношаблоны у тебя в штанах. StringTemplate - это нормальный движок на базе ANTLR.

Так что ни фига твое мнение не обосновано. Одно лишь тро-ло-ло
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093797
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

а зачем вы делаете IDataService? зачем расслаиваетесь? дайте контроллеру DbContext и не парьте себе мозги. чистота кода будет на высшем уровне -- ничегошеньки лишнего.

потом тайна покрытая пылью, чтоже там у вас в базовых контроллерцах, ЧТО? какой-то мега фэктори-мен? но на самом деле по барабану что у вас там сидит и как контроллер получает свой инстанс, либо так: new MyDataService, либо так MyDbFactoryOfServices.GetService<>(), либо даже так MySuperFactoryOfMyFactories.GetFactory().GetService().... разница нет. пока есть цепочка прямых зависимостей, вашему коду есть куда расти.

обертка над оберткой? да вы меня просто жестка троллите. нет, это разделение обязанностей, а не второй дбконтекст над существующим. не доходит? ну и ладно, значит вам и не надо :)

и кстати, сервис локатор нужен практически всегда :) без него -- можно. можно много без чего. но вам не построить приложение набором независимых взаимозаменяемых (это значит без поползновений в конструкторы объектов) компонентов без DI. но если вдруг вы изобретете что-то, что не использует автофак, юнити, нинжект.... это все равно будет ваш собственный DI, возможно посроенный на инкапсуляции, наследованиях, проброс объектов через вьюдату или темпдату, ну мало ли как вы там извращаетесь ))

МСУСто раз перетирали, что делать второй репозиторий наж контекстом - зло.

на эту тему даже шутки ради холиворить должно быть стыдно :-)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093827
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA1. Уже уточнял, что никто ничего не преписывает с WebForms на MVC. Пишется новый большой модуль системы на MVC: CMS.
Врешь, кодеманка злая! Черным по-белому говорил, что именно переписываешь. Не вынуждай искать пруф.

skyANA2. Если не переписывать, то приходится вызывать некоторые контролы в том виде, в каком они есть. Это просто, а не то, что скрещивать ужа с удавом в надежде получить нормальный гибрид
Это не нормальный гибрид - это идиотизм на постном масле со всеми вытекающими.

skyANA3. Говношаблоны у тебя в штанах. StringTemplate - это нормальный движок на базе ANTLR.
StringTemplate - это такой же нормальный шаблон, как мозг Севы. Не говори глупостей.

skyANAТак что ни фига твое мнение не обосновано. Одно лишь тро-ло-ло
Ну обосновано же!

hVosttМСУ, несете чушь. при чем такую непроходимо глухую и несусветную. с такой позицией как у вас можно, обладая усердием, доказать что MVC усложнение, увеличение количества не нужных простому деревенскому мужику слоёв, и всё надо писать в одном классе. никаких проблем с инстантами, все в одном месте, все всем всегда доступно.
Чушью это кажется тем, кто не понимает, что делает (или не пытается понять). Дублировать EF репозиторий и наслаждаться тем, как у него это дело расслоилось, может только шизофреник. Почему ты 3 или 4 раза не расслаиваешь свой "костыльный" репозиторий? Твои же слова - чем больше расслоений, тем лучше.

hVosttа зачем вы делаете IDataService? зачем расслаиваетесь? дайте контроллеру DbContext и не парьте себе мозги. чистота кода будет на высшем уровне -- ничегошеньки лишнего.
Не путай теплое с мягким - это расслоение разных уровней. У тебя же расслоение одного уровня, причем абсолютно бессмысленное. Улавливаешь разницу?

hVosttпотом тайна покрытая пылью, чтоже там у вас в базовых контроллерцах, ЧТО?
Открой код и посмотри. Пока там простая инстациация экземпляра. Надо будет - я без проблем подправлю только в одном месте и заюзаю не ручную инстациацию, а вкорячу сервис-локатор. В твоем же случае при каких-либо изменениях придется вносить изменения в 100500 мест, размазанных в прикладных контроллерах. У меня - всё централизованно и единообразно. Black box, о котором прикладные контроллеры ничего не знают.

hVosttобертка над оберткой? да вы меня просто жестка троллите. нет, это разделение обязанностей, а не второй дбконтекст над существующим. не доходит? ну и ладно, значит вам и не надо :)
Да, обертка над оберткой. Ты тупо прокидываешь IQueryable через дополнительную абстракцию - зачем?

hVosttи кстати, сервис локатор нужен практически всегда :) без него -- можно. можно много без чего.
Правильно. Поэтому когда мне будет нужно - я только в одном месте его подключу, в базовом контроллере. В твоем же случае получается мазня в 100500 контроллерах.

hVosttна эту тему даже шутки ради холиворить должно быть стыдно :-)
Стыдно должно быть тем, кто не задумывался над такой элементарной темой. А теме - сто лет в обед, городить второй огород - тупая трата времени.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093847
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttобертка над оберткой? да вы меня просто жестка троллите. нет, это разделение обязанностей, а не второй дбконтекст над существующим. не доходит? ну и ладно, значит вам и не надо :)


эм я не тролил вообще, просто хочу понять накой ляд забор...но смысл обертки такой я вижу если надо сделать независимость от орм. Если вы забыли, мы с вами остановились на uow и репо, которые у вас оба присутствуют в контроллере, обычно репо зависит от uow который и абстрагирует от ормк-ки. В размках Ef лишний слой имхо.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093852
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANA1. Уже уточнял, что никто ничего не преписывает с WebForms на MVC. Пишется новый большой модуль системы на MVC: CMS.
Врешь, кодеманка злая! Черным по-белому говорил, что именно переписываешь. Не вынуждай искать пруф.Ищи, ищи, укурок! Только не забудь о том, что я уточнял то, что мы конкретно делаем, потому как стало ясно, что меня не правильно поняли.
А то как обезъянка кинешь первую попавшуюся какашку, объясняй тебе потом в сотый раз

МСУskyANA2. Если не переписывать, то приходится вызывать некоторые контролы в том виде, в каком они есть. Это просто, а не то, что скрещивать ужа с удавом в надежде получить нормальный гибрид
Это не нормальный гибрид - это идиотизм на постном масле со всеми вытекающими.С какими вытекающими? Что нибудь, кроме пустых звуков сказать можешь?

МСУskyANA3. Говношаблоны у тебя в штанах. StringTemplate - это нормальный движок на базе ANTLR.
StringTemplate - это такой же нормальный шаблон, как мозг Севы. Не говори глупостей.Выссказывание из разряда "ваша музыка говно, потому что гладиолус". Ты же не читал "достоевского", на каком основании осуждаешь?

МСУskyANAТак что ни фига твое мнение не обосновано. Одно лишь тро-ло-ло
Ну обосновано же! Одно лишь тро-ло-ло
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093854
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuhVosttобертка над оберткой? да вы меня просто жестка троллите. нет, это разделение обязанностей, а не второй дбконтекст над существующим. не доходит? ну и ладно, значит вам и не надо :)


эм я не тролил вообще, просто хочу понять накой ляд забор...но смысл обертки такой я вижу если надо сделать независимость от орм. Если вы забыли, мы с вами остановились на uow и репо, которые у вас оба присутствуют в контроллере, обычно репо зависит от uow который и абстрагирует от ормк-ки. В размках Ef лишний слой имхо.
Независимость от ORM делается по-другому (в моем примере как-раз реализована независимость): http://codearticles.ru/Home/ArticleView/2155

Код: c#
1.
2.
3.
4.
5.
public interface IDataService
{
    CategoryModel GetCategoryById(int id);
    IEnumerable<CategoryModel> GetCategories();
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public partial class SqlDataService: IDataService
{
    public virtual CategoryModel GetCategoryById(int id)
    {
        using (var ctx = new Northwind())
        {
            var category = ctx.Categories.Include("Products").FirstOrDefault(d => d.CategoryID == id);
            var result = DataMapper.Map<CategoryModel>(category);
            result.Products = category.Products.Select(d => DataMapper.Map<ProductModel>(d));
            return result;
        }
    }

    public virtual IEnumerable<CategoryModel> GetCategories()
    {
        using (var ctx = new Northwind())
        {
            var categories = ctx.Categories.ToList();
            return categories.Select(d => DataMapper.Map<CategoryModel>(d));
        }
    }
}
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093855
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНезависимость от ORM делается по-другому (в моем примере как-раз реализована независимость)
То есть я просто беру и выкидываю SqlDataService, на его место ставлю XmlDataService, который работает вообще с XML

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public partial class XmlDataService : IDataService
{
    public virtual CategoryModel GetCategoryById(int id)
    {
        throw new NotImplementedException();
    }

    public virtual IEnumerable<CategoryModel> GetCategories()
    {
        throw new NotImplementedException();
    }
}
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093861
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuhVosttобертка над оберткой? да вы меня просто жестка троллите. нет, это разделение обязанностей, а не второй дбконтекст над существующим. не доходит? ну и ладно, значит вам и не надо :)


эм я не тролил вообще, просто хочу понять накой ляд забор...но смысл обертки такой я вижу если надо сделать независимость от орм. Если вы забыли, мы с вами остановились на uow и репо, которые у вас оба присутствуют в контроллере, обычно репо зависит от uow который и абстрагирует от ормк-ки. В размках Ef лишний слой имхо.

повторяю для отдельных :) это разделение обязанностей

если у меня контроллер рулит пользователями, я ему даю IUserSevice/IUserRepository, никуда больше он не залезет

это интерфейсы, через них я даю доступ к большому такому контексту. окошечко.

uow нужен для коммита, сохранения данных и поддержки транзакционности. он не даёт доступа к контекстам, репам, сервисам. ну можно и по-другому конечно, можно как угодно. но мне видится это самым логичным. на практике этот подход показал себя с лучшей стороны.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093869
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИщи, ищи, укурок! Только не забудь о том, что я уточнял то, что мы конкретно делаем, потому как стало ясно, что меня не правильно поняли.
Вот видишь, начинаешь пятиться назад, кодеманочка? А то уже хотел искать/

skyANAА то как обезъянка кинешь первую попавшуюся какашку, объясняй тебе потом в сотый раз
Да ты сам уже запутался в своём вранье. Сначала одно говоришь, потом второе, теперь третье - прям как кухарка на кухне мечешься от горящей сковородки к взлетевшей вверх кастрюле у плиты

skyANAС какими вытекающими? Что нибудь, кроме пустых звуков сказать можешь?
С прямыми вытекающими. Понос, другими словами. Тяжело с тобой

skyANAВыссказывание из разряда "ваша музыка говно, потому что гладиолус". Ты же не читал "достоевского", на каком основании осуждаешь?
Про достоевского ты прав, конечно, но это агрумент из разряда - не из нашей песочницы, значит гумно. Смирись, челядь :)

skyANAОдно лишь тро-ло-ло
Ну вот, опять тро-ло-ло. Говорю обосновано, значит обосновано :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093876
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли у меня контроллер рулит пользователями, я ему даю IUserSevice/IUserRepository, никуда больше он не залезет
Садись, два. Контроллер не должен рулить пользователями, он должен обратиться к сервису и ответ его отдать вью. Контроллер выступает в роли презентера, обратился к одному слою, отдал другому. Никакой логики в контроллере не должно быть. Более того, ASP.NET MVC контроллер заточен только под эту технологию со своей спецификой, поэтому он должен быть как можно плоским и простым - ни грамма логики.

hVosttuow нужен для коммита, сохранения данных и поддержки транзакционности.
Коммитить должен сервис, ровно как и управлять транзакционгостью.

P.S. Вот дай паттерны новичку, он задушится ими
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093877
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Код: c#
1.
2.
3.
4.
5.
6.
7.
using (var ctx = new Northwind())
        {
            var category = ctx.Categories.Include("Products").FirstOrDefault(d => d.CategoryID == id);
            var result = DataMapper.Map<CategoryModel>(category);
            result.Products = category.Products.Select(d => DataMapper.Map<ProductModel>(d));
            return result;
        }



я не вижу больше смысла в дальнейшей дискуссии. маппинг там, где он совершенно не нужен, захват контекста в каждом методе, и это называется чистым кодом? вы либо просто бредите после жестокой пьянкой и впали в детство... либо, вообще оттуда еще не вылазили :) знал бы вокруг какого "идеального" кода крутится спор, давно бы уже перестал.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093882
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНезависимость от ORM делается по-другому (в моем примере как-раз реализована независимость): http://codearticles.ru/Home/ArticleView/2155

Код: c#
1.
2.
3.
4.
5.
public interface IDataService
{
    CategoryModel GetCategoryById(int id);
    IEnumerable<CategoryModel> GetCategories();
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public partial class SqlDataService: IDataService
{
    public virtual CategoryModel GetCategoryById(int id)
    {
        using (var ctx = new Northwind())
        {
            var category = ctx.Categories.Include("Products").FirstOrDefault(d => d.CategoryID == id);
            var result = DataMapper.Map<CategoryModel>(category);
            result.Products = category.Products.Select(d => DataMapper.Map<ProductModel>(d));
            return result;
        }
    }

    public virtual IEnumerable<CategoryModel> GetCategories()
    {
        using (var ctx = new Northwind())
        {
            var categories = ctx.Categories.ToList();
            return categories.Select(d => DataMapper.Map<CategoryModel>(d));
        }
    }
}



Идём далее. Тут давеча я приводил пример, что через некоторое время может поменяться поставщик для определенных справочников - через акспату. Например, 90% логики остается такой же, 10% - переписывать на WCF-сервисы из акспаты.
Гавно вопрос: создаем новый датасервис AxaptaDataService и наследуем его от SqlDataService, 10% методов переписываем через override, всё остальное у нас работает как часы. Поэтому при смене источника для определенных сущностей мы тупо переписали только 10% методов,наследование рулит. Поддерживать такую архитектуру одно удовольствие.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093884
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttесли у меня контроллер рулит пользователями, я ему даю IUserSevice/IUserRepository, никуда больше он не залезет
Садись, два. Контроллер не должен рулить пользователями, он должен обратиться к сервису и ответ его отдать вью. Контроллер выступает в роли презентера, обратился к одному слою, отдал другому. Никакой логики в контроллере не должно быть. Более того, ASP.NET MVC контроллер заточен только под эту технологию со своей спецификой, поэтому он должен быть как можно плоским и простым - ни грамма логики.

hVosttuow нужен для коммита, сохранения данных и поддержки транзакционности.
Коммитить должен сервис, ровно как и управлять транзакционгостью.

P.S. Вот дай паттерны новичку, он задушится ими

у вас бред головного мозга. контроллер должен... обратиться к сервису и ответ отдать... -- это же чистой воды ненужная лишняя обертка! вердикт -- убрать. вы помешались на "идеальности" паттернов, и все бы ничего, но из-за этого вы искаженно понимаете суть MVC, что лучше вы бы её вообще не понимали, чем так... почитайте Фаулера. хотябы первую главу. потом может втянитесь, а там глядишь, немного поумнеете :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093888
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГоворю обосновано, значит обосновано :)Да какой там, слился ты на слова про понос. C тобой это бывает, когда сказать толком нечего. Так что в очередной раз пшёл нах!
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093890
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя не вижу больше смысла в дальнейшей дискуссии.
Не заставляю, просто показываю мир под другим углом. По сути тоже самое, но с другой глазурью. Думать, осознавать и принимать блюдо - решать только тебе.

hVosttмаппинг там, где он совершенно не нужен, захват контекста в каждом методе, и это называется чистым кодом?
Да, полноценный независимый датасервис. Можно отдать его независимым разработчикам на аутсорс, которые ничего не знают от твоем хранилище. Либо отдать своим разработчикам (четкое разделение труда с обозначенными границами), легко вспоследствии рефакторить, дорабатывать, изменять поставщиков и пр. Ты просто с такими проектами еще не работал, поэтому тебя так трясет :) Сядь, пойми и осознай - всё упирается не только в написание кода, но еще и управление проектной командой, поддержкой этого кода, и т.п.

hVosttвы либо просто бредите после жестокой пьянкой и впали в детство... либо, вообще оттуда еще не вылазили :) знал бы вокруг какого "идеального" кода крутится спор, давно бы уже перестал.
Я просто пытаюсь в очередной раз стереть тем самые стереотипы, которые смотрять на жизнь под одним углом. Если поймешь о чем я тебе втирал - хорошо, не поймешь - покойся с миром.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093895
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttу вас бред головного мозга. контроллер должен... обратиться к сервису и ответ отдать... -- это же чистой воды ненужная лишняя обертка!
Бред головного мозга был у тебя еще при твоем рождении, унылая кодирующая обезьянка :) Какая еще лишняя обертка, у меня оберток меньше, чем у тебя

hVosttвердикт -- убрать. вы помешались на "идеальности" паттернов, и все бы ничего, но из-за этого вы искаженно понимаете суть MVC, что лучше вы бы её вообще не понимали, чем так... почитайте Фаулера. хотябы первую главу. потом может втянитесь, а там глядишь, немного поумнеете :)
Я читал Фаулера, когда ты еще писялся в штаны от удовольствия, что осознал, что такое условный оператор. Искажение у тебя за счет отсутствия опыта, так что можешь захлебнуться своим выделением слюнной жедезы - я всё сказал по теме.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093897
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУГоворю обосновано, значит обосновано :)Да какой там, слился ты на слова про понос. C тобой это бывает, когда сказать толком нечего. Так что в очередной раз пшёл нах!
Ты просто убогая безсознательная обезьянка, которая сама ничего не помнит, что говорила, кому говорила и зачем говорила. Запуталась во вранье? Убей себя об монитор, ты этого заслуживаешь
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093914
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, я помню, что изначально сказал в том топике, потом сделал уточнение в том же топике.
Потом несколько раз уточнял специально для тебя.
Но ты же у нас не слушаешь...
И я после этого обезъянка, которая сама ничего не помнит...

Извини, но походу ты му**к конченый
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093955
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жжоте

приятно читать умных интеллигентных людей.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093959
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

какие вы там сервисы готовите подменять? куда? на что? зачем? что за бредятина? с горячей сменой дата-сервисов вообще другие подходы применяются, даже не такие, что я предлагал (мой ориентирован на TDD). но вы бы знали о них, если бы вы читали проф. литературу, и такой бред бы не несли под видом знатока (кстати, очки поправьте).

про унылую мартышку вброс засчитан. показал ваши изыски своему отделу. поржали от души, чо. вы сделали наш день :-)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093965
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhжжоте

приятно читать умных интеллигентных людей.

тут так принято обсирать друг друга? я просто не в курсе. или это такой местный убойный йумор? :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38093972
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтут так принято обсирать друг друга? я просто не в курсе. или это такой местный убойный йумор? :)
Это смотря на какого юмориста попадаешь :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094104
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока на личности не перешли - прибить нужно топик.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094113
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУпропущено...

Садись, два. Контроллер не должен рулить пользователями, он должен обратиться к сервису и ответ его отдать вью. Контроллер выступает в роли презентера, обратился к одному слою, отдал другому. Никакой логики в контроллере не должно быть. Более того, ASP.NET MVC контроллер заточен только под эту технологию со своей спецификой, поэтому он должен быть как можно плоским и простым - ни грамма логики.

пропущено...

Коммитить должен сервис, ровно как и управлять транзакционгостью.

P.S. Вот дай паттерны новичку, он задушится ими

у вас бред головного мозга. контроллер должен... обратиться к сервису и ответ отдать... -- это же чистой воды ненужная лишняя обертка! вердикт -- убрать. вы помешались на "идеальности" паттернов, и все бы ничего, но из-за этого вы искаженно понимаете суть MVC, что лучше вы бы её вообще не понимали, чем так... почитайте Фаулера. хотябы первую главу. потом может втянитесь, а там глядишь, немного поумнеете :)
А что Вам не нравится в этом, это как бы аксиома, то что Вы выдернули обращение к сервису из контекста - так это просто казуистика.
Мне так то по большому фиолетово что там с контроллером, я например не согласен с мсу в плане орм слоя и уж тем более с Вами.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094162
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

а вы смешной. врете как мерин, что читали фаулера, зачем врать не понимаю. знаете всего по чуть-чуть, где-то в районе верхушки айсберга. показываете примеры для даунов, скопипащенные с каких-то учебных мануалов, но хотя да — можно делать и хуже.
Мне фиолетово мнение бездумного линейного кодера, который не понимает сути, которую ему вменяют.
Скопипасщенные примеры, всё же, у тебя - тупое дублирование репозитория с не менее тупым размазыванием абстракций в реализации контроллеров. Да, можно делать и хуже.


hVostt какие вы там сервисы готовите подменять? куда? на что? зачем? что за бредятина? с горячей сменой дата-сервисов вообще другие подходы применяются, даже не такие, что я предлагал (мой ориентирован на TDD). но вы бы знали о них, если бы вы читали проф. литературу, и такой бред бы не несли под видом знатока (кстати, очки поправьте).
Ты просто уныл своим мартышкиным мышлением, десять раз повторил про жизненные реалии, когда требуется 10% слоя данных брать из других источников. Пример реален как сама жизнь, просто опять же, ты не имеешь опыта работы. Потому что ты глупая кодеманка, коих тыщи. На тебе можно пахать, заправляя в узды. Но на что-то более ты не способа.

hVostt про унылую мартышку вброс засчитан. показал ваши изыски своему отделу. поржали от души, чо. вы сделали наш день :-)
Предоставил себе отдел линейных обезьянок, радующихся новому дню. Искренне поржал
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094176
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степия например не согласен с мсу в плане орм слоя
Готов выслушать альтернативные аргументы. Для меня главное в этом слое - полностью отвязаться от конкретного поставщика данных (ORM, SOA, XML, ... etc). Контроллер через IDataService оперирует дата-моделями (дополнительная прокся от ORM, SOA, XML, ... etc), использует их в моделях представлений (некий примес MVVM подхода) и честно подсовывает это во View. Гибко и отвязанно от конкретного поставщика данных? Да.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094204
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
То что вы перечислили выше, спору нет но вы подаете это через интерфейс,
но полгода назад я подсмотрел одну фитчу на черной утке ( nhiber), в голове эта фитча переросла в более что то масштабное.
думаю что за недельку я дам новый паттрен ( и тут Остапа понесло :)). более изолированное и более масштабированное
ps http://code.ohloh.net/ не плохой проект, есть расширение для студии, пользуюсь пару лет - но г.кода хватает :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094209
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степидумаю что за недельку я дам новый паттрен ( и тут Остапа понесло :)). более изолированное и более масштабированное
Готов с распростёртыми объятиями принять это поделие у себя в кулуарах - забрасывай в рецепты
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094220
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
да это как бы будет размышление, с примерами реализации ну и естественно хотелось бы иметь предложение и направления
от сообщества
Ну и по Критериону будет новый релиз, я просто по невнимательности пропустил рефакторинг участка кода, и приложение
отжирает ( не обосновано, кусок кучи в третьем поколении) просто я всегда об этом помнил, ну а тут забыл ( ну с кем не бывает)
ну и будет дополнено контролом для использования этой фишки в классических вебформах.
Вот кстати мои утверждения, при разработке контролов на мувице, надо обязательно иметь возможность
пользоваться этими "контролами" и на классике равно и на оборот, сделать это вообще не составляет труда (кто меня понимает)
но мы имеем универсальный контрол, который может работать на двух направлениях - это не ущемляет разработчиков и вносит толерантность.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094221
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Манифест однако...
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094278
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУНезависимость от ORM делается по-другому (в моем примере как-раз реализована независимость): http://codearticles.ru/Home/ArticleView/2155

Код: c#
1.
2.
3.
4.
5.
public interface IDataService
{
    CategoryModel GetCategoryById(int id);
    IEnumerable<CategoryModel> GetCategories();
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public partial class SqlDataService: IDataService
{
    public virtual CategoryModel GetCategoryById(int id)
    {
        using (var ctx = new Northwind())
        {
            var category = ctx.Categories.Include("Products").FirstOrDefault(d => d.CategoryID == id);
            var result = DataMapper.Map<CategoryModel>(category);
            result.Products = category.Products.Select(d => DataMapper.Map<ProductModel>(d));
            return result;
        }
    }

    public virtual IEnumerable<CategoryModel> GetCategories()
    {
        using (var ctx = new Northwind())
        {
            var categories = ctx.Categories.ToList();
            return categories.Select(d => DataMapper.Map<CategoryModel>(d));
        }
    }
}



Идём далее. Тут давеча я приводил пример, что через некоторое время может поменяться поставщик для определенных справочников - через акспату. Например, 90% логики остается такой же, 10% - переписывать на WCF-сервисы из акспаты.
Гавно вопрос: создаем новый датасервис AxaptaDataService и наследуем его от SqlDataService, 10% методов переписываем через override, всё остальное у нас работает как часы. Поэтому при смене источника для определенных сущностей мы тупо переписали только 10% методов,наследование рулит. Поддерживать такую архитектуру одно удовольствие.

1.Какой-то бред, придуманный на ходу или для заполнения говносайта с детскими рецептами.
CategoryModel - явно не обобщенный вариант, а конкретная модель для Категории.
У тебя что 10% Категорий лежат в Аксапте.
2. Интерфейсы были придуманы для того, чтобы уйти от косяков с наследованием. Завтра понадобится еще 10% для 1С, послезавтра
20% для интеграции с другими системами. А через год требования для базовой SqlDataService изменятся так, что они совершенно не будут стыковаться с другими. Наследования для подобных вариантов - полная хрень с обязательными граблями в будущем.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094284
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttкак видно все, что нужно для работы инжектируется в контроллер каким-то внешним объектом (депенси ресолвером), оно же управляет временем жизни.
В большинстве случаев (а их 99%) достаточно ручной инстанциации экземпляра (IProjectRepository) - через конструктор базового контроллера. У тебя он отсутствует.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class BaseController : Controller
{
    public IDataService DataService { get; private set; }

    public BaseController()
    {
        this.DataService = new DataService.Sql.SqlDataService();
    }
}



В IDataService - только IEnumerable , никаких квери и еще что-либо.

Код: c#
1.
2.
3.
4.
5.
public class IDataService
{
    Category GetCategoryById(int id);
    IEnumerable<Category> GetCategories();
}



По причине того, что мы можем подключить сторонний датасервис, например, XmlDataService, который ничего не знает о трансляции SQL. IEnumerable - это бест практис.

hVosttзачем отдавать вью квери и параметры сортировки? ну, например, хотя бы потому, что вью может выбрать столько, сколько нужно и отсортировать в соответствии со видом и назначением вью (например, параметры сортировки для атома всегда одни и те, же в независимости от того, что там хочет контроллер)
Как решается эта задача - в IDataService:

Код: c#
1.
IEnumerable<Category> GetCategoriesPages(int pageIndex, int pageSize)



Всё. А в своём SqlDataService или XmlDataService делаешь реализацию.

Из контроллера:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public ActionResult Index(int? page)
{
    var model = new IndexViewModel();
    // ...
    var items = base.DataService.GetCategoriesPages(page.GetValueOfDefault(), 30);
    model.Items.AddRange(items);
    return View(model);
}



Идея понятна?

P.S. Слишком много инъекций с ресолвами, код выглядит загаженно и удручающе. В моем случае - код чистый, инкапсуляция рулит.

1."Ресолвы" только у тех кто не имеет никакого понятия о DI контроллерах, которые инжектят зависимости автоматически.
В результате код самый чистый.
2. При переписывании бредовых 10% процентов ты еще будешь своими грязными руками лезть еще в контроллеры, а в случае с DI нет.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094297
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...


Идём далее. Тут давеча я приводил пример, что через некоторое время может поменяться поставщик для определенных справочников - через акспату. Например, 90% логики остается такой же, 10% - переписывать на WCF-сервисы из акспаты.
Гавно вопрос: создаем новый датасервис AxaptaDataService и наследуем его от SqlDataService, 10% методов переписываем через override, всё остальное у нас работает как часы. Поэтому при смене источника для определенных сущностей мы тупо переписали только 10% методов,наследование рулит. Поддерживать такую архитектуру одно удовольствие.

1.Какой-то бред, придуманный на ходу или для заполнения говносайта с детскими рецептами.
CategoryModel - явно не обобщенный вариант, а конкретная модель для Категории.
У тебя что 10% Категорий лежат в Аксапте.
2. Интерфейсы были придуманы для того, чтобы уйти от косяков с наследованием. Завтра понадобится еще 10% для 1С, послезавтра
20% для интеграции с другими системами. А через год требования для базовой SqlDataService изменятся так, что они совершенно не будут стыковаться с другими. Наследования для подобных вариантов - полная хрень с обязательными граблями в будущем.
1. Бред у тебя в мозгах, а тут датасервис. 10% методов (категории и продукты) переносятся в аксапту. Пишем новый датасервис с переопределением 10% методов.
2. Интерфейсы были придуманы не для ухода от косяков, а для наследования с обязательностью реализации контракта. сюда можно закладывать не только 1с, но и данные из космоса, вся логика будет работать так же на тех же рельсах.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094300
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

В большинстве случаев (а их 99%) достаточно ручной инстанциации экземпляра (IProjectRepository) - через конструктор базового контроллера. У тебя он отсутствует.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class BaseController : Controller
{
    public IDataService DataService { get; private set; }

    public BaseController()
    {
        this.DataService = new DataService.Sql.SqlDataService();
    }
}



В IDataService - только IEnumerable , никаких квери и еще что-либо.

Код: c#
1.
2.
3.
4.
5.
public class IDataService
{
    Category GetCategoryById(int id);
    IEnumerable<Category> GetCategories();
}



По причине того, что мы можем подключить сторонний датасервис, например, XmlDataService, который ничего не знает о трансляции SQL. IEnumerable - это бест практис.

пропущено...

Как решается эта задача - в IDataService:

Код: c#
1.
IEnumerable<Category> GetCategoriesPages(int pageIndex, int pageSize)



Всё. А в своём SqlDataService или XmlDataService делаешь реализацию.

Из контроллера:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public ActionResult Index(int? page)
{
    var model = new IndexViewModel();
    // ...
    var items = base.DataService.GetCategoriesPages(page.GetValueOfDefault(), 30);
    model.Items.AddRange(items);
    return View(model);
}



Идея понятна?

P.S. Слишком много инъекций с ресолвами, код выглядит загаженно и удручающе. В моем случае - код чистый, инкапсуляция рулит.

1."Ресолвы" только у тех кто не имеет никакого понятия о DI контроллерах, которые инжектят зависимости автоматически.
В результате код самый чистый.
2. При переписывании бредовых 10% процентов ты еще будешь своими грязными руками лезть еще в контроллеры, а в случае с DI нет.
Ты так нихрена и не понял, контроллеры не меняются, они остаются такими как были. Меняется только датасервис.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094356
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaпропущено...


1.Какой-то бред, придуманный на ходу или для заполнения говносайта с детскими рецептами.
CategoryModel - явно не обобщенный вариант, а конкретная модель для Категории.
У тебя что 10% Категорий лежат в Аксапте.
2. Интерфейсы были придуманы для того, чтобы уйти от косяков с наследованием. Завтра понадобится еще 10% для 1С, послезавтра
20% для интеграции с другими системами. А через год требования для базовой SqlDataService изменятся так, что они совершенно не будут стыковаться с другими. Наследования для подобных вариантов - полная хрень с обязательными граблями в будущем.
1. Бред у тебя в мозгах, а тут датасервис. 10% методов (категории и продукты) переносятся в аксапту. Пишем новый датасервис с переопределением 10% методов.
2. Интерфейсы были придуманы не для ухода от косяков, а для наследования с обязательностью реализации контракта. сюда можно закладывать не только 1с, но и данные из космоса, вся логика будет работать так же на тех же рельсах.


Бред у тебя в мозгах, а как следствие говнокод.
Единый датасервис - полная полова и несоблюдение принципа единичной ответственности. За это голову голову, а тебе задницу, отбивать нужно. До такого идиотизма еще никто не додумался.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094360
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мудафаил, твои датасервисы(очередной левый термин, Фаулер ты наш местного разлива) пригодны только для школьников.

Любое бизнес-приложение(говносайтики на несколько страниц для которых пригодны мембершипы с тремя ролями не в счет) - достаточно ограниченный набор сценариев: открыть\отфильтровать список, создать\редактировать единичную запись, etc.
Для них возможно написание обобщенных контроллеров a'la Controller<TModel>, переопределив resolver для Сontoller'a в купе с DI можно забыть об их создании и ручном кодировании.
Для того, чтобы был общий вариант нужно использовать ViewModel, которые ты не осилил, тк это более общий вариант и часто требуется агрегация данных и дополнительные сущности для создании ViewModel и View.
При таком подходе все разделено, рисуем View, иногда переопределяем контроллеры и\или ViewModel
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094386
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

1. Бред у тебя в мозгах, а тут датасервис. 10% методов (категории и продукты) переносятся в аксапту. Пишем новый датасервис с переопределением 10% методов.
2. Интерфейсы были придуманы не для ухода от косяков, а для наследования с обязательностью реализации контракта. сюда можно закладывать не только 1с, но и данные из космоса, вся логика будет работать так же на тех же рельсах.


Бред у тебя в мозгах, а как следствие говнокод.
Единый датасервис - полная полова и несоблюдение принципа единичной ответственности. За это голову голову, а тебе задницу, отбивать нужно. До такого идиотизма еще никто не додумался.
Единичная ответственность - в твоем убогом воспаленном сознании, которое обгавнялось уже десятки раз. Датасервис - это отдельный слой, который подкючается в базовом контроллере по указанному интерфейсу. Тебе не голову отбивать нужно, а мозги скачать и выкинуть. Будешь пустоголовой обезьяной.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094389
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМудафаил, твои датасервисы(очередной левый термин, Фаулер ты наш местного разлива) пригодны только для школьников.

Любое бизнес-приложение(говносайтики на несколько страниц для которых пригодны мембершипы с тремя ролями не в счет) - достаточно ограниченный набор сценариев: открыть\отфильтровать список, создать\редактировать единичную запись, etc.
Для них возможно написание обобщенных контроллеров a'la Controller<TModel>, переопределив resolver для Сontoller'a в купе с DI можно забыть об их создании и ручном кодировании.
Для того, чтобы был общий вариант нужно использовать ViewModel, которые ты не осилил, тк это более общий вариант и часто требуется агрегация данных и дополнительные сущности для создании ViewModel и View.
При таком подходе все разделено, рисуем View, иногда переопределяем контроллеры и\или ViewModel
Ты просто унылый ушлепок без грамма сознания - почитай про идею mvp подхода. Обобщенный контроллер нужен только таким кретинам как ты, в асп нет мвц за инстанциацию контроллера отвечает ядро. Ты просто унылый арангутанг, который ничего не понимает в мвц.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094429
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

видимо тебе как маленькому ребеночку надо пояснить, в чем же ты заблуждаешься:

1. в каждом методе твоего "датасервиса" вот такая штука: using(var db = new MyDbContext). возможно, не каждый метод сервиса создает новый контекст. это типа позволяет переписать сервис, заменив только те методы которые зависят от контекста. но чтобы переписать эти методы, надо знать какие . разделение ответственности мы похоронили без музыки и цветов.

2. за использование наследования для тупого прокидывания объекта сервиса/контекста/репозитория, надо отрубать руки, по самую голову. у контроллера не должно быть базового контроллера, если он только не реализует общую логику для всех контроллеров. предоставление объекта сервиса — это не логика. этим должен заниматься внешний контейнер.

3. датасервис ничего не должен знать про MyDbContext. и, поэтому, не должен создавать его инстансты напрямую. таким образом можно вообще убрать контекст из проекта, или заменить контекст на другой, подсунуть его адаптер или прокси. также можно не писать заглушки вручную в процессе разработки, используя моки. что очень хорошо. подход с using(MyDbContext) плох, грязен, и отвратителен.

4. датасервис нужно разделять на зоны ответственности. тогда все части можно будет разрабатывать совершенно независимо, имея на руках только доменную модель интерфейсов. тогда будет разделение работы, и поголовное счастье. и никакого большого IDataService на весь проект — это форменное издевательство, если проект чуть больше, чем "Hello World!"


П.С. ответ по-большей части написан не для МСУ, так как этот товарищ обязательно спустится на уровень "ты тупая обезьянка", на котором мне не о чем с ним говорить вообще, а для тех, кому интересна обсуждаемая тема на адекватном уровне.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094459
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, даже если все человечество ткнет тебя носом в твой грязный код, ты все равно останешься при своем. такое упорство как минимум заслуживает уважения :) но из программеров я бы тебя выгнал. наверное твоя кандидатура хорошо бы смотрелась среди маркетологов. но не среди программистов, и уж тем более проектировщиков.
Уж извини, но читать что-то про кандидатур программистов от таких как ты смешно, которые никогда не работали в команде, которые REST называют архитектурой, вещают о том, что все сервера работают REST. Только шизофреник может такое ляпнуть. Про WebForms и небесную ману я вообще поржал - порог вхождения в технологию самый низкий, а для тебя нужно быть каким-то магом, что-бы всё хорошо получилось. Ты просто неотёсаный пионер, которому вкормили на работает старшие товарищи порцию навоза. Ты тупо бездумно проглотил эту хрень, ничего другого принимать не желая. Банальная кодеманка, кули тут еще сказать.

hVosttвидимо тебе как маленькому ребеночку надо пояснить, в чем же ты заблуждаешься
Тебе нечего объяснять, ибо твоя дегенеративная ветвь мышления - утопична.

hVostt1. в каждом методе твоего "датасервиса" вот такая штука: using(var db = new MyDbContext). возможно, не каждый метод сервиса создает новый контекст. это типа позволяет переписать сервис, заменив только те методы которые зависят от контекста. но чтобы переписать эти методы, надо знать какие . разделение ответственности мы похоронили без музыки и цветов.
И правильно - каждый метод самодостаточен для получения данные, он и рулит жизью экземпляра датаконтекста. Если это будет XML - значит будет использоваться XmlDocument или XDocument во всеми вытекающими. Вытаскивать наружу MyDbContext (например, через генерик датаконтекст или просто в конструкторе) нет смысла, потому что датасервис может обращаться к различным базам данных. Так же нет смысла вытаскивать наружу MyDbContext для тестирования, так как там тестировать нечего. Зачем тебе тестировать автогенеренный MyDbContext от EF? Поэтому ты вволе им управлять в методах. При большом желании всё-таки никто не запрещает его вытащить на уровень конструктора, дело желания.

hVostt2. за использование наследования для тупого прокидывания объекта сервиса/контекста/репозитория, надо отрубать руки, по самую голову. у контроллера не должно быть базового контроллера, если он только не реализует общую логику для всех контроллеров. предоставление объекта сервиса — это не логика. этим должен заниматься внешний контейнер.
За не использование наследования и тупое размазывание интерфейсов в прикладных контроллерах нужно выкачивать мозг, напрочь. С последующей заливкой керосина. У контроллера должен быть базовый контроллер и логикой он не должен заниматься априори. За такие слова тебя Фаулер лично бы четвертовал - за тупость и кретинизм. Никому не рассказывай про этот бред.

hVostt3. датасервис ничего не должен знать про MyDbContext. и, поэтому, не должен создавать его инстансты напрямую. таким образом можно вообще убрать контекст из проекта, или заменить контекст на другой, подсунуть его адаптер или прокси. также можно не писать заглушки вручную в процессе разработки, используя моки. что очень хорошо. подход с using(MyDbContext) плох, грязен, и отвратителен.
Датасервис должен всё знать о датаконтексте, я уже говорил - твоё дублированное расслоение и прокидывание IQueryable - сплошной воды утопия на чистом месте. Датасервис сам является адаптером, поэтому ему не нужна еще какая-либо абстракция.

hVostt4. датасервис нужно разделять на зоны ответственности. тогда все части можно будет разрабатывать совершенно независимо, имея на руках только доменную модель интерфейсов. тогда будет разделение работы, и поголовное счастье. и никакого большого IDataService на весь проект — это форменное издевательство, если проект чуть больше, чем "Hello World!"
Сами датасервисы - независимые компоненты приложения, которые стыкуется с ними по IDataService. Что ты там еще хочешь разделить, непонятно. "IDataService на весь проект" - это бред твоего воспаленного воображения, а я такого не говорил. У тебя могут быть 100500 датасервисов, у каждого свое предназначение.

hVosttП.С. ответ по-большей части написан не для МСУ, так как этот товарищ обязательно спустится на уровень "ты тупая обезьянка", на котором мне не о чем с ним говорить вообще, а для тех, кому интересна обсуждаемая тема на адекватном уровне.
Тебе рано еще говорить об адекватном уровне, рано.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094467
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt...
П.С. ответ по-большей части написан не для МСУ, так как этот товарищ обязательно спустится на уровень "ты тупая обезьянка", на котором мне не о чем с ним говорить вообще, а для тех, кому интересна обсуждаемая тема на адекватном уровне.Интересна. Только хочу сказать, что хотя обсуждение идет не на уровне конкретной реализации, все же каждый это подразумевает (оценивая, как бы это сказать... психологическую сторону дискуссии, что ли). При этом МСУ, если так можно выразиться, более "абстрактен/универсален". Складывается впечатление, что его основные оппоненты, в силу каких-то причин, более приближены к конкретной реализации. Отсюда и сыр-бор...
hVostt...
но на мвц я это можно сделать в разы быстрее, с комфортом и ветерком.Пруф в студию - чем обосновано?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094468
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, эта идеология IDataService в контроллере отлично ложится и на WebForms (в контексте презентера): ASP.NET Supervising Controller (Model View Presenter)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094470
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

как и ожидалось, ответ на уровне "тупой мартышки". если не очевидно, что ты не протестируешь свой дата сервис без контекста, и не заставишь работать без него... то извините, вопросов больше не имею. вы реальынй тру-кодер, маг с большой буквы и волшебник, нам с нашим куцым примитивным мышлением до вас очень и очень далеко.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094471
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConstСкладывается впечатление, что его основные оппоненты, в силу каких-то причин, более приближены к конкретной реализации. Отсюда и сыр-бор...
Потому что я практик , а не теоретик, как мой голословный оппонент, который даже не имеет опыта командной разработки :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094473
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИ правильно - каждый метод самодостаточен для получения данные, он и рулит жизью экземпляра датаконтекста. Если это будет XML - значит будет использоваться XmlDocument или XDocument во всеми вытекающими. Вытаскивать наружу MyDbContext (например, через генерик датаконтекст или просто в конструкторе) нет смысла, потому что датасервис может обращаться к различным базам данных. Так же нет смысла вытаскивать наружу MyDbContext для тестирования, так как там тестировать нечего. Зачем тебе тестировать автогенеренный MyDbContext от EF? Поэтому ты вволе им управлять в методах. При большом желании всё-таки никто не запрещает его вытащить на уровень конструктора, дело желания.

детский сад.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094475
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, как и ожидалось, ответ на уровне "тупой мартышки". если не очевидно, что ты не протестируешь свой дата сервис без контекста, и не заставишь работать без него... то извините, вопросов больше не имею. вы реальынй тру-кодер, маг с большой буквы и волшебник, нам с нашим куцым примитивным мышлением до вас очень и очень далеко.
Десятый раз говорю - конкретный датасервис уже в себя включает датасервис, считай это некий balck box (датасервис), о реализации которого ты ничего не знаешь и который поступил от сторонних людей. Ты его как модуль подключаешь и у тебя всё работает. Тестируется датасервис легче пареной репы, какие могут быть с этим сложности? Причем тест будет одинаков для всех конкретных реализация IDataService (SqlDataService, XmlDataService, WcfDataService, ...). В программе у тебя могут быть n датасервисов, как я уже сказал выше: IDataService, IDataService2, IDataService3, ... IDataServiceN. Каждый сам по себе - black box.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094476
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУiConstСкладывается впечатление, что его основные оппоненты, в силу каких-то причин, более приближены к конкретной реализации. Отсюда и сыр-бор...
Потому что я практик , а не теоретик, как мой голословный оппонент, который даже не имеет опыта командной разработки :)

да вообще МСУ гуру-мастер. великий кодер. кроме того обладает телепатическими способностями и ясновидением, зная наперед кто каким опытом обладает.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094477
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttдетский сад.
... сказал мальчик с подгузниками на заднице.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094479
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttда вообще МСУ гуру-мастер. великий кодер. кроме того обладает телепатическими способностями и ясновидением, зная наперед кто каким опытом обладает.
Да, я такой, тут к гадалке не ходи. А за реализацию дублирующего репозитория я бы тебя уволил без выплаты выходного пособия. По статье "за тупость".
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094487
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДесятый раз говорю - конкретный датасервис уже в себя включает датасервис датаконтекст, считай это некий balck box (датасервис), о реализации которого ты ничего не знаешь
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094497
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt....
да вообще МСУ гуру-мастер. великий кодер. кроме того обладает телепатическими способностями и ясновидением, зная наперед кто каким опытом обладает.На деле, анализируя посты, можно вывести психологический портрет: способности, опыт и т.д. И чем больше постов ситуаций, тем детальней.

Возвращаясь к скорости, пруф, где?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094507
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

смешал мух с котлетами и наслаждаешься этой кашей. ты логику работы с данными типа ПолучитьТопПользователей(int сколько, int начиная_с_какого, bool сортировать_по_имени) суешь в дата-сервис.

у дата-сервиса есть по сути несколько методов (а точнее 5 базовых), это получить весь набор (в т.ч. отфильтрованный набор), элемент по ключу, обновить элемент(ы), удалить элемент(ы), добавить элемент(ы).

всё. это и есть весь дата сервис. остальное синтаксический сахар и/или методы для отдельных ресурсоёмких запросов.

дабы прекратить скатившийся в тупик спор. у вас, это не так. вы складываете все вместе и считаете это правильным. переписать 10-20% кода и получить новый, для вас это верх профессионализма в проектировании. не буду больше спорить.

мы работаем по-другому. нам достаточно сделать еще один (новый, отдельный, независимый) дата-сервис (xml, memory, mongo, dummy). это 5 методов. не 10%, не 20%. а 5 методов. и все 100% остального кода будут работать как часы. ну это у нас. поэтому кто как делает, его личное дело. ок?

на счет твоей личной проблемы с iqueryable. скажи. ты хоть раз реализовал этот интерфейс сам? только честно.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094514
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConsthVostt....
да вообще МСУ гуру-мастер. великий кодер. кроме того обладает телепатическими способностями и ясновидением, зная наперед кто каким опытом обладает.На деле, анализируя посты, можно вывести психологический портрет: способности, опыт и т.д. И чем больше постов ситуаций, тем детальней.

Возвращаясь к скорости, пруф, где?

скорости чего? разработки или скорости работы результата? или мы говорим про исследования китайских ученых с графиками или про личный опыт? уточните пожалуйста.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094518
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

13693276
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094519
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConsthVostt,

13693276

автор я это можно сделать

можно → могу, опечатка. какой пруф вы хотите? говорю лично за себя и свой личный опыт.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094530
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, смешал мух с котлетами и наслаждаешься этой кашей. ты логику работы с данными типа ПолучитьТопПользователей(int сколько, int начиная_с_какого, bool сортировать_по_имени) суешь в дата-сервис.
Чудила, у тебя котлеты в голове, а не я их смешал. Датасервис - это не логика, это взаимодействие с хранилищем данных. Ты не знаешь, куда приткнуть логику? Мы уже заметили - сначала ты ее пихал в контроллеры и говорил, что это куль (пока тебе по жопе не надавали плетью за этот бред), теперь ты логику приписываешь уже моим датасервисам. BL - это отдельный слой, не имеющий никакого отношения к контроллерам, датасервисам, репозиториям и представлениям. Садись, сегодня опять двойка.

hVosttу дата-сервиса есть по сути несколько методов (а точнее 5 базовых), это получить весь набор (в т.ч. отфильтрованный набор), элемент по ключу, обновить элемент(ы), удалить элемент(ы), добавить элемент(ы).
всё. это и есть весь дата сервис. остальное синтаксический сахар и/или методы для отдельных ресурсоёмких запросов.
Я не сомневался, что твои программы ограничиваются 5 методами. На что-то более отличное от "Здравствуй, Мир!" ты не способен.
К примеру, IDataService сайта http://codearticles.ru насчитывает порядка 30 методов, хотя сайт - простецкий, проще некуда. Плюс в том, что если мне потребуется поменять СУБД или отказаться от EF (например, в сторону NHibernate) - мне достаточно написать еще один датасервис и пристыковать его к приложению (в базовом контроллере). Всё, приложение встало на новые рельса. В твоем случае придется лопатить весь твой бесполезный многослойный код говна.

hVosttдабы прекратить скатившийся в тупик спор. у вас, это не так. вы складываете все вместе и считаете это правильным. переписать 10-20% кода и получить новый, для вас это верх профессионализма в проектировании. не буду больше спорить.
Странно с этим спорить, если я перепишу 10% кода, а ты 100%. Экономия ресурсов (я лучше их ориентирую на более важные задачи) на лицо.

hVosttмы работаем по-другому. нам достаточно сделать еще один (новый, отдельный, независимый) дата-сервис (xml, memory, mongo, dummy). это 5 методов. не 10%, не 20%. а 5 методов. и все 100% остального кода будут работать как часы. ну это у нас. поэтому кто как делает, его личное дело. ок?
Мужик, даже в самых тривиальных задачах я не встречал всего-лишь 5 методов :) Ну пусть будет так, если ты работаешь с такими задачами.

hVosttна счет твоей личной проблемы с iqueryable. скажи. ты хоть раз реализовал этот интерфейс сам? только честно.
Зачем мне самому реализовывать IQueryable? Не понял вопроса.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094532
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt....говорю лично за себя и свой личный опыт.А... Тогда не мешает прибавлять "ИМХО", а то выглядит как аксиома...
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094537
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttговорю лично за себя и свой личный опыт.
Весомо, очень весомо. Чтож, нам всем надо верить
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094542
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗачем мне самому реализовывать IQueryable? Не понял вопроса.

а у меня вопросов больше нет. надо было с этого и начинать. жуйте дальше свой ienumerable.

МСУК примеру, IDataService сайта http://codearticles.ru насчитывает порядка 30 методов, хотя сайт - простецкий, проще некуда. Плюс в том, что если мне потребуется поменять СУБД или отказаться от EF (например, в сторону NHibernate) - мне достаточно написать еще один датасервис и пристыковать его к приложению (в базовом контроллере). Всё, приложение встало на новые рельса. В твоем случае придется лопатить весь твой бесполезный многослойный код говна.

МСУ, вы идиот. перечитайте мой предыдущий пост. какой многослойный код говна? вы точно идиот.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094561
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВ большинстве случаев (а их 99%) достаточно ручной инстанциации экземпляра ( IProjectRepository ) - через конструктор базового контроллера. У тебя он отсутствует.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class BaseController : Controller
{
    public IDataService DataService { get; private set; }

    public BaseController()
    {
        this.DataService = new DataService.Sql.SqlDataService();
    }
}



В IDataService - только IEnumerable , никаких квери и еще что-либо.

Код: c#
1.
2.
3.
4.
5.
public class IDataService
{
    Category GetCategoryById(int id);
    IEnumerable<Category> GetCategories();
}

Ты точно уверен, что у тебя может быть несколько дата сервисов?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094562
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttа у меня вопросов больше нет. надо было с этого и начинать. жуйте дальше свой ienumerable.
Их жует весь мир и я вместе с ним. Что хотел спросить - непонятно, очевидно опять твой поток сознания изгрыгнул какой-то кал...

hVosttМСУ, вы идиот. перечитайте мой предыдущий пост. какой многослойный код говна? вы точно идиот.
hVostt, ты кретин. Обычный многослойный код говна - если у тебя проблемы с унылой памятью, то я напомню - речь о дублировании EF репозитория. Убей себя об стену.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094569
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТы точно уверен, что у тебя может быть несколько дата сервисов?
Точно.

IDataService
Код: c#
1.
2.
3.
4.
5.
public interface IDataService
{
    CategoryModel GetCategoryById(int id);
    IEnumerable<CategoryModel> GetCategories();
}



Код: 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.
public partial class SqlDataService: IDataService
{
    public string ConnectionString { get; set; }

    public SqlDataService(string connectionString)
    {
        this.ConnectionString = connectionString;
    }

    public virtual CategoryModel GetCategoryById(int id)
    {
        using (var ctx = new Northwind(ConnectionString))
        {
            var category = ctx.Categories.Include("Products").FirstOrDefault(d => d.CategoryID == id);
            var result = DataMapper.Map<CategoryModel>(category);
            result.Products = category.Products.Select(d => DataMapper.Map<ProductModel>(d));
            return result;
        }
    }

    public virtual IEnumerable<CategoryModel> GetCategories()
    {
        using (var ctx = new Northwind(ConnectionString))
        {
            var categories = ctx.Categories.ToList();
            return categories.Select(d => DataMapper.Map<CategoryModel>(d));
        }
    }
}

...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094573
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttна счет твоей личной проблемы с iqueryable. скажи. ты хоть раз реализовал этот интерфейс сам?
интересный оборот
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094585
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я надеюсь вы изучили код DotNetNuke, Orchard, Kooboo, N2, Ubraco, и других CMS на ASP.NET MVC дабы убедиться какие беспросветные кретины писали эти вещи, им всем надо срочно убить себя об стену, желательно с разбега, так как ни в одном из этих проектов не делают так как делаете вы, везде самостоятельные сервисы без наследования в архитектуре, и (о ужас) многослойный код с большой кучей интерфейсов, построенный на DI.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094597
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

я надеюсь вы изучили код DotNetNuke, Orchard, Kooboo, N2, Ubraco, и других CMS на ASP.NET MVC дабы убедиться какие беспросветные кретины писали эти вещи, им всем надо срочно убить себя об стену, желательно с разбега, так как ни в одном из этих проектов не делают так как делаете вы, везде самостоятельные сервисы без наследования в архитектуре, и (о ужас) многослойный код с большой кучей интерфейсов, построенный на DI.
Надеюсь ты изучил код и имеешь большой опыт разработки под такие платформенные решения, как MS SharePoint, MS Dynamics CRM и интеграционные шины на SSIS, BizTalk Server, которые реализуют контур между вспомогательными системами, такими как MS Dynamics Axapta, 1C и прочие системы, в т.ч. ERP, CRM, ECM и т.д. направлений. Студент, иди уроки делай, не маячь перед глазами со своими пукалками в виде CMS перделок. Кстати, по поводу DNN, имел продолжительный опыт работы с ним более двух лет еще в 2007 году.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094612
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

вай, какой молодец, выучил много умных слов. пирожок вот на полке... если дотянешься.

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

а пока вижу только пукание умными словами и ничего. да я, да у меня...
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094631
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, вай, какой молодец, выучил много умных слов. пирожок вот на полке... если дотянешься.
Эти умные слова тебя бы расплющили об пол своей тяжестью, кодеманка.

hVosttа по теме сказать нечего, да?
А по теме я давно уже всё сказал, остается дело за малым - попинать тугого ламера ради забавы и возрадоваться сему.

hVosttповторю для слабоумных. где ты видел и в каком проекте, где применяется такой же подход как у тебя? где? дай ссылку на гит, кодеплекс, битбакет, скачаю посмотрю на сорцы. увижу твой подход в большом и сложном решении, сложу оружие, выкину белый флаг, повешу твой портрет на стену, будем всей командой на тебя молиться каждый вечер.
Еще разок повторю для дегенератов, которые напрочь отказываются выходить из танка: 13693279
Этой "идее" сто лет в обед, это классика, которая закладывается в фундаментальные подходы MVP паттерна. Во всей его красе. Читай букварь .

hVosttа пока вижу только пукание умными словами и ничего. да я, да у меня...
По-моему это ты тут начал брызгать слюной по поводу CMS. Не приписывай свою дегенеративную особенность, выскочка.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094661
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

а я-то, дурак, думал мы говорим о MVC, а не о WebForms. да у вас, батенько, шизофрения в развитой стадии. какой ещо MVP? и что, что оно ложится в WebForms (ну хотя бы потому..... что webforms как раз и реализует паттерн MVP)

какие события в мире ASP.NET MVC? хватит уже пить и употреблять всякую дрянь :) большой и умный дяденька. и поправьте очки, а то они у вас кажется опять съехали.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094676
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В какую тему не сунься везде срач.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094681
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAТы точно уверен, что у тебя может быть несколько дата сервисов?
Точно.

+
IDataService
Код: c#
1.
2.
3.
4.
5.
public interface IDataService
{
    CategoryModel GetCategoryById(int id);
    IEnumerable<CategoryModel> GetCategories();
}



Код: 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.
public partial class SqlDataService: IDataService
{
    public string ConnectionString { get; set; }

    public SqlDataService(string connectionString)
    {
        this.ConnectionString = connectionString;
    }

    public virtual CategoryModel GetCategoryById(int id)
    {
        using (var ctx = new Northwind(ConnectionString))
        {
            var category = ctx.Categories.Include("Products").FirstOrDefault(d => d.CategoryID == id);
            var result = DataMapper.Map<CategoryModel>(category);
            result.Products = category.Products.Select(d => DataMapper.Map<ProductModel>(d));
            return result;
        }
    }

    public virtual IEnumerable<CategoryModel> GetCategories()
    {
        using (var ctx = new Northwind(ConnectionString))
        {
            var categories = ctx.Categories.ToList();
            return categories.Select(d => DataMapper.Map<CategoryModel>(d));
        }
    }
}


МСУВ программе у тебя могут быть n датасервисов, как я уже сказал выше: IDataService, IDataService2, IDataService3, ... IDataServiceN. Каждый сам по себе - black box.Так ты говоришь о нескольких реализациях одного интерфейса IDataService, или всё-таки о нескольких (N) интерфейсах?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094695
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, а я-то, дурак, думал мы говорим о MVC, а не о WebForms.
Точно дурак, потому что не понимаешь, что MVC и MVP можно спокойно использовать и в WebForms. ASP.NET MVC просто обязывает использовать контроллер, а WebForms никаких обязательств не накладывает. Вот и вся разница.

hVosttда у вас, батенько, шизофрения в развитой стадии. какой ещо MVP? и что, что оно ложится в WebForms (ну хотя бы потому..... что webforms как раз и реализует паттерн MVP)
Ты просто тугодум с острой нехваткой головного мозга - WebForms не реализует MVP, свадись, двойка. Я тебе и раньше говорил, что ты не умеешь его готовить, а оказывается ты еще и больной на голову.
Читай:

http://msdn.microsoft.com/ru-ru/magazine/ff955232.aspx Улучшение Web Forms с помощью шаблона MVP , Дино Эспозито (Dino Esposito)


Ну ты баран, ей богу

hVosttкакие события в мире ASP.NET MVC? хватит уже пить и употреблять всякую дрянь :) большой и умный дяденька. и поправьте очки, а то они у вас кажется опять съехали.
Тебе просто нечем понимать, вот в чем корень зла.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094707
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТак ты говоришь о нескольких реализациях одного интерфейса IDataService, или всё-таки о нескольких (N) интерфейсах?
Не поверишь, и о том и о том. Первое - для расширения приложения для работы с несколькими "провайдерами" и гибкого манипулирования источниками. Второе - для разнесения датасервисов по разным "областям" отвественности. Для простых приложений хватит за глаза первого варианат - одного интерфейса IDataService.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094710
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwebforms как раз и реализует паттерн MVP
Ну серьезно, таких балбесов нужно сразу под кат :) Жесть. Сходить за попкорном чтоль.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094711
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAТак ты говоришь о нескольких реализациях одного интерфейса IDataService, или всё-таки о нескольких (N) интерфейсах?
Не поверишь, и о том и о том. Первое - для расширения приложения для работы с несколькими "провайдерами" и гибкого манипулирования источниками. Второе - для разнесения датасервисов по разным "областям" отвественности. Для простых приложений хватит за глаза первого варианат - одного интерфейса IDataService.То есть для не простых приложений у тебя несколько базовых контроллеров?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094720
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

теперь вы в ряды кретинов записали весь майкрософт. какой по-вашему паттерн реализует чистый вебформс? вы потрудитесь найти больше информации по теме, кроме статьи достаточно умного дядьки экспозито, который черным-по-белому написал, что MVP для вебформс идеален, не задумывались — почему? хотя нет, когда вам. учитывая количество ваших постов на этом форуме, вам некогда развиваться, работать, читать и чего-то изучать, но есть время каждый день чтобы просрацца на форуме.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094740
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУASP.NET MVC просто обязывает использовать контроллер, а WebForms никаких обязательств не накладывает. Вот и вся разница.

Разница в том, что в WebForms используется page controller, а в MVC front controller.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094752
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТо есть для не простых приложений у тебя несколько базовых контроллеров?
Причем тут базовый контроллер? Речь о IDataService шла.

hVosttМСУ, теперь вы в ряды кретинов записали весь майкрософт. какой по-вашему паттерн реализует чистый вебформс?
В разрядах кретинов был ты и не вылазил оттуда. Ответ - никакой. WebForms ничего не может реализовывать, это платформа. Ты можешь хоть MVVM реализовать на этой плафторме. Ну ты дурень...

hVosttвы потрудитесь найти больше информации по теме, кроме статьи достаточно умного дядьки экспозито, который черным-по-белому написал, что MVP для вебформс идеален, не задумывались — почему? хотя нет, когда вам. учитывая количество ваших постов на этом форуме, вам некогда развиваться, работать, читать и чего-то изучать, но есть время каждый день чтобы просрацца на форуме.
Чудик, ты как считаешь, Дино Эспозито просто так посвятил время журналу MSDN Magazine, в котором начал описывать то, как сделать в WebForms подход MVP? Странно, зачем ему это понадобилось, если WebForms по твоим словам и так уже реализует MVP?

P.S. Либо ты унылый тролль, либо реально придурок. Уж прости, но читать твой бред становится весьма весело.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094758
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно, что МСУ привёл статью, где написано:Улучшение Web Forms с помощью шаблона 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.
public static class ApplicationController {
  private static INavigationWorkflow instance;
  private static object navigationArgument;

  public static void Register(
    INavigationWorkflow service) {
    if (service == null)
      throw new ArgumentNullException();
    instance = service;
  }

  public static void NavigateTo(string view) {
    if (instance == null)
      throw new InvalidOperationException();
    instance.NavigateTo(view);      
  }
 
  public static void NavigateTo(
    string view, object argument) { 
    if (instance == null)
      throw new InvalidOperationException();
    navigationArgument = argument;
    NavigateTo(view);
 }

 public static object Argument {
   get { return navigationArgument; }
 }
}

И где же базовый контроллер, где создаётся инстанс INavigationWorkflow?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094765
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонРазница в том, что в WebForms используется page controller, а в MVC front controller.
Правильно, но стратегия page controller - это не тоже самое, что MVP.

skyANAЗабавно, что МСУ привёл статью, где написано: ...
И где же базовый контроллер, где создаётся инстанс INavigationWorkflow?
А это не принципиально. Если ты был бы внимательным, я битый час объяснял, что лучше инстанциацию вынести в базовый контроллер, чем её размазывать в реализации самих контроллеров приложения.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094779
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОтвет - никакой. WebForms ничего не может реализовывать, это платформа.

свою голову включить я вам даже уже и не предлагаю. там просто нечего включать. «просто платформа»...
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094843
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я года два назад бросил следить за всякими MVC в туче реализаций и оговорок, потому что:
1. Ни один из паттернов не закрывает потребности на 100%.
2. Усмотрел следующее: любую поделку можно с этими оговорками пристегнуть к тому или иному "паттерну".

М$ взяла курс: нехай народ развлекается, изобретает, а мы подольем (или нет) масла в огонь. ИМХО, последнее куда были вложены деньги по-настоящему, это те самые вебформс. Ну, был, ессно, Сервелат и концептуальные вещи: WCF, например.

Однако, мое мнение, в Сервелат изначально вливались деньги, наперед предполагая, что он умрет. Цель - ослабить Флеш и продержаться (чтобы народ не сильно разбредался) до HTML5 - была достигнута. Все - армия свое дело сделала, можно списать и забыть (как 2-я ударная). Будет она воевать, не будет - неважно...

И сейчас, М$ держит нос по ветру - с минимальными (насколько можно) вложениями держать дотНет платформу в боеспособном (читай конъюнктурном) состоянии: Джава сильна, ЛАМПы всякие там кровь портят и т.п. Этакий паттерн (Полу)ОперСорса...
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094867
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConst ИМХО, последнее куда были вложены деньги по-настоящему, это те самые вебформс.
Выбрасывание денег на ветер, спустит любой капитал в итоге :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094874
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПарамонРазница в том, что в WebForms используется page controller, а в MVC front controller.
Правильно, но стратегия page controller - это не тоже самое, что MVP.

skyANAЗабавно, что МСУ привёл статью, где написано: ...
И где же базовый контроллер, где создаётся инстанс INavigationWorkflow?
А это не принципиально. Если ты был бы внимательным, я битый час объяснял, что лучше инстанциацию вынести в базовый контроллер, чем её размазывать в реализации самих контроллеров приложения.
Повторяю вопрос:skyANAТо есть для не простых приложений у тебя несколько базовых контроллеров?
Или N различных инстансов в базовом контроллере?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38094960
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУОтвет - никакой. WebForms ничего не может реализовывать, это платформа.
свою голову включить я вам даже уже и не предлагаю. там просто нечего включать. «просто платформа»...
Зачем мне какие-то левые предложения от какого-то левого ламера? Ну вот честно, на кой они мне?

skyANAПовторяю вопрос:skyANAТо есть для не простых приложений у тебя несколько базовых контроллеров?
Или N различных инстансов в базовом контроллере?
Нет, базовый контроллер всегда один. Ответ понятен?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095028
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, понятен: N различных инстансов в базовом контроллере.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095032
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAN различных инстансов в базовом контроллере.
Да, если они отличны своим интерфейсом-предком, т.е.: IDataService1, IDataService2, IDataService3.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095098
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, и смысл? Чисто чтобы всё в одном месте было?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095111
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, и смысл? Чисто чтобы всё в одном месте было?
Умничка - понадобилсоь 7 страниц топика
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095120
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, но зло на самом деле в другом - куй бы с ним, что ты размазываешь интерфейсы датасервисов по прикладным контроллерам, а потом ходишь с веником и инжектишь из через DI (или просто ручками инстанциируешь). Зло в дублировании EF репозитория, за это нужно расстреливать на месте. А за то, что "WebForms по дефолту реализует MVP" вообще нужно головой в помои определять. Ну про "REST - это архитектура" я как бы скромно умалчиваю, ибо это ничто по сравнению с вышесказанным. Как-то так.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095138
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Ресолвы обычно в одном месте прописываются, так что не понятно что ты имеешь ввиду под размыванием;
2. Инстансы IDataService1 - IDataServiceN используют один и тотже EF репозиторий у тебя, каким образом?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095148
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAпод размыванием размазыванием
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095151
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA1. Ресолвы обычно в одном месте прописываются, так что не понятно что ты имеешь ввиду под размыванием;
2. Инстансы IDataService1 - IDataServiceN используют один и тотже EF репозиторий у тебя, каким образом?
1. Глянь на эту срань 13687779
2. С чего ты взял что один и тот же EF репозиторий? IDataService1 использует EF подход. IDataService2 использует WCF подход. IDataService3 отвечает за поставку курсов валют и использует ASMX подход. И так далее.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095198
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANA1. Ресолвы обычно в одном месте прописываются, так что не понятно что ты имеешь ввиду под размыванием;
2. Инстансы IDataService1 - IDataServiceN используют один и тотже EF репозиторий у тебя, каким образом?
1. Глянь на эту срань 13687779
2. С чего ты взял что один и тот же EF репозиторий? IDataService1 использует EF подход. IDataService2 использует WCF подход. IDataService3 отвечает за поставку курсов валют и использует ASMX подход. И так далее.
А если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь.
Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095208
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, допустим мы пишем систему онлайн бронирования отелей и авиаперелётов.
а. Ты реализуешь IHotelService для поиска отелей, IAirflightService для поиска авиаперелётов и IBookingService для бронирования найденного набора услуг, или...
б. Ты реализуешь один IDataService для и для поиска отелей и перелётов, и для бронирования найденного набора услуг?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095228
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГлянь на эту срань 13687779

Там стандартный подход, рекомендуемый для TDD с использованием DI.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095274
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь.
Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3?
Конечно нет. Если меняется источник курсов, пишется новый сервис NewDataService, унаследованный от OldDataService (OldDataService: IDataService3) и правлю необходимые методы через override. Соотвественно, программа как работала с курсами по протоколу IDataService3, так и работает. Протокол менять нельзя, можно менять реализацию.

skyANAМСУ, допустим мы пишем систему онлайн бронирования отелей и авиаперелётов.
а. Ты реализуешь IHotelService для поиска отелей, IAirflightService для поиска авиаперелётов и IBookingService для бронирования найденного набора услуг, или...
б. Ты реализуешь один IDataService для и для поиска отелей и перелётов, и для бронирования найденного набора услуг?
Если работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД или несколькими БД одного сервера, то скорее всего я не буду разделяться на несколько сервисов и напишу один IDataService.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095281
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУГлянь на эту срань 13687779

Там стандартный подход, рекомендуемый для TDD с использованием DI.
У меня тоже стандартный подход, рекомендуемый для TDD с использованием DI - Asp.net MVC base controller with constructor injection and MEF
Очень удобно стыковать блоки, в т.ч. и через MEF.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095306
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
вот хотелось бы услышать твое мнение про размазанность и масштабируемость.
если хранить слой доступа в контексте запроса через расширения
при старте запроса открываем сессию при окончании диспозим.
доступ с любого места + верификация пользователя + верефикация по путям.
никакой размазанности все с одного места, в коде никакого исправления, беглый доступ.
если учесть что и править то сам контекст слоя.
Правда есть нюансы, но они исправимые.
Ну я надеюсь мысль понял?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095327
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAА если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь.
Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3?
Конечно нет. Если меняется источник курсов, пишется новый сервис NewDataService, унаследованный от OldDataService (OldDataService: IDataService3) и правлю необходимые методы через override. Соотвественно, программа как работала с курсами по протоколу IDataService3, так и работает. Протокол менять нельзя, можно менять реализацию.Старый инстанс IDataService1 и новый инстанс IDataService3 будут использовать один и тотже EF репозиторий?

МСУskyANAМСУ, допустим мы пишем систему онлайн бронирования отелей и авиаперелётов.
а. Ты реализуешь IHotelService для поиска отелей, IAirflightService для поиска авиаперелётов и IBookingService для бронирования найденного набора услуг, или...
б. Ты реализуешь один IDataService для и для поиска отелей и перелётов, и для бронирования найденного набора услуг?
Если работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД или несколькими БД одного сервера, то скорее всего я не буду разделяться на несколько сервисов и напишу один IDataService.Завтра тебе надо будет интегрироваться с различными мировыми системами поиска и бронирования, с системами партнёров и т.п. Причём одни предоставляют только поиск и бронирование отелей, другие только перелётов, третьи только прокат авто, четвёртые предоставляют всё что есть у тебя плюс ещё какие-нибудь экскурсии и трансферы, и что ты будешь делать?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095330
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ты будешь реализовывать IDataService для поставщика, предоставляющего только отели? Методы, что относятся к другим классам услуг, будут кидать NotImplementedException?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095357
78ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есл
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095428
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAА если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь.
Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3?
Конечно нет. Если меняется источник курсов, пишется новый сервис NewDataService, унаследованный от OldDataService (OldDataService: IDataService3) и правлю необходимые методы через override. Соотвественно, программа как работала с курсами по протоколу IDataService3, так и работает. Протокол менять нельзя, можно менять реализацию.

skyANAМСУ, допустим мы пишем систему онлайн бронирования отелей и авиаперелётов.
а. Ты реализуешь IHotelService для поиска отелей, IAirflightService для поиска авиаперелётов и IBookingService для бронирования найденного набора услуг, или...
б. Ты реализуешь один IDataService для и для поиска отелей и перелётов, и для бронирования найденного набора услуг?
Если работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД или несколькими БД одного сервера, то скорее всего я не буду разделяться на несколько сервисов и напишу один IDataService.

Про принцип единичной ответственности эта чурка даже не слышала.
Одна из причин для чего нужны обобщенные контроллеры - это, если вдруг на проекте попадется такое ...(не буду уточнять), то будет возможность держать его на коротком поводке, чтобы он кизяками все вокруг не закидал.

Что вы с ним этот идиотизм обсуждаете? У него никогда не было этих контроллеров и не будет, чисто теоретический бред.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38095837
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиНу я надеюсь мысль понял?
Да, более того, так нужно делать в случае с HNibernate, там очень дорого стоит инициализация фабрики. Но не в сессию, а в кеш или статику.

skyANAСтарый инстанс IDataService1 и новый инстанс IDataService3 будут использовать один и тотже EF репозиторий?
Не обязательно. Но лучше под один (или несколько) EF контекстов делать IDataService, а не наоборот. Хотя никто не запрещает, конечно.

skyANAЗавтра тебе надо будет интегрироваться с различными мировыми системами поиска и бронирования, с системами партнёров и т.п. Причём одни предоставляют только поиск и бронирование отелей, другие только перелётов, третьи только прокат авто, четвёртые предоставляют всё что есть у тебя плюс ещё какие-нибудь экскурсии и трансферы, и что ты будешь делать?
Отлично, я пишу новый NewDataService, унаследованный от того же IDataService или от предыдущего OldDataService (который так же наследуется от IDataService). В моем NewDataService закладывается интеграция различными мировыми системами поиска и бронирования, с системами партнёров и т.п. NewDataService так же легко стыкуется с моим приложением, которое умеет работать с IDataService. Вся черная работа лежит в black box - в NewDataService.

skyANAКак ты будешь реализовывать IDataService для поставщика, предоставляющего только отели? Методы, что относятся к другим классам услуг, будут кидать NotImplementedException?
Не понял тебя. IDataService работает не только с отелями, а объединяет в себе работу как с отелями, так и с бронированием и прочим. В чем проблема-то? Если ты разносишь работу на несколько зон отвественности (IDataService1, IDataService2, IDataService3), значит твое приложение умеет работать только с этими зонами. Отстыкуй любой блок и пристыкуй новый (был OldDataService2, стал NewDataService2) - и всё у тебя будет роаботать.

SeVaПро принцип единичной ответственности эта чурка даже не слышала.
Одна из причин для чего нужны обобщенные контроллеры - это, если вдруг на проекте попадется такое ...(не буду уточнять), то будет возможность держать его на коротком поводке, чтобы он кизяками все вокруг не закидал.
Принцип единичной ответственности как-раз реализует датасервис, просто скудность твоего больного воображения не позволяет понять это. Неуч, ASP.NET MVC не умеет работать с обобщенными контроллерами, все остальные жалкие потуги скрестить ужа с удавом приводят к гавнокоду, который никому не нужен.

SeVaЧто вы с ним этот идиотизм обсуждаете? У него никогда не было этих контроллеров и не будет, чисто теоретический бред.
Учи матчасть, бестолочь.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096046
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, главный плюс такого подхода в легкости управления проектом.
1. Вот я беру и на аутсорс тебе выношу задачу - написать слой, который будет работать с отелями, перелетами и бронированиями через какие-то там внешние сервисы.
2. Отправляю тебе только DLL с требуемым IDataService и классами-болванками для резултатов методов IDataService. Всё. Тебе ничего не надо знать о моем приложении, ты просто решаешь свою задачу независимо.
3. Я продолжаю дальше разработку по проекту, вкорячив фейковую реализацию IDataService.
4. При приемке решения от тебя я выкидываю свой фейковый датасервис и вставляю твой - отлично, моё приложение теперь интегрировано с мировыми отелями, перелетами и бронированиями.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096058
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAСтарый инстанс IDataService1 и новый инстанс IDataService3 будут использовать один и тотже EF репозиторий?
Не обязательно. То есть разные сервисы используют разные EF репозитории? Или когда тебе хочется, то ты используешь один EF репозиторий в разных сервисах? Тогда покажи как ты это делаешь.
МСУНо лучше под один (или несколько) EF контекстов делать IDataService, а не наоборот.Сам себе противоречишь:МСУskyANAА если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь.
Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3?
Конечно нет.

МСУskyANAЗавтра тебе надо будет интегрироваться с различными мировыми системами поиска и бронирования, с системами партнёров и т.п. Причём одни предоставляют только поиск и бронирование отелей, другие только перелётов, третьи только прокат авто, четвёртые предоставляют всё что есть у тебя плюс ещё какие-нибудь экскурсии и трансферы, и что ты будешь делать?
Отлично, я пишу новый NewDataService, унаследованный от того же IDataService или от предыдущего OldDataService (который так же наследуется от IDataService). В моем NewDataService закладывается интеграция различными мировыми системами поиска и бронирования, с системами партнёров и т.п. NewDataService так же легко стыкуется с моим приложением, которое умеет работать с IDataService. Вся черная работа лежит в black box - в NewDataService.

skyANAКак ты будешь реализовывать IDataService для поставщика, предоставляющего только отели? Методы, что относятся к другим классам услуг, будут кидать NotImplementedException?
Не понял тебя. IDataService работает не только с отелями, а объединяет в себе работу как с отелями, так и с бронированием и прочим. В чем проблема-то? Если ты разносишь работу на несколько зон отвественности (IDataService1, IDataService2, IDataService3), значит твое приложение умеет работать только с этими зонами. Отстыкуй любой блок и пристыкуй новый (был OldDataService2, стал NewDataService2) - и всё у тебя будет роаботать.Хорошо, пойдём с другой стороны :)
Есть поставщики, что предоставляют функционал поиска и бронирования только авиаперелётов: IAirflightService.
Есть поставщики только отелей: IHotelService.
Есть поставщики только трансфер: ITransferService.
И твой NewDataService круто с ними работает, вернее тупо пробрасывает запросы им.

То есть в твоей системе есть и IAirflightService, и IHotelService, и ITransferService, и IDataService.
Заметь кстати, что OldDataService, что работает с твоей БД, теперь обязан каким-то образом реализовать поиск и бронирование трансферов, которых нет в твоей системе
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096065
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕсть поставщики, что предоставляют функционал поиска и бронирования только авиаперелётов: IAirflightService.
Есть поставщики только отелей: IHotelService.
Есть поставщики только трансфер: ITransferService.
И твой NewDataService круто с ними работает, вернее тупо пробрасывает запросы им.

Стоп, уже ошибка. Как это мой NewDataService может с ними рабоать? Если ты разбросал ответсвенность на 3 части, значит у нас будут 3 датасервиса:
Код: c#
1.
2.
3.
SuperAirflightService: IAirflightService
SuperHotelService: IHotelService
SuperTransferService: ITransferService



skyANAТо есть в твоей системе есть и IAirflightService, и IHotelService, и ITransferService, и IDataService.
Нет, см. выше. Откуда IDataService и зачем он в данной задаче?

skyANAЗаметь кстати, что OldDataService, что работает с твоей БД, теперь обязан каким-то образом реализовать поиск и бронирование трансферов, которых нет в твоей системе
Чё
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096076
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANA, главный плюс такого подхода в легкости управления проектом.
1. Вот я беру и на аутсорс тебе выношу задачу - написать слой, который будет работать с отелями, перелетами и бронированиями через какие-то там внешние сервисы.
2. Отправляю тебе только DLL с требуемым IDataService и классами-болванками для резултатов методов IDataService. Всё. Тебе ничего не надо знать о моем приложении, ты просто решаешь свою задачу независимо.
3. Я продолжаю дальше разработку по проекту, вкорячив фейковую реализацию IDataService.
4. При приемке решения от тебя я выкидываю свой фейковый датасервис и вставляю твой - отлично, моё приложение теперь интегрировано с мировыми отелями, перелетами и бронированиями.В реальности ты такое не сможешь сделать.
С мировыми отелями, перелетами и бронированиями нужно будет заключить контракт, чтобы интегрироваться.
Хотел бы я посмотреть как ты это сделаешь одновременно.

В реальности поставщики подключаются отдельно. То есть по мере необходимости подключения всё новых поставщиков, тебе придётся допиливать сервис, компилировать, тестировать. В особенности это будет весело, при подключение поставщиков услуг, которых у тебя раньше не было.

По мне так проще реализовать конкретный IAirflightService, или набор сервисов, протестировать их и подключить в систему.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096087
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, ну то есть мы пришли к тому, что в системе должны быть отдельные сервисы: IAirflightService, IHotelService, - так?
Не смотря на то, что в начале работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096249
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВ реальности ты такое не сможешь сделать.
С мировыми отелями, перелетами и бронированиями нужно будет заключить контракт, чтобы интегрироваться.
Хотел бы я посмотреть как ты это сделаешь одновременно.
Это не мои проблемы, а заказчика ПО - пусть договариается, покупает лицензии, заключает контракты. Главное, что инфраструктурно и логически у меня не будет ниаких проблем переключиться на другие источники, хранилища и сервисы. И пусть не одновременно, а поочереди - не суть, у меня всё будет работать так же бесперебойно как и раньше.

skyANAВ реальности поставщики подключаются отдельно. То есть по мере необходимости подключения всё новых поставщиков, тебе придётся допиливать сервис, компилировать, тестировать. В особенности это будет весело, при подключение поставщиков услуг, которых у тебя раньше не было.
Допиливать не придется, это будет новый датасервис с новым источником. Причем, если большая часть его реализации совпадает со старым, достаточно будет просто от него отнаследоваться. Если вдруг потребуется вернуться к начальному датасервису, я всегда смогу это сделать.

skyANAПо мне так проще реализовать конкретный IAirflightService, или набор сервисов, протестировать их и подключить в систему.
Я тебе не понимаю. А у меня что, не так? Либо пихай всё в один ISuperService, либо разноси на несколько. От перемены мест стлагаемых сумма не изменяется. В чем проблема-то?

skyANAМСУ, ну то есть мы пришли к тому, что в системе должны быть отдельные сервисы: IAirflightService, IHotelService, - так?
Мы к этому не приходили. Я с самого начала сказал, что может быть один общий датасервис, либо несколько, о которых ты пишешь. Принципиальной разницы тут нет.

skyANAНе смотря на то, что в начале работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД?
Тоже уже отвечал на эту тему - ограничений никаких нет. Определяй зоны ответственности по усмотрению, главное архитектурный принцип стыковки слоёв не нарушается.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096272
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAВ реальности ты такое не сможешь сделать.
С мировыми отелями, перелетами и бронированиями нужно будет заключить контракт, чтобы интегрироваться.
Хотел бы я посмотреть как ты это сделаешь одновременно.
Это не мои проблемы, а заказчика ПО - пусть договариается, покупает лицензии, заключает контракты. Главное, что инфраструктурно и логически у меня не будет ниаких проблем переключиться на другие источники, хранилища и сервисы. И пусть не одновременно, а поочереди - не суть, у меня всё будет работать так же бесперебойно как и раньше.

skyANAВ реальности поставщики подключаются отдельно. То есть по мере необходимости подключения всё новых поставщиков, тебе придётся допиливать сервис, компилировать, тестировать. В особенности это будет весело, при подключение поставщиков услуг, которых у тебя раньше не было.
Допиливать не придется, это будет новый датасервис с новым источником. Причем, если большая часть его реализации совпадает со старым, достаточно будет просто от него отнаследоваться. Если вдруг потребуется вернуться к начальному датасервису, я всегда смогу это сделать.

skyANAПо мне так проще реализовать конкретный IAirflightService, или набор сервисов, протестировать их и подключить в систему.
Я тебе не понимаю. А у меня что, не так? Либо пихай всё в один ISuperService, либо разноси на несколько. От перемены мест стлагаемых сумма не изменяется. В чем проблема-то?

skyANAМСУ, ну то есть мы пришли к тому, что в системе должны быть отдельные сервисы: IAirflightService, IHotelService, - так?
Мы к этому не приходили. Я с самого начала сказал, что может быть один общий датасервис, либо несколько, о которых ты пишешь. Принципиальной разницы тут нет.

skyANAНе смотря на то, что в начале работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД?
Тоже уже отвечал на эту тему - ограничений никаких нет. Определяй зоны ответственности по усмотрению, главное архитектурный принцип стыковки слоёв не нарушается.Бла-бла-бла, ни читать, ни думать ты не хочешь
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096279
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, ещё раз.
Изначально у тебя своя система (со своей БД), что позволяет искать и бронировать отели и перелёты.
Ты предложил сделать один сервис:
Код: c#
1.
2.
3.
4.
5.
6.
public interface IDataService
{
    IEnumerable<Airflight> Find(AirflightCondition condition);

    IEnumerable<HotelAccommodation> Find(HotelAccommodationCondition condition);
}

Так?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096336
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAБла-бла-бла, ни читать, ни думать ты не хочешь
Тебе просто понимать не чем, вот и приходится бла-бла-бла. Кодеманка, куле :)

skyANAТак?
Верно мыслишь, человече.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096343
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAТак?
Верно мыслишь, человече.Круто. Приходит время интеграции: заказчик говорит, что нужно подключить поставщика отелей Travko, через их XML API.
Что ты делаешь, о гуру-архитектор? NewDataService : OldDataService и новый IHotelService и его реализацию для Travko?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096353
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Верно мыслишь, человече.Круто. Приходит время интеграции: заказчик говорит, что нужно подключить поставщика отелей Travko, через их XML API.
Что ты делаешь, о гуру-архитектор? NewDataService : OldDataService и новый IHotelService и его реализацию для Travko?
Ты прикидываешься идиотом или им и являешься? Я 100500 раз повторил, что:

1. Изначально был и работал OldDataService: IDataService, приложение понимает только IDataService и ничего кроме
2. Теперь стал NewDataService : OldDataService с каким-то там изменениями

Откуда тут IHotelService, ты с дуба упал? Никаких левых интерфейсов наше приложение не понимает, только IDataService. Следовательно, делаем наш новый NewDataService и подключаем к приложению.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096378
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, приложение у тебя как работало с IDataService так и продолжает с ним работать.
Как ты реализуешь работу с Travko?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096386
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, приложение у тебя как работало с IDataService так и продолжает с ним работать.
Правильно, как было 50 методов у IDataService, так и осталось.

skyANAКак ты реализуешь работу с Travko?
Правильно, 45 методов остались без измеения, в реализации 5-и методов мы произвели изменения. Сингатура осталась без изменения, всё работает как и раньше.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096387
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть теперь поиск проживания в отеле должен вестись и в твоей системе, и в подключённом поставщике Travko.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096395
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТо есть теперь поиск проживания в отеле должен вестись и в твоей системе, и в подключённом поставщике Travko.
Как напишешь, так и будет.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public interface IDataService
{
    IEnumerable<Airflight> Find(AirflightCondition condition);
}

public class AirflightCondition
{
    public string ID { get; set; }
    public string Title { get; set; }
    public DateTime? Date { get; set; }

    public AirflightProvider Provider { get; set; }
}

public enum AirflightProvider
{
    Default,
    Travko
}



Ты тупить долго будешь?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096412
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, тупишь ты, я разбираю твой подход.
Реализация метода Find() для поиска в твоей системе как я понимаю юзает EF репозиторий.
Как ты засунешь туда работу с XML API Travko?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096440
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, тупишь ты, я разбираю твой подход.
Я 100500 раз тебе разжевываю элементарные вещи, но ты упорно сидишь в танке с запертым люком. И я еще туплю?

skyANAРеализация метода Find() для поиска в твоей системе как я понимаю юзает EF репозиторий.
Как ты засунешь туда работу с XML API Travko?
Жесть, ты просто обмороженная кодеманка, скианыч... :(

NewDataService
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class NewDataService : OldDataService
{
    public IEnumerable<Airflight> Find(AirflightCondition condition)
    {
        switch (condition.Provider)
        {
            case AirflightProvider.Travko: 
                return FindByTravko(condition);
            default: 
                return FindByDefault(condition); ;
        }
    }

    private IEnumerable<Airflight> FindByDefault(AirflightCondition condition)
    {
        // use EF
    }

    private IEnumerable<Airflight> FindByTravko(AirflightCondition condition)
    {
        // use SOA
    }
}



Так же можно пойти универсальным путем - придумать такой механизм, который бы в БД описывал схемы подключения поставщиков (через БД и через SOA), тогда мы обошлись бы единственным универсальным методом, который по настройкам из нашей базы обращался к нужному поставщику через определенный механизм. Если у тебя пара поставщиков и в ближайшем будущем их количество врядли изменится, подойдет способ в лоб. Если у тебя каждый месяц по новому поставщику, дешевле делать универсальный механизм, чтобы не переписывать все-время свой датасервис.
Опять же, это уже второй вопрос. Главное, что наше приложение общается с датасервисом по определенному заранее протоколу - IDataService.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096459
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скиана, можно и так, сути не меняет

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public IEnumerable<Airflight> Find(AirflightCondition condition)
{
    switch (condition.Provider)
    {
        case AirflightProvider.Travko:
            return DefaultSearcher.Find(condition);
        default:
            return TravkoSearcher.Find(condition);
    }
}



За реализацию TravkoSearcher ты отвечаешь, т.к. я нанял тебя как стороннего специалиста и ты по удаленке написал мне решение. При этом ты ничего не знаешь о моем приложении, я просто пристыковал результат твоей плодотворной деятельности.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096466
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скиана, пойми простую вещь: с меня - все сигнатуры в отдельной DLL, с тебя реализация. Как тупая code monkey, ты не должна знать о том, что я делаю, как я делаю и зачем я делаю. Ты бездумно выполняешь свою работу, а я проплачиваю тебе деньги. Ничего личного, только бизнес (с)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096525
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot МСУ]Скиана, можно и так, сути не меняет

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public IEnumerable<Airflight> Find(AirflightCondition condition)
{
    switch (condition.Provider)
    {
        case AirflightProvider.Travko:
            return DefaultSearcher.Find(condition);
        default:
            return TravkoSearcher.Find(condition);
    }
}



как то это switch напрашивается на замену (типа фабрики ?) - что, при необходимости подключения еще 10 провайдеров надо расширять этот switch и переписывать AirflightCondition ?
хрупкое решение - изменение в поставщике требует перекомпиляцию проекта.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096535
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, а теперь моя реализация:
1. Считаем что наша система для нашего приложения - это такой же поставщик услуг, что и остальные;
2. То есть изначально мы пишем реализацию поиска в своей системе:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public interface IHotelService
{
    IEnumerable<HotelAccommodation> Find(HotelAccommodationCondition condition);
}

public class DefaultHotelService : IHotelService
{
    public IEnumerable<HotelAccommodation> Find(HotelAccommodationCondition condition)
    {
        // тут собственно реализация
    }
}


3. Пишем реализацию IHotelService для приложения, где в методе Find() пробегаемся по всем зарегистрированным сервисам от поставщиков, что реализуют опять же IHotelService и передаём запрос пользователя им;
4. Собираем соответсвенно ответы и отдаём пользователю.

При подключении нового поставщика, мы тупо пишем реализацию для поставщика (или отдаём это на аутсорс), регистрируем поставщика в приложении и всё!
Никаких 5 методов из 50 вообще переписывать не надо, никаких NewDataService не надо!

Гораздо гибче, чем у тебя с твоим switch в методе Find() и постоянным переписыванием IDataService.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096537
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причём MVC приложение может работать как во твоему принципу, так и через инъекции конкретного сервиса в конкретный контроллер
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096552
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСкиана, можно и так, сути не меняет

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public IEnumerable<Airflight> Find(AirflightCondition condition)
{
    switch (condition.Provider)
    {
        case AirflightProvider.Travko:
            return DefaultSearcher.Find(condition);
        default:
            return TravkoSearcher.Find(condition);
    }
}



За реализацию TravkoSearcher ты отвечаешь, т.к. я нанял тебя как стороннего специалиста и ты по удаленке написал мне решение. При этом ты ничего не знаешь о моем приложении, я просто пристыковал результат твоей плодотворной деятельности.Смотрите-ка, ты по тихому добавил некий IHotelSearcher. А я тебе намекал на то, что он появится.
И какой на фиг return внутри case? Нужно по всем поставщикам искать. Но это уже молочь.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096555
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
я бы ушел еще ниже по коду.
1 вы работаете с отелями на мапах - объект.
2 вы выбираете их через linq
делаем расширение на ling ну типа GetCore<T>.Where(.........
типы объектов маркируем атрибутами, откуда тащить это объект
а в расширении просто подтягиваем из разных баз, никаких I, и вам вообще до фонаря где лежит это О..
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096567
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, типы объектов - это классы Airflight, Excursion, Hotel, Transfer и т.п.?
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096577
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
ну и что, пометь их атрибутами откуда тащить объекты этого типа, и тащи в расширении, а снаружи будет складываться ощущение
что они лежать все в одном месте.. , тут если добавится новый тип или хранилище( атрибут), вообще можно обойтись без пере компиляции кода.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096640
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
светлое будущее - не наступило. правда там, где деньги. Ничего личного. Всё дерьмо, кроме пчёл, хотя и пчёлы - дерьмо.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096718
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUкак то это switch напрашивается на замену (типа фабрики ?) - что, при необходимости подключения еще 10 провайдеров надо расширять этот switch и переписывать AirflightCondition ?
А это не принципиально уже, хочешь отвязаться от AirflightCondition, кури просто строковый параметр ProviderName, по нему из конфигурации (БД, XML, конфиги и т.д.) вытягивай провайдера и запрашивай через него IEnumerable<Airflight>.

monstrUхрупкое решение - изменение в поставщике требует перекомпиляцию проекта.
Не хрупкое, идет речь о принципе ответственности, а не о том, как гибко одной ложкой зачерпнуть все провайдеры. По-быстрому - через AirflightCondition, по-уму - описать все провайдеры и способ доступа к ним в конфиге.

skyANAМСУ, а теперь моя реализация ...
При подключении нового поставщика, мы тупо пишем реализацию для поставщика (или отдаём это на аутсорс), регистрируем поставщика в приложении и всё!
Никаких 5 методов из 50 вообще переписывать не надо, никаких NewDataService не надо!
Те же яйца только с боку. Выше я описал примерно такой же способ.

skyANAГораздо гибче, чем у тебя с твоим switch в методе Find() и постоянным переписыванием IDataService.
Ты не зришь в корень, switch - не панацея, это решение в лоб. Если нужно динамически подлить все провайдеры, ты их подгружаешь (регистрация) в том же IDataService. Речь не о том, как красиво собрать все провайдеры :)

skyANAПричём MVC приложение может работать как во твоему принципу, так и через инъекции конкретного сервиса в конкретный контроллер
В топку инъекции конкретного сервиса в конкретный контроллер, пусть инстансами управляет базовый.

skyANAСмотрите-ка, ты по тихому добавил некий IHotelSearcher. А я тебе намекал на то, что он появится.
Не суть, ты мне главное верни IEnumerable<Airflight>, а я сам разберусь, как его компактнее упаковать и зарегистрировать.

skyANAИ какой на фиг return внутри case? Нужно по всем поставщикам искать. Но это уже молочь.
Гы, добавь в енум AirflightProvider флажок All и ищи по всем :)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096770
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУmonstrUкак то это switch напрашивается на замену (типа фабрики ?) - что, при необходимости подключения еще 10 провайдеров надо расширять этот switch и переписывать AirflightCondition ?
А это не принципиально уже, хочешь отвязаться от AirflightCondition, кури просто строковый параметр ProviderName, по нему из конфигурации (БД, XML, конфиги и т.д.) вытягивай провайдера и запрашивай через него IEnumerable<Airflight>.

monstrUхрупкое решение - изменение в поставщике требует перекомпиляцию проекта.
Не хрупкое, идет речь о принципе ответственности, а не о том, как гибко одной ложкой зачерпнуть все провайдеры. По-быстрому - через AirflightCondition, по-уму - описать все провайдеры и способ доступа к ним в конфиге.

skyANAМСУ, а теперь моя реализация ...
При подключении нового поставщика, мы тупо пишем реализацию для поставщика (или отдаём это на аутсорс), регистрируем поставщика в приложении и всё!
Никаких 5 методов из 50 вообще переписывать не надо, никаких NewDataService не надо!
Те же яйца только с боку. Выше я описал примерно такой же способ.

skyANAГораздо гибче, чем у тебя с твоим switch в методе Find() и постоянным переписыванием IDataService.
Ты не зришь в корень, switch - не панацея, это решение в лоб. Если нужно динамически подлить все провайдеры, ты их подгружаешь (регистрация) в том же IDataService. Речь не о том, как красиво собрать все провайдеры :)

skyANAПричём MVC приложение может работать как во твоему принципу, так и через инъекции конкретного сервиса в конкретный контроллер
В топку инъекции конкретного сервиса в конкретный контроллер, пусть инстансами управляет базовый.

skyANAСмотрите-ка, ты по тихому добавил некий IHotelSearcher. А я тебе намекал на то, что он появится.
Не суть, ты мне главное верни IEnumerable<Airflight>, а я сам разберусь, как его компактнее упаковать и зарегистрировать.

skyANAИ какой на фиг return внутри case? Нужно по всем поставщикам искать. Но это уже молочь.
Гы, добавь в енум AirflightProvider флажок All и ищи по всем :)

Славная привычка к говнокоду дает о себе знать.
Засовываем все в кучу: под двадцать сервисов с 10-20 методами в каждом , обвешиваем все это счастье атрибутами и кучей параметров из конфига. Это даже в канализации не поплывет, а сразу утонет. На пяти сервисах уже надорвешься.
Полный бред.

skyANA, пустое это занятие, что-то втолковать ему.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096777
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaСлавная привычка к говнокоду дает о себе знать.
Весьма странно слышать это от обезьяны-наколеночника.

SeVaЗасовываем все в кучу: под двадцать сервисов с 10-20 методами в каждом , обвешиваем все это счастье атрибутами и кучей параметров из конфига. Это даже в канализации не поплывет, а сразу утонет. На пяти сервисах уже надорвешься.
Полный бред.
Остается только понять, откуда тут взялись атрибуты, двадцать сервисов и что там у тебя за куча. Иди букварь читай про генерик контроллеры в MVC, балбес.

SeVaskyANA, пустое это занятие, что-то втолковать ему.
Иди зад чини от синяков в ветке про пул потоков.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096789
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaПро принцип единичной ответственности эта чурка даже не слышала.
Одна из причин для чего нужны обобщенные контроллеры - это, если вдруг на проекте попадется такое ...(не буду уточнять), то будет возможность держать его на коротком поводке, чтобы он кизяками все вокруг не закидал.
Принцип единичной ответственности как-раз реализует датасервис, просто скудность твоего больного воображения не позволяет понять это. Неуч, ASP.NET MVC не умеет работать с обобщенными контроллерами, все остальные жалкие потуги скрестить ужа с удавом приводят к гавнокоду, который никому не нужен.

SeVaЧто вы с ним этот идиотизм обсуждаете? У него никогда не было этих контроллеров и не будет, чисто теоретический бред.
Учи матчасть, бестолочь.

Учить матчать не буду советовать. Все равно ничего не поймешь.
1. В asp.net mvc все на интерфейсах с той же единичной ответственностью и можно безболезненно заменить любую часть.
Для этого достаточно переопределить ControllerFactory. тынц .
Реализация дубовая с switch, специально чтобы ты хотя бы что-то понял. В нормальном варианте необходимо использовать di контейнеры, но ты их не осилил и не осилишь.

2. Просто поражает твоя поразительная способность все воспринимать через одно место. Принцип единичной ответственности означает, что причина изменения класса может быть только одна, а не один тупой сервис на все случаи жизни.


Эти принципы выработаны теми, кто уже набил шишки и наелся дерьма, которое ты предлагаешь.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096791
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaСлавная привычка к говнокоду дает о себе знать.
Весьма странно слышать это от обезьяны-наколеночника.

SeVaЗасовываем все в кучу: под двадцать сервисов с 10-20 методами в каждом , обвешиваем все это счастье атрибутами и кучей параметров из конфига. Это даже в канализации не поплывет, а сразу утонет. На пяти сервисах уже надорвешься.
Полный бред.
Остается только понять, откуда тут взялись атрибуты, двадцать сервисов и что там у тебя за куча. Иди букварь читай про генерик контроллеры в MVC, балбес.

SeVaskyANA, пустое это занятие, что-то втолковать ему.
Иди зад чини от синяков в ветке про пул потоков.

У нас в проекте больше. ПОка ты в обработчиках ковырялся, а не один проект сделал на обобщенных классах.
С ними даже с такими как ты можно их делать, в срок и без дерьма, которое ты тут рисуешь
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096934
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попкорн кончился) закройте тему уже, пятница прошла!!!)
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096941
saiocsha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASP.net MVC 4 хорошая вещь и я рад что проект развивается, совсем другой подход к разработке , нежели у вебформах.И наконец то полная свобода в html верстке. Model-view-controller вполне законченный подход к созданию веб приложений. Здорово вообщем что есть MVC4
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096963
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaУчить матчать не буду советовать. Все равно ничего не поймешь.
А смысл понимать шизика-невростеника, который в своей жизни не написал ни одной программы?

SeVa1. В asp.net mvc все на интерфейсах с той же единичной ответственностью и можно безболезненно заменить любую часть.
Для этого достаточно переопределить ControllerFactory. тынц .
Твоя левая фабрика для MVC, как кобыле пятое колесо. Примерно тоже самое, что ты предлагал сделать генерик-контроллер. Кроме как шизофрении тут ничем не пахнет. Я сто раз уже говорил, хочешь централизованной инстанции объектов в контроллере (хоть ручная, хоть резолвинг, хоть через космос) - кури базовый контроллер и наследование. Пару строк внятного кода, не более. Но ты теоритик и тебе не понять.

SeVaРеализация дубовая с switch, специально чтобы ты хотя бы что-то понял. В нормальном варианте необходимо использовать di контейнеры, но ты их не осилил и не осилишь.
Если ты до сих пор в танке, то я ничем помочь не могу - 100500 раз сказал, что не принципиально - Можно и MEF туда воткнуть. switch там или DI - речь шла не о том, как красиво отрулить в методе несколькими поставщиками.

SeVa2. Просто поражает твоя поразительная способность все воспринимать через одно место. Принцип единичной ответственности означает, что причина изменения класса может быть только одна, а не один тупой сервис на все случаи жизни.
Обезьянка нагуглила новое модное слово и вставляет его во все форумы куда ни попадя? Занятно. Принцип единичной остветствености - у дасервиса, как отдельного слоя. Вся остальная его реализация как ты там внутри разрулишь - монопенисуальна.

SeVaЭти принципы выработаны теми, кто уже набил шишки и наелся дерьма, которое ты предлагаешь.
Эти принципы глупая мартышка нагуглила в википедиях и как попугай вставляет их куда ни попадя, в потоки, в генерик-контроллеры, в ASP.NET.

SeVaУ нас в проекте больше. ПОка ты в обработчиках ковырялся, а не один проект сделал на обобщенных классах.
С ними даже с такими как ты можно их делать, в срок и без дерьма, которое ты тут рисуешь
У тебя нет проектов, врунишка, мы это выяснили еще давно. С твоими скиллами только кур смешить, иди лучше увеличивай кол-во потоков в тредпуле.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38096975
saiocsha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ruby on rails - живёт и жить будет ASP.net mvc 4 тоже будит жить.. А переходить с веб форм на MVC4 - собственно не о чём спор. Из разряда а что лучше php или ruby on rails. Windows или linux....
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38097003
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saiocsha.И наконец то полная свобода в html верстке.
да уж.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38097006
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мудафаил, ты простой му**к и говнокодер, который с толстой задницей и кучей switch может быть и сможет сделать одну портянку на сотни методов, но это дерьмо быстро выкинут в помойку, когда пойдут изменения требований и начнется самое интересное.
И не тебе муфлону судить о том, что хорошо или плохо. Твое дело копать, если рискнут дать лопату.
...
Рейтинг: 0 / 0
Переход на MVC 4
    #38097021
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кухарка, ты просто унылое гавно-ушлёпище, которая с худым костлявым задом (от недостатка пищи) пытается что-то визжать на профорумах. В большей части твоих булькающих предложений проявляется полностью атрофированное больное воображение, которое не кореллирует с действительность. Вся фантастичность твоих потугов сводится в вбросу кала, который даже твой скромный мозг не сможет переварить.
...
Рейтинг: 0 / 0
223 сообщений из 223, показаны все 9 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переход на MVC 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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