|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
Добрый вечер, есть следующая задача: 1. Некий сервис, обрабатывающий данные 2. Данные для сервиса могут быть либо в MSSQL, либо в Oracle, либо в XML файле, либо в их неком сочетании (XML + MSSQL or XML + Oracle) Есть начал писать решение, которое состоит из следующий проектов: 1. DAL - там доступ к базе (пока это только MSSQL, доступ к XML не пробовал, доступ к ораклу - частично)через ентити фреймворк 2. BLL - там сервисы для веб морды + для рантайм сервиса 3. Рантайм сервис 4. Веб UI Несколько вопросов по этому безобразию: 1. Пока ентити фреймворк одинаково нормально работает и с MSSQL и с оракл. Натолкнусь ли я на какие-то особенности оракла, что мне придется доступ к этим базам разносить на разные проекты? Логики никакой в базе не предполагается, только таблицы для хранения 2. Есть ли что-нибудь стандартное для работы с XML файлами в качестве хранилища? Или надо делать что-то свое? Если таковое имеется, наверное есть смысл вынести все классы описывающие таблицы в отдельный проект (чтобы эти же классы использовать для доступа к нодам XML? 3. Как тут правильно конфигурить автомаппер? По логике, все мапы должны быть заданы при запуске верхнего приложения (веб морды или сервиса). Но конечное приложение не имеет ссылки на DAL (ни сервис, ни веб интерфейс), т.е. для установки маппинга между Domain Model and DTO Model придется в приложениях верхнего уровня добавлять ссылки на DAL в конечных приложениях, что не совсем правильно. Или сделать отдельный проект, который будет заниматься исключительно маппингом и для интерфейса и для веба? Поделитесь своими мыслями / опытом, заранее спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 00:17 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppy, 1. в целом нет, но 100% гарантии никто не даст. лучше быть готовым к возможным проблемам 2. хз, в .NET ворох разных способов работы с XML, никто не может знать, что конкретно тебе подойдёт на 100%, изучай, экспериментируй. 3. для автомаппера самый лучший способ конфигурирования — модульный (AutoMapper.Profile), плюс запомни раз и навсегда — никогда не используй статический маппинг, никогда. только через интерфейс IMapper. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 00:28 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppy, XML -- вообще не очень хороший выбор для хранения данных. вообще, зачем тебе XML? для каких целей? почему именно XML, а не JSON? просто интересно, чем обусловлен выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 00:29 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyИли сделать отдельный проект, который будет заниматься исключительно маппингом и для интерфейса и для веба? ни в коем случае, читай про AutoMapper.Profile ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 00:30 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
hVostt, Есть необходимость запускать приложение у разработчика с клиентскими данными и без развернутой базы. Соотвественно, вариант - у клиента нажать на кнопку и выгрузить все в какой-то формат, у разработчика - запустить сервис с этими данными (без базы). XML - не обязательное требование, можно поменять на JSON (ничего про это не знаю, почитаю). К нему есть стандартные интерфейсы доступа? По поводу автомапера. Ок, он динамический, на основании профайлов. Но все равно в классе профайла должен быть доступ и к сорс и к дестинейшн. Соответственно профайл, где маппинг между dto и viewmodel может быть в web проекте, а вот маппинг между domain model и dto model? В сервисах? Т.е. два места, где маппинг определяется? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 00:47 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppy, dto model :) наконец то кто то озвучил и это добро пожаловать! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 00:51 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
ViPRos, чувствуется богатая предыстория у этого слова тут ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 00:52 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyЕсть необходимость запускать приложение у разработчика с клиентскими данными и без развернутой базы. SQLite и другие встраиваемые СУБД. XML -- наихудший выбор. puppyОк, он динамический, на основании профайлов. Но все равно в классе профайла должен быть доступ и к сорс и к дестинейшн. Соответственно профайл, где маппинг между dto и viewmodel может быть в web проекте, а вот маппинг между domain model и dto model? В сервисах? Т.е. два места, где маппинг определяется? Самый тупой способ: просканить все подключенные библиотеки на предмет наличия профилей AutoMapper и загрузить их. Правильный способ: MEF, подключать через Autofac-модули или другие подобные механизмы. Конфигурация для отражения Domain→DTO должна размещаться там, где определяются DTO, или где определяются сервисы. Выделять отдельную сборку для хранения DTO-шек не рекомендую, размещай их там, где они будут использоваться, т.е. с сервисами. Советую не заболевать «разделением на сборки всего и вся» головного мозга. Это плохая привычка, ещё хуже, чем сложить всё вообще в одну сборку. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 01:02 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
hVosttSQLite и другие встраиваемые СУБД. XML -- наихудший выбор. Ну данных мало, по 2-3 записи из 10-15 таблиц, целую базу (хоть и компактную) слишком жирно пересылать, мне кажется hVosttподключать через Autofac-модули или другие подобные механизмы. Про autofac можно поподробнее (он все равно у меня используется)? В сервис модуле autofaca добавить маппинги для соответствующей сервисной сборки? Или что-то другое имелось в виду? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 01:22 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyНу данных мало, по 2-3 записи из 10-15 таблиц, целую базу (хоть и компактную) слишком жирно пересылать, мне кажется ну хз, для пересылки данных используется в основном XML и JSON, второй компактнее и как бы сейчас предпочтительнее использовать, чем XML, но это не так уж и важно. puppyПро autofac можно поподробнее (он все равно у меня используется)? В сервис модуле autofaca добавить маппинги для соответствующей сервисной сборки? Или что-то другое имелось в виду? про модули здесь http://autofaccn.readthedocs.io/en/latest/configuration/modules.html как примерно подрубить автомаппер рассказывается вот здесь https://kevsoft.net/2016/02/24/automapper-and-autofac-revisited.html ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 01:30 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyСоответственно профайл, где маппинг между dto и viewmodel может быть в web проекте, а вот маппинг между domain model и dto model? В сервисах? В сервисах. В веб проекте ничего не должно быть, только регистрация модулей. Иначе это просто издевательство будет, если какой-то behind код будет ошмётками торчать на проекте, который по сути не более, чем морда для сервисов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 01:32 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyНу данных мало, по 2-3 записи из 10-15 таблицзачем для микробазы автомаппер? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 09:05 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
hVosttКонфигурация для отражения Domain→DTO должна размещаться там, где определяются DTO, или где определяются сервисы. Выделять отдельную сборку для хранения DTO-шек не рекомендую, размещай их там, где они будут использоваться, т.е. с сервисами. почму нет? к примеру веб получает dto из api на сервере, зачем его дублировать если можно юзать одну сборку? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 10:52 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyhVosttSQLite и другие встраиваемые СУБД. XML -- наихудший выбор. Ну данных мало, по 2-3 записи из 10-15 таблиц, целую базу (хоть и компактную) слишком жирно пересылать, мне кажется+1 за SQLite. И что значит пересылать? - есть репликация, есть отправка на веб клиент, есть бэкап и архивация. Это всё пересыл). А есть универсальный доступ к бд. ( К трем разным бд). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 11:23 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
ПарамонhVosttКонфигурация для отражения Domain→DTO должна размещаться там, где определяются DTO, или где определяются сервисы. Выделять отдельную сборку для хранения DTO-шек не рекомендую, размещай их там, где они будут использоваться, т.е. с сервисами. почму нет? к примеру веб получает dto из api на сервере, зачем его дублировать если можно юзать одну сборку? API - это отдельная тема. Если коротко, то Swagger и генерация API клиентов рулит, а отдельные сборки - моветон ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 12:06 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyЕсть необходимость запускать приложение у разработчика с клиентскими данными и без развернутой базы.А чем обусловлено такое требование? Поднимаете разработчику виртуалку с пустой БД и пусть себе разрабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 12:09 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyНу данных мало, по 2-3 записи из 10-15 таблиц, целую базу (хоть и компактную) слишком жирно пересылать, мне кажетсяА Autofac с Automapper не жирно? Вангую, что они раз в 10 больше весят тестовой базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 12:13 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
skyANA, когда что-то жирное стоит - это неприятно, но не мешает, а вот когда шлется что-то жирное - это плохо ) Если подробнее - ситуация такая: - Есть клиент, у него стоит система (сервис и база) - Он что-то завел в базе, запустил сервис, что-то отработало неправильно - Клиент нажал на кнопку, сформировались данные, на которых все сломалось, он послал это разработчику - Разработчик на тех же данных запустил все у себя, увидел где проблема, выслал или фикс в коде или рекомендации по исправлению данных Тут, конечно, напрашивается просто загрузить клиентские данные в базу разработчика и запустить все так же, как и клиент это сделал. Но поскольку разработчик сервиса != разработчику базы, у него есть большое желание работать непосредственно с клиентскими данными и без базы вообще. Конечно, если это желание выливается в многодневную разработку - надо, наверное, поменять желания, но если нет - то это должно быть удобно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 13:54 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
skyANAПарамонпропущено... почму нет? к примеру веб получает dto из api на сервере, зачем его дублировать если можно юзать одну сборку? API - это отдельная тема. Если коротко, то Swagger и генерация API клиентов рулит, а отдельные сборки - моветон люблю комментарии в стиле - это рулез, то - отстой )) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:09 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyКлиент нажал на кнопку, сформировались данные, на которых все сломалось, он послал это разработчикут.е. вместо лога со строкой и стеком ошибки он послал миниБазу? Странно). Т.е. основной кейс это техподдержка? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:15 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppyНо поскольку разработчик сервиса != разработчику базы, у него есть большое желаниеу него есть желание переписать систему под себя лбимого)). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:18 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
ПарамонskyANAпропущено... API - это отдельная тема. Если коротко, то Swagger и генерация API клиентов рулит, а отдельные сборки - моветон люблю комментарии в стиле - это рулез, то - отстой )) А ты весь комментарий читай. Основное в нём - это "API - это отдельная тема". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:21 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
puppy, Варианты: 1. Дать удаленный доступ к рабочему столу заказчика. Или 2. Доступ к базе заказчика. Или 3. Доступ к логам заказчика ..... Или это ВинСервис и мы не в ветке Веб? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:24 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
skyANAПарамонпропущено... люблю комментарии в стиле - это рулез, то - отстой )) А ты весь комментарий читай. Основное в нём - это "API - это отдельная тема". тему читай. у автора есть некий сервис... возможно там будет некий api, а? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:27 |
|
Вопрос про автомаппер, архитектуру, базы
|
|||
---|---|---|---|
#18+
ПарамонskyANAпропущено... А ты весь комментарий читай. Основное в нём - это "API - это отдельная тема". тему читай. у автора есть некий сервис... возможно там будет некий api, а?Читаю. Пока не вижу с чёго вдруг "там будет некий api". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:53 |
|
|
start [/forum/topic.php?fid=18&fpage=23&tid=1355348]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
others: | 287ms |
total: | 458ms |
0 / 0 |