Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Разработка многомодульного приложения на C# WPF / 25 сообщений из 25, страница 1 из 1
13.12.2017, 09:31
    #39568795
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Помогите пожалуйста определиться в концепции разработки многомодульных приложений? Где имеется ядро программы, а модули разрабатывают несколько групп разработчиков.
Ниже описал примерно как я это вижу. Хотелось бы услышать мнение тех, кто уже занимался подобными проектами.

Основные критерии к разработки:
1. Создание ядра программы, с концепцией многомодульной работы;
2. Модули в ядро должны подгружаться по мере необходимости;
3. Обновление модулей должно производиться в фоновом режиме;
4. Настройка доступа должна быть общей для всех модулей и реализована в ядре программы;
5. База данных может быть локальная или сетевая (соединение устанавливается из ядра программы)
6. Подгружаемый модуль может использовать текущую базу данных ядра программы(получает конекшины из ядра программы) или свою(использует свои конекшины)

Что уже сделал:

1. Создал проект (Ядро программы);
2. Реализовал постраничную навигацию NavigationService;
3. Чтение модулей (dll) Assembly.LoadFrom(*.dll);
4. Из (dll) с помощью интерфейсов выдергиваю страницы, которые имеются в модуле

I. Интерфейсы используемые для dll:
IBoot - для описания подключаемого модуля;
IViewModel - для корневых страниц (таблицы данных);
IViewEditModel - для страниц редактирования данных (выбранной позиции из IViewModel);
IViewDictModel - для страниц просмотра/редактирования данных справочников;
IObserver - понимаю что тоже нужно, но как применить не знаю.

II. Интерфейсы используемые для dll общего назначения:
IBoot - для описания сервиса;
IViewPageFunctionModel - для страницы справочников

Не могу понять как реализовать работу с базой данных, используя EntityFramework Fluent? Так как в каждом модуле(dll) имеются свои сущности, которые должны как-то
скармливаться в ядро программы Domain.
...
Рейтинг: 0 / 0
13.12.2017, 10:35
    #39568836
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Nechto,
зайди в ветку ERP и напиши тут, прототип какого ERP ты пишешь?
...
Рейтинг: 0 / 0
13.12.2017, 11:08
    #39568860
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
в C# сделать обновление в фоновом режиме UI модулей, это как мне кажется нереальная хрен.
если обычный модуль\DLL можно загрузить в левый домен и потом выгрузить и обновить, то для UI Контролов вам нужно грузить файлв в домен приложения и выгрузить после этого его уже будет нельзя. А если нельзя выгрузить,то и обновить будет мало реально.
модульность делается легко
загружаете DLL, находите в ней все классы наследующие интерфейс ISomeOne, запоминаете, потом создаете на основе типов инстансы
...
Рейтинг: 0 / 0
13.12.2017, 12:26
    #39568913
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Да структура проекта ERP.
Мне нужно, для несколько отделов создать одну платформу. У каждого отдела будут свои модули(dll). Базы данных, скорее всего тоже будут разные. Отделы взаимодействуют между собой, поэтому должна быть какие-то связи, между модулями.

При помощи этого можно обновлять в реальном времени.
3. Чтение модулей (dll) Assembly.LoadFrom(*.dll);


Roman Mejtes модульность делается легко
загружаете DLL, находите в ней все классы наследующие интерфейс ISomeOne, запоминаете, потом создаете на основе типов инстансы
С этим согласен

А как реализовать работу с базой данных? EF я так понимаю не подходит для ERP проектов? Так как, EF создает модель только один раз при старте проекта(ядра)
...
Рейтинг: 0 / 0
13.12.2017, 12:32
    #39568915
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoДа структура проекта ERP.
Мне нужно, для несколько отделов создать одну платформу. У каждого отдела будут свои модули(dll). Базы данных, скорее всего тоже будут разные. Отделы взаимодействуют между собой, поэтому должна быть какие-то связи, между модулями.

При помощи этого можно обновлять в реальном времени.
3. Чтение модулей (dll) Assembly.LoadFrom(*.dll);


Roman Mejtesмодульность делается легко
загружаете DLL, находите в ней все классы наследующие интерфейс ISomeOne, запоминаете, потом создаете на основе типов инстансы
С этим согласен

А как реализовать работу с базой данных? EF я так понимаю не подходит для ERP проектов? Так как, EF создает модель только один раз при старте проекта(ядра)
ну как мне кажется, это нужно либо отдать на откуп модулю, то есть в каждом модуле работа с БД организована своя, тем более вы пишите, что у каждого модуля своя база.
Тут вполне подходит антипаттерн локатора служб. Подключая модуль вы подключаете набор служб зная заранее контракт каждой из них, то есть процесс взаимодействия вы спроектируйте на этапе архитектурной разработки. Нужно просто продумать все интерфейсы, сделать локатор и штамповать сервисы.
можно сделать отдельный сервис для работы с базами данных.
в проектах, что я писал, для взаимодействия между модулями, можно использовать события\делегаты, в параметрах события, делать маршрутизацию, если модули в виде дера и т.д.
...
Рейтинг: 0 / 0
13.12.2017, 12:54
    #39568934
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoДа структура проекта ERP.
ещё раз.
"Врага нужно знать в лицо".
Имя сестра, имя!!!
Какую систему копируем?

NechtoА как реализовать работу с базой данных? EF я так понимаю не подходит для ERP проектов? Так как, EF создает модель только один раз при старте проекта(ядра)
если копируем 1С, то там ядро стартует при старте конфигурации.
Т.е. есть Модель ядра и есть модель бизнеса-предметки.
Время разработки от 5 человеко-лет.
IMHO
...
Рейтинг: 0 / 0
13.12.2017, 13:04
    #39568945
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Roman Mejtes Подключая модуль вы подключаете набор служб зная заранее контракт каждой из них, то есть процесс взаимодействия вы спроектируйте на этапе архитектурной разработки. Нужно просто продумать все интерфейсы, сделать локатор и штамповать сервисы.

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

Выделил жирным что я не понял:
- под службами вы что имели ввиду?
- локатор это какое-то расширение?

А общие справочника как вы реализовывали, которые могут использоваться в нескольких модулях?
...
Рейтинг: 0 / 0
13.12.2017, 13:12
    #39568954
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Petro123NechtoДа структура проекта ERP.
ещё раз.
"Врага нужно знать в лицо".
Имя сестра, имя!!!
Какую систему копируем?

NechtoА как реализовать работу с базой данных? EF я так понимаю не подходит для ERP проектов? Так как, EF создает модель только один раз при старте проекта(ядра)
если копируем 1С, то там ядро стартует при старте конфигурации.
Т.е. есть Модель ядра и есть модель бизнеса-предметки.
Время разработки от 5 человеко-лет.
IMHO

Мне понравилось как это сделано, в Sap Logon. Но интерфейс там не дружелюбный и навигация не совсем удобна.
За основу взял её иерархию TreeView, там грамотно разложено все по отделам и видами работ.
...
Рейтинг: 0 / 0
13.12.2017, 13:21
    #39568956
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoМне понравилось как это сделано, в Sap
не слишком круто для подражания?
...
Рейтинг: 0 / 0
13.12.2017, 13:41
    #39568974
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Petro123NechtoМне понравилось как это сделано, в Sap
не слишком круто для подражания?

Я же её не переписывать собираюсь :) а говорю что мне в ней понравилось.
...
Рейтинг: 0 / 0
13.12.2017, 14:11
    #39569000
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoЯ же её не переписывать собираюсь :) а говорю что мне в ней понравилось.
угу. Смотрел на королеву, а женился на кухарке)
...
Рейтинг: 0 / 0
13.12.2017, 14:48
    #39569034
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Roman Mejtesв проектах, что я писал, для взаимодействия между модулями, можно использовать события\делегаты, в параметрах события, делать маршрутизацию, если модули в виде дера и т.д.

Я не совсем понимаю во взаимодействиях между модулями.
К примеру:

Транспортный отдел внес новый автомобиль в свою БД из своего модуля. -> Служба по ремонту имеет свой модуль и БД, ей нужно как-то удивить этот автомобиль и поставить его на ремонт.
Как это сделать? Если БД будут разные.
...
Рейтинг: 0 / 0
13.12.2017, 15:20
    #39569064
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoСлужба по ремонту имеет свой модуль и БД
совсем нет смысла делить на модули ещё и по БД.
БД должна быть одна.
...
Рейтинг: 0 / 0
13.12.2017, 15:24
    #39569070
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Nechto,
схемы БД можно задействовать по функциональным кускам:
- Торговля
- Логистика
- Кадры
...
Рейтинг: 0 / 0
13.12.2017, 15:40
    #39569085
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Petro123,

Ну это если все в одной бд крутится. А если нет.
...
Рейтинг: 0 / 0
13.12.2017, 15:53
    #39569102
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoPetro123,

Ну это если все в одной бд крутится. А если нет.
Тогда не взлетит.
Тогда репликация между базами или переброска файлами проводок как в 1С.
Оно тебе надо?
...
Рейтинг: 0 / 0
13.12.2017, 19:59
    #39569248
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
>Nechto, сегодня, 09:31 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1279936&msg=21029440][21029440]
>... Где имеется ядро программы, а модули разрабатывают несколько групп разработчиков...

Я прощёл этим путем.
Можно посмотреть и это .

С уважением,
Владимир
...
Рейтинг: 0 / 0
14.12.2017, 08:08
    #39569378
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Petro123NechtoPetro123,

Ну это если все в одной бд крутится. А если нет.
Тогда не взлетит.
Тогда репликация между базами или переброска файлами проводок как в 1С.
Оно тебе надо?

Соглашусь, не надо. Моя задача реализовать платформу, в которпой после прогрпаммисты могли накатывать свои модули.
...
Рейтинг: 0 / 0
14.12.2017, 10:46
    #39569484
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Nechtoреализовать платформу, в которпой после прогрпаммисты могли накатывать свои модули.
Что сие значит - загадка.
...
Рейтинг: 0 / 0
20.12.2017, 05:48
    #39572419
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoPetro123,

Ну это если все в одной бд крутится. А если нет.Значит надо передать информацию из одной БД в другую.
Это же очевидно.

Вариантов это сделать множество.
...
Рейтинг: 0 / 0
20.12.2017, 05:55
    #39572421
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoRoman Mejtesв проектах, что я писал, для взаимодействия между модулями, можно использовать события\делегаты, в параметрах события, делать маршрутизацию, если модули в виде дера и т.д.

Я не совсем понимаю во взаимодействиях между модулями.
К примеру:

Транспортный отдел внес новый автомобиль в свою БД из своего модуля. -> Служба по ремонту имеет свой модуль и БД, ей нужно как-то удивить этот автомобиль и поставить его на ремонт.
Как это сделать? Если БД будут разные.После такого примера возникает вопрос: а нужны ли тут модули? Может подумать над тем как организовать обмен данными между приложением транспортного отдела и приложением службы по ремонту?
...
Рейтинг: 0 / 0
20.12.2017, 06:46
    #39572429
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoПри помощи этого можно обновлять в реальном времени.
3. Чтение модулей (dll) Assembly.LoadFrom(*.dll);
Ошибаетесь.

Загрузить-то можно одну, две, три сборки. А выгрузить только если целиком весь AppDomain.
В Вашем случае это означает, что для обновления одного модуля, придётся прибить всё приложение.
...
Рейтинг: 0 / 0
21.12.2017, 08:31
    #39573245
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
skyANANechtoПри помощи этого можно обновлять в реальном времени.
3. Чтение модулей (dll) Assembly.LoadFrom(*.dll);
Ошибаетесь.

Загрузить-то можно одну, две, три сборки. А выгрузить только если целиком весь AppDomain.
В Вашем случае это означает, что для обновления одного модуля, придётся прибить всё приложение.

Да заблуждался, что можно фоновом режиме обновлять модули. Assembly.LoadFrom, данный способ не подходит.
Я нашел другой но не совсем с ним разобрался:


Там говорится про загрузку и выгрузку AppDomain. Возможно обновление можно реализовать таким образом.
...
Рейтинг: 0 / 0
21.12.2017, 09:53
    #39573300
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
NechtoskyANAпропущено...

Ошибаетесь.

Загрузить-то можно одну, две, три сборки. А выгрузить только если целиком весь AppDomain.
В Вашем случае это означает, что для обновления одного модуля, придётся прибить всё приложение.

Да заблуждался, что можно фоновом режиме обновлять модули. Assembly.LoadFrom, данный способ не подходит.
Я нашел другой но не совсем с ним разобрался:


Там говорится про загрузку и выгрузку AppDomain. Возможно обновление можно реализовать таким образом.
междоменное взаимодействие накладывает на себя дополнительные ресурсы, а объекты которые вы будите использовать между домену нужно делать сериализуемыми. сделайте просто программу обновлятор, которая будет запускаться сразу перед закрытием основной программы при обновлении и запускать программу снова.
чтоб для пользователя все было еще прозрачнее, можно сохранять текущее состояние и восстанавливать его после перезапуска
...
Рейтинг: 0 / 0
21.12.2017, 10:36
    #39573334
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка многомодульного приложения на C# WPF
Roman Mejtesсделайте просто программу обновлятор,
+1
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Разработка многомодульного приложения на C# WPF / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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