Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANAА если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь. Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3? Конечно нет. Если меняется источник курсов, пишется новый сервис NewDataService, унаследованный от OldDataService (OldDataService: IDataService3) и правлю необходимые методы через override. Соотвественно, программа как работала с курсами по протоколу IDataService3, так и работает. Протокол менять нельзя, можно менять реализацию. skyANAМСУ, допустим мы пишем систему онлайн бронирования отелей и авиаперелётов. а. Ты реализуешь IHotelService для поиска отелей, IAirflightService для поиска авиаперелётов и IBookingService для бронирования найденного набора услуг, или... б. Ты реализуешь один IDataService для и для поиска отелей и перелётов, и для бронирования найденного набора услуг? Если работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД или несколькими БД одного сервера, то скорее всего я не буду разделяться на несколько сервисов и напишу один IDataService. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 17:30 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
ПарамонМСУГлянь на эту срань 13687779 Там стандартный подход, рекомендуемый для TDD с использованием DI. У меня тоже стандартный подход, рекомендуемый для TDD с использованием DI - Asp.net MVC base controller with constructor injection and MEF Очень удобно стыковать блоки, в т.ч. и через MEF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 17:35 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУ, вот хотелось бы услышать твое мнение про размазанность и масштабируемость. если хранить слой доступа в контексте запроса через расширения при старте запроса открываем сессию при окончании диспозим. доступ с любого места + верификация пользователя + верефикация по путям. никакой размазанности все с одного места, в коде никакого исправления, беглый доступ. если учесть что и править то сам контекст слоя. Правда есть нюансы, но они исправимые. Ну я надеюсь мысль понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 17:56 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУskyANAА если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь. Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3? Конечно нет. Если меняется источник курсов, пишется новый сервис NewDataService, унаследованный от OldDataService (OldDataService: IDataService3) и правлю необходимые методы через override. Соотвественно, программа как работала с курсами по протоколу IDataService3, так и работает. Протокол менять нельзя, можно менять реализацию.Старый инстанс IDataService1 и новый инстанс IDataService3 будут использовать один и тотже EF репозиторий? МСУskyANAМСУ, допустим мы пишем систему онлайн бронирования отелей и авиаперелётов. а. Ты реализуешь IHotelService для поиска отелей, IAirflightService для поиска авиаперелётов и IBookingService для бронирования найденного набора услуг, или... б. Ты реализуешь один IDataService для и для поиска отелей и перелётов, и для бронирования найденного набора услуг? Если работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД или несколькими БД одного сервера, то скорее всего я не буду разделяться на несколько сервисов и напишу один IDataService.Завтра тебе надо будет интегрироваться с различными мировыми системами поиска и бронирования, с системами партнёров и т.п. Причём одни предоставляют только поиск и бронирование отелей, другие только перелётов, третьи только прокат авто, четвёртые предоставляют всё что есть у тебя плюс ещё какие-нибудь экскурсии и трансферы, и что ты будешь делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 18:17 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
Как ты будешь реализовывать IDataService для поставщика, предоставляющего только отели? Методы, что относятся к другим классам услуг, будут кидать NotImplementedException? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 18:19 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУskyANAА если ты курсы валют начал брать из своей БД, то ты методы IDataService3 добавляешь в IDataService1, реализуешь. Везде в коде заменяешь обращение к первому на обращение к последнему и выкидываешь IDataService3? Конечно нет. Если меняется источник курсов, пишется новый сервис NewDataService, унаследованный от OldDataService (OldDataService: IDataService3) и правлю необходимые методы через override. Соотвественно, программа как работала с курсами по протоколу IDataService3, так и работает. Протокол менять нельзя, можно менять реализацию. skyANAМСУ, допустим мы пишем систему онлайн бронирования отелей и авиаперелётов. а. Ты реализуешь IHotelService для поиска отелей, IAirflightService для поиска авиаперелётов и IBookingService для бронирования найденного набора услуг, или... б. Ты реализуешь один IDataService для и для поиска отелей и перелётов, и для бронирования найденного набора услуг? Если работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД или несколькими БД одного сервера, то скорее всего я не буду разделяться на несколько сервисов и напишу один IDataService. Про принцип единичной ответственности эта чурка даже не слышала. Одна из причин для чего нужны обобщенные контроллеры - это, если вдруг на проекте попадется такое ...(не буду уточнять), то будет возможность держать его на коротком поводке, чтобы он кизяками все вокруг не закидал. Что вы с ним этот идиотизм обсуждаете? У него никогда не было этих контроллеров и не будет, чисто теоретический бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 20:06 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
Где-то в степиНу я надеюсь мысль понял? Да, более того, так нужно делать в случае с 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Что вы с ним этот идиотизм обсуждаете? У него никогда не было этих контроллеров и не будет, чисто теоретический бред. Учи матчасть, бестолочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 10:59 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANA, главный плюс такого подхода в легкости управления проектом. 1. Вот я беру и на аутсорс тебе выношу задачу - написать слой, который будет работать с отелями, перелетами и бронированиями через какие-то там внешние сервисы. 2. Отправляю тебе только DLL с требуемым IDataService и классами-болванками для резултатов методов IDataService. Всё. Тебе ничего не надо знать о моем приложении, ты просто решаешь свою задачу независимо. 3. Я продолжаю дальше разработку по проекту, вкорячив фейковую реализацию IDataService. 4. При приемке решения от тебя я выкидываю свой фейковый датасервис и вставляю твой - отлично, моё приложение теперь интегрировано с мировыми отелями, перелетами и бронированиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 12:49 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУ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, что работает с твоей БД, теперь обязан каким-то образом реализовать поиск и бронирование трансферов, которых нет в твоей системе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 12:56 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANAЕсть поставщики, что предоставляют функционал поиска и бронирования только авиаперелётов: IAirflightService. Есть поставщики только отелей: IHotelService. Есть поставщики только трансфер: ITransferService. И твой NewDataService круто с ними работает, вернее тупо пробрасывает запросы им. Стоп, уже ошибка. Как это мой NewDataService может с ними рабоать? Если ты разбросал ответсвенность на 3 части, значит у нас будут 3 датасервиса: Код: c# 1. 2. 3. skyANAТо есть в твоей системе есть и IAirflightService, и IHotelService, и ITransferService, и IDataService. Нет, см. выше. Откуда IDataService и зачем он в данной задаче? skyANAЗаметь кстати, что OldDataService, что работает с твоей БД, теперь обязан каким-то образом реализовать поиск и бронирование трансферов, которых нет в твоей системе Чё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 13:00 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУskyANA, главный плюс такого подхода в легкости управления проектом. 1. Вот я беру и на аутсорс тебе выношу задачу - написать слой, который будет работать с отелями, перелетами и бронированиями через какие-то там внешние сервисы. 2. Отправляю тебе только DLL с требуемым IDataService и классами-болванками для резултатов методов IDataService. Всё. Тебе ничего не надо знать о моем приложении, ты просто решаешь свою задачу независимо. 3. Я продолжаю дальше разработку по проекту, вкорячив фейковую реализацию IDataService. 4. При приемке решения от тебя я выкидываю свой фейковый датасервис и вставляю твой - отлично, моё приложение теперь интегрировано с мировыми отелями, перелетами и бронированиями.В реальности ты такое не сможешь сделать. С мировыми отелями, перелетами и бронированиями нужно будет заключить контракт, чтобы интегрироваться. Хотел бы я посмотреть как ты это сделаешь одновременно. В реальности поставщики подключаются отдельно. То есть по мере необходимости подключения всё новых поставщиков, тебе придётся допиливать сервис, компилировать, тестировать. В особенности это будет весело, при подключение поставщиков услуг, которых у тебя раньше не было. По мне так проще реализовать конкретный IAirflightService, или набор сервисов, протестировать их и подключить в систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 13:05 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУ, ну то есть мы пришли к тому, что в системе должны быть отдельные сервисы: IAirflightService, IHotelService, - так? Не смотря на то, что в начале работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 13:10 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANAВ реальности ты такое не сможешь сделать. С мировыми отелями, перелетами и бронированиями нужно будет заключить контракт, чтобы интегрироваться. Хотел бы я посмотреть как ты это сделаешь одновременно. Это не мои проблемы, а заказчика ПО - пусть договариается, покупает лицензии, заключает контракты. Главное, что инфраструктурно и логически у меня не будет ниаких проблем переключиться на другие источники, хранилища и сервисы. И пусть не одновременно, а поочереди - не суть, у меня всё будет работать так же бесперебойно как и раньше. skyANAВ реальности поставщики подключаются отдельно. То есть по мере необходимости подключения всё новых поставщиков, тебе придётся допиливать сервис, компилировать, тестировать. В особенности это будет весело, при подключение поставщиков услуг, которых у тебя раньше не было. Допиливать не придется, это будет новый датасервис с новым источником. Причем, если большая часть его реализации совпадает со старым, достаточно будет просто от него отнаследоваться. Если вдруг потребуется вернуться к начальному датасервису, я всегда смогу это сделать. skyANAПо мне так проще реализовать конкретный IAirflightService, или набор сервисов, протестировать их и подключить в систему. Я тебе не понимаю. А у меня что, не так? Либо пихай всё в один ISuperService, либо разноси на несколько. От перемены мест стлагаемых сумма не изменяется. В чем проблема-то? skyANAМСУ, ну то есть мы пришли к тому, что в системе должны быть отдельные сервисы: IAirflightService, IHotelService, - так? Мы к этому не приходили. Я с самого начала сказал, что может быть один общий датасервис, либо несколько, о которых ты пишешь. Принципиальной разницы тут нет. skyANAНе смотря на то, что в начале работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД? Тоже уже отвечал на эту тему - ограничений никаких нет. Определяй зоны ответственности по усмотрению, главное архитектурный принцип стыковки слоёв не нарушается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 15:03 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУskyANAВ реальности ты такое не сможешь сделать. С мировыми отелями, перелетами и бронированиями нужно будет заключить контракт, чтобы интегрироваться. Хотел бы я посмотреть как ты это сделаешь одновременно. Это не мои проблемы, а заказчика ПО - пусть договариается, покупает лицензии, заключает контракты. Главное, что инфраструктурно и логически у меня не будет ниаких проблем переключиться на другие источники, хранилища и сервисы. И пусть не одновременно, а поочереди - не суть, у меня всё будет работать так же бесперебойно как и раньше. skyANAВ реальности поставщики подключаются отдельно. То есть по мере необходимости подключения всё новых поставщиков, тебе придётся допиливать сервис, компилировать, тестировать. В особенности это будет весело, при подключение поставщиков услуг, которых у тебя раньше не было. Допиливать не придется, это будет новый датасервис с новым источником. Причем, если большая часть его реализации совпадает со старым, достаточно будет просто от него отнаследоваться. Если вдруг потребуется вернуться к начальному датасервису, я всегда смогу это сделать. skyANAПо мне так проще реализовать конкретный IAirflightService, или набор сервисов, протестировать их и подключить в систему. Я тебе не понимаю. А у меня что, не так? Либо пихай всё в один ISuperService, либо разноси на несколько. От перемены мест стлагаемых сумма не изменяется. В чем проблема-то? skyANAМСУ, ну то есть мы пришли к тому, что в системе должны быть отдельные сервисы: IAirflightService, IHotelService, - так? Мы к этому не приходили. Я с самого начала сказал, что может быть один общий датасервис, либо несколько, о которых ты пишешь. Принципиальной разницы тут нет. skyANAНе смотря на то, что в начале работа с отелями, перелетами и бронированиями ведется прозрачно и с одной БД? Тоже уже отвечал на эту тему - ограничений никаких нет. Определяй зоны ответственности по усмотрению, главное архитектурный принцип стыковки слоёв не нарушается.Бла-бла-бла, ни читать, ни думать ты не хочешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 15:14 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУ, ещё раз. Изначально у тебя своя система (со своей БД), что позволяет искать и бронировать отели и перелёты. Ты предложил сделать один сервис: Код: c# 1. 2. 3. 4. 5. 6. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 15:18 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANAБла-бла-бла, ни читать, ни думать ты не хочешь Тебе просто понимать не чем, вот и приходится бла-бла-бла. Кодеманка, куле :) skyANAТак? Верно мыслишь, человече. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 15:49 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУskyANAТак? Верно мыслишь, человече.Круто. Приходит время интеграции: заказчик говорит, что нужно подключить поставщика отелей Travko, через их XML API. Что ты делаешь, о гуру-архитектор? NewDataService : OldDataService и новый IHotelService и его реализацию для Travko? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 15:57 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANAМСУпропущено... Верно мыслишь, человече.Круто. Приходит время интеграции: заказчик говорит, что нужно подключить поставщика отелей Travko, через их XML API. Что ты делаешь, о гуру-архитектор? NewDataService : OldDataService и новый IHotelService и его реализацию для Travko? Ты прикидываешься идиотом или им и являешься? Я 100500 раз повторил, что: 1. Изначально был и работал OldDataService: IDataService, приложение понимает только IDataService и ничего кроме 2. Теперь стал NewDataService : OldDataService с каким-то там изменениями Откуда тут IHotelService, ты с дуба упал? Никаких левых интерфейсов наше приложение не понимает, только IDataService. Следовательно, делаем наш новый NewDataService и подключаем к приложению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:01 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
МСУ, приложение у тебя как работало с IDataService так и продолжает с ним работать. Как ты реализуешь работу с Travko? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:19 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, приложение у тебя как работало с IDataService так и продолжает с ним работать. Правильно, как было 50 методов у IDataService, так и осталось. skyANAКак ты реализуешь работу с Travko? Правильно, 45 методов остались без измеения, в реализации 5-и методов мы произвели изменения. Сингатура осталась без изменения, всё работает как и раньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:22 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
То есть теперь поиск проживания в отеле должен вестись и в твоей системе, и в подключённом поставщике Travko. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:23 |
|
||
|
Переход на MVC 4
|
|||
|---|---|---|---|
|
#18+
skyANAТо есть теперь поиск проживания в отеле должен вестись и в твоей системе, и в подключённом поставщике Travko. Как напишешь, так и будет. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Ты тупить долго будешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:28 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38096076&tid=1358916]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 478ms |

| 0 / 0 |
