Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос про автомаппер, архитектуру, базы / 25 сообщений из 89, страница 1 из 4
25.12.2017, 00:17
    #39575110
puppy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
Добрый вечер,

есть следующая задача:

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 в конечных приложениях, что не совсем правильно. Или сделать отдельный проект, который будет заниматься исключительно маппингом и для интерфейса и для веба?

Поделитесь своими мыслями / опытом, заранее спасибо
...
Рейтинг: 0 / 0
25.12.2017, 00:28
    #39575113
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppy,

1. в целом нет, но 100% гарантии никто не даст. лучше быть готовым к возможным проблемам

2. хз, в .NET ворох разных способов работы с XML, никто не может знать, что конкретно тебе подойдёт на 100%, изучай, экспериментируй.

3. для автомаппера самый лучший способ конфигурирования — модульный (AutoMapper.Profile), плюс запомни раз и навсегда — никогда не используй статический маппинг, никогда. только через интерфейс IMapper.
...
Рейтинг: 0 / 0
25.12.2017, 00:29
    #39575115
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppy,

XML -- вообще не очень хороший выбор для хранения данных. вообще, зачем тебе XML? для каких целей? почему именно XML, а не JSON? просто интересно, чем обусловлен выбор.
...
Рейтинг: 0 / 0
25.12.2017, 00:30
    #39575116
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyИли сделать отдельный проект, который будет заниматься исключительно маппингом и для интерфейса и для веба?

ни в коем случае, читай про AutoMapper.Profile
...
Рейтинг: 0 / 0
25.12.2017, 00:47
    #39575119
puppy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
hVostt,

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

По поводу автомапера.
Ок, он динамический, на основании профайлов. Но все равно в классе профайла должен быть доступ и к сорс и к дестинейшн. Соответственно профайл, где маппинг между dto и viewmodel может быть в web проекте, а вот маппинг между domain model и dto model? В сервисах? Т.е. два места, где маппинг определяется?
...
Рейтинг: 0 / 0
25.12.2017, 00:51
    #39575121
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppy,

dto model :)
наконец то кто то озвучил и это
добро пожаловать!
...
Рейтинг: 0 / 0
25.12.2017, 00:52
    #39575122
puppy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
ViPRos,

чувствуется богатая предыстория у этого слова тут )))
...
Рейтинг: 0 / 0
25.12.2017, 01:02
    #39575126
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyЕсть необходимость запускать приложение у разработчика с клиентскими данными и без развернутой базы.

SQLite и другие встраиваемые СУБД. XML -- наихудший выбор.


puppyОк, он динамический, на основании профайлов. Но все равно в классе профайла должен быть доступ и к сорс и к дестинейшн. Соответственно профайл, где маппинг между dto и viewmodel может быть в web проекте, а вот маппинг между domain model и dto model? В сервисах? Т.е. два места, где маппинг определяется?

Самый тупой способ: просканить все подключенные библиотеки на предмет наличия профилей AutoMapper и загрузить их.

Правильный способ: MEF, подключать через Autofac-модули или другие подобные механизмы.

Конфигурация для отражения Domain→DTO должна размещаться там, где определяются DTO, или где определяются сервисы. Выделять отдельную сборку для хранения DTO-шек не рекомендую, размещай их там, где они будут использоваться, т.е. с сервисами.

Советую не заболевать «разделением на сборки всего и вся» головного мозга. Это плохая привычка, ещё хуже, чем сложить всё вообще в одну сборку.
...
Рейтинг: 0 / 0
25.12.2017, 01:22
    #39575130
puppy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
hVosttSQLite и другие встраиваемые СУБД. XML -- наихудший выбор.

Ну данных мало, по 2-3 записи из 10-15 таблиц, целую базу (хоть и компактную) слишком жирно пересылать, мне кажется

hVosttподключать через Autofac-модули или другие подобные механизмы.

Про autofac можно поподробнее (он все равно у меня используется)? В сервис модуле autofaca добавить маппинги для соответствующей сервисной сборки? Или что-то другое имелось в виду?
...
Рейтинг: 0 / 0
25.12.2017, 01:30
    #39575131
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
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
...
Рейтинг: 0 / 0
25.12.2017, 01:32
    #39575132
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyСоответственно профайл, где маппинг между dto и viewmodel может быть в web проекте, а вот маппинг между domain model и dto model? В сервисах?

В сервисах. В веб проекте ничего не должно быть, только регистрация модулей. Иначе это просто издевательство будет, если какой-то behind код будет ошмётками торчать на проекте, который по сути не более, чем морда для сервисов.
...
Рейтинг: 0 / 0
25.12.2017, 09:05
    #39575174
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyНу данных мало, по 2-3 записи из 10-15 таблицзачем для микробазы автомаппер?
...
Рейтинг: 0 / 0
25.12.2017, 10:52
    #39575257
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
hVosttКонфигурация для отражения Domain→DTO должна размещаться там, где определяются DTO, или где определяются сервисы. Выделять отдельную сборку для хранения DTO-шек не рекомендую, размещай их там, где они будут использоваться, т.е. с сервисами.
почму нет?
к примеру веб получает dto из api на сервере, зачем его дублировать если можно юзать одну сборку?
...
Рейтинг: 0 / 0
25.12.2017, 11:23
    #39575274
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyhVosttSQLite и другие встраиваемые СУБД. XML -- наихудший выбор.

Ну данных мало, по 2-3 записи из 10-15 таблиц, целую базу (хоть и компактную) слишком жирно пересылать, мне кажется+1 за SQLite.
И что значит пересылать?
- есть репликация, есть отправка на веб клиент, есть бэкап и архивация. Это всё пересыл).
А есть универсальный доступ к бд. ( К трем разным бд).
...
Рейтинг: 0 / 0
25.12.2017, 12:06
    #39575304
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
ПарамонhVosttКонфигурация для отражения Domain→DTO должна размещаться там, где определяются DTO, или где определяются сервисы. Выделять отдельную сборку для хранения DTO-шек не рекомендую, размещай их там, где они будут использоваться, т.е. с сервисами.
почму нет?
к примеру веб получает dto из api на сервере, зачем его дублировать если можно юзать одну сборку?
API - это отдельная тема.
Если коротко, то Swagger и генерация API клиентов рулит, а отдельные сборки - моветон
...
Рейтинг: 0 / 0
25.12.2017, 12:09
    #39575311
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyЕсть необходимость запускать приложение у разработчика с клиентскими данными и без развернутой базы.А чем обусловлено такое требование?
Поднимаете разработчику виртуалку с пустой БД и пусть себе разрабатывает.
...
Рейтинг: 0 / 0
25.12.2017, 12:13
    #39575315
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyНу данных мало, по 2-3 записи из 10-15 таблиц, целую базу (хоть и компактную) слишком жирно пересылать, мне кажетсяА Autofac с Automapper не жирно? Вангую, что они раз в 10 больше весят тестовой базы.
...
Рейтинг: 0 / 0
25.12.2017, 13:54
    #39575418
puppy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
skyANA,

когда что-то жирное стоит - это неприятно, но не мешает, а вот когда шлется что-то жирное - это плохо )

Если подробнее - ситуация такая:

- Есть клиент, у него стоит система (сервис и база)
- Он что-то завел в базе, запустил сервис, что-то отработало неправильно
- Клиент нажал на кнопку, сформировались данные, на которых все сломалось, он послал это разработчику
- Разработчик на тех же данных запустил все у себя, увидел где проблема, выслал или фикс в коде или рекомендации по исправлению данных

Тут, конечно, напрашивается просто загрузить клиентские данные в базу разработчика и запустить все так же, как и клиент это сделал. Но поскольку разработчик сервиса != разработчику базы, у него есть большое желание работать непосредственно с клиентскими данными и без базы вообще. Конечно, если это желание выливается в многодневную разработку - надо, наверное, поменять желания, но если нет - то это должно быть удобно
...
Рейтинг: 0 / 0
25.12.2017, 14:09
    #39575436
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
skyANAПарамонпропущено...

почму нет?
к примеру веб получает dto из api на сервере, зачем его дублировать если можно юзать одну сборку?
API - это отдельная тема.
Если коротко, то Swagger и генерация API клиентов рулит, а отдельные сборки - моветон
люблю комментарии в стиле - это рулез, то - отстой ))
...
Рейтинг: 0 / 0
25.12.2017, 14:15
    #39575446
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyКлиент нажал на кнопку, сформировались данные, на которых все сломалось, он послал это разработчикут.е. вместо лога со строкой и стеком ошибки он послал миниБазу?
Странно).
Т.е. основной кейс это техподдержка?
...
Рейтинг: 0 / 0
25.12.2017, 14:18
    #39575451
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppyНо поскольку разработчик сервиса != разработчику базы, у него есть большое желаниеу него есть желание переписать систему под себя лбимого)).
...
Рейтинг: 0 / 0
25.12.2017, 14:21
    #39575458
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
ПарамонskyANAпропущено...

API - это отдельная тема.
Если коротко, то Swagger и генерация API клиентов рулит, а отдельные сборки - моветон
люблю комментарии в стиле - это рулез, то - отстой ))
А ты весь комментарий читай. Основное в нём - это "API - это отдельная тема".
...
Рейтинг: 0 / 0
25.12.2017, 14:24
    #39575467
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
puppy,
Варианты:
1. Дать удаленный доступ к рабочему столу заказчика.
Или
2. Доступ к базе заказчика.
Или
3. Доступ к логам заказчика
.....
Или это ВинСервис и мы не в ветке Веб?
...
Рейтинг: 0 / 0
25.12.2017, 14:27
    #39575473
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
skyANAПарамонпропущено...

люблю комментарии в стиле - это рулез, то - отстой ))
А ты весь комментарий читай. Основное в нём - это "API - это отдельная тема".
тему читай. у автора есть некий сервис...
возможно там будет некий api, а?
...
Рейтинг: 0 / 0
25.12.2017, 14:53
    #39575517
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про автомаппер, архитектуру, базы
ПарамонskyANAпропущено...

А ты весь комментарий читай. Основное в нём - это "API - это отдельная тема".
тему читай. у автора есть некий сервис...
возможно там будет некий api, а?Читаю. Пока не вижу с чёго вдруг "там будет некий api".
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос про автомаппер, архитектуру, базы / 25 сообщений из 89, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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