powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос про автомаппер, архитектуру, базы
25 сообщений из 89, страница 1 из 4
Вопрос про автомаппер, архитектуру, базы
    #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
Вопрос про автомаппер, архитектуру, базы
    #39575113
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puppy,

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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