1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521

Организация данных и связей в клиентском приложении WinForms

11.09.2012, 10:08. Показов 1859. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При работе над клиентским приложением возникли некоторые трудности с пониманием как реализовать данные в большом приложении.

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

в процессе работы над приложением возникли следующие задачи с которыми возникли трудности:

1. Организация единых данных для приложения(в т.ч. между модулями программы dll)

- в приложении используются справочные данные, которые загружаются с бд в разных модулях программы(список организаций, список товаров и т.д.) как организовать ЕДИНЫЙ ИСТОЧНИК ДАННЫХ для всех модулей программы, чтоб данные не дублировались?
(как я реализовал до этого - при необходимости создавал объект DataTable и привязывал его к контролу(комбобокс, листбокс) - но это каждый раз лишнее обращение к БД и заполнение оперативки повторяющимися данными.
правда в пределах модуля реализую привязку BindingSourse но это не решает вопрос как объединить данные между модулями)

2. В дополнение к первому - как реализовать синхронизацию данных при обновлении их прочими модулями/другими клиентами.
Опять-таки таблицы используются разными контролами и в разных модулях.

3. Как реализовать связь между таблицами. Чтоб при смене текущего элемента в родительской происходила фильтрация или прочие изменения в дочерних КОНРОЛАХ.

не понимаю до конца механизма DataRelation потому использую событие CurrentItemChange в BindingSourse. Возможно, есть более изящное решение данного функционала.

4. BindingSourse множатся как грибы и работа с ними становиться очень громоздкой. Сложно увидеть все связи между различными BindingSourse. Как вариант решения рассматриваю создание отдельных классов для отдельных блоков данных. Однако это все равно весьма громоздким представляется.

Добавлено через 21 час 38 минут
неужто никто не сталкивался с данными задачами? или это информация под грифом "совершенно секретно" ??
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2012, 10:08
Ответы с готовыми решениями:

Удаление из БД в клиентском приложении
Добрый вечер. Есть такая проблема. Есть база данных с которой я работаю из приложения. В ней несколько таблиц. Проблема: Есть...

Авторизация в клиентском приложении
Добрый день! В общем, проблема заключается в следующем: есть База Данных, в ней есть таблицы, ХП, представления, и т.д, создал 3-и...

Правильная организация цепочки Tasks в бесконечном цикле (WinForms)
как правильно реализовать подобное? Когда код что-то типа такого - while (true) { ...

5
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.09.2012, 10:30
Цитата Сообщение от Learx Посмотреть сообщение
1. Организация единых данных для приложения(в т.ч. между модулями программы dll)
- в приложении используются справочные данные, которые загружаются с бд в разных модулях программы(список организаций, список товаров и т.д.) как организовать ЕДИНЫЙ ИСТОЧНИК ДАННЫХ для всех модулей программы, чтоб данные не дублировались?
(как я реализовал до этого - при необходимости создавал объект DataTable и привязывал его к контролу(комбобокс, листбокс) - но это каждый раз лишнее обращение к БД и заполнение оперативки повторяющимися данными.
правда в пределах модуля реализую привязку BindingSourse но это не решает вопрос как объединить данные между модулями)
Загружай данные в статические DataTAble

Добавлено через 1 минуту
Цитата Сообщение от Learx Посмотреть сообщение
2. В дополнение к первому - как реализовать синхронизацию данных при обновлении их прочими модулями/другими клиентами.
Опять-таки таблицы используются разными контролами и в разных модулях.
это делает BindingSourse

Добавлено через 1 минуту
Цитата Сообщение от Learx Посмотреть сообщение
3. Как реализовать связь между таблицами. Чтоб при смене текущего элемента в родительской происходила фильтрация или прочие изменения в дочерних КОНРОЛАХ.
у BindingSourse есть свойство Filter (если не ошибаюсь)

Добавлено через 1 минуту
Цитата Сообщение от Learx Посмотреть сообщение
4. BindingSourse множатся как грибы и работа с ними становиться очень громоздкой. Сложно увидеть все связи между различными BindingSourse. Как вариант решения рассматриваю создание отдельных классов для отдельных блоков данных. Однако это все равно весьма громоздким представляется.
большое приложение - много кода, так было всегда. Но лучше всего сначала нарисовать грамотный проект, а уже потом кодить
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.09.2012, 14:51  [ТС]
все так и делаю как выше сказанно .. но хочется чтоб все было проще и быстрее ...
похоже прийдется реализовать и пробовать свои идеи ... а имено фабрики и билдеры для BindingSource и контейнер для них. просто надеялся что это все рализовано в .NET и я просто не знаю об этом.

повторю первый вопрос. у меня есть программа-оболочка, которая по сути предоставляет только подключение к бд и логин пользователей и подключение модулей. весь функционал возложен на программные модули-dll, которые непосредственно и обращаются к бд и используют данные которые пересекаются и повторно используются в разных модулях. естественно каждый из модулей делает СВОЮ копию таблиц БД. и статик DataTable не решает всей проблемы. более того разные модули не могут между собой обмениваться информацией об обновлении даных.
Допустим, я вынесу все DataTable в отдельный модуль но я не представляю
как заставить все модули обращаться с одним и тем же модулем-контейнером данных(чтоб модуль не запускал свой экземпляр контейнера) и как предоставить им доступ к данным без копирования из модуля.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
12.09.2012, 14:57
Цитата Сообщение от Learx Посмотреть сообщение
как заставить все модули обращаться с одним и тем же модулем-контейнером данных(чтоб модуль не запускал свой экземпляр контейнера) и как предоставить им доступ к данным без копирования из модуля.
Изучи ключевое слово static
Цитата Сообщение от Learx Посмотреть сообщение
повторю первый вопрос.
Я на него уже отвечал
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.09.2012, 16:21  [ТС]
я прекрасно знаю что такое static. в одном модуле нужна таблица поставщиков на 3 формах? - создаем 1 статик DataTable и контрол каждой формы биндим к этой таблице.

однако есть другой модуль который ничего не знает об уже существующей таблице в другом модуле и снова загрузит данные в СВОЮ статик таблицу. от чего я и хочу избавить но не выходит.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
12.09.2012, 20:41
Цитата Сообщение от Learx Посмотреть сообщение
есть другой модуль который ничего не знает об уже существующей таблице
об этом должен знать программист, который эти модули создает и собирает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2012, 20:41
Помогаю со студенческими работами здесь

Отчет в клиентском приложении
Есть готовая и работающее клиентское приложение в нем 2 отчета 1 в Exel он работает прекрасно. 2-ой в ворде и вот он не хочет добавлять...

Авторизация в клиентском приложении
Доброго времени суток. Возник такой вопрос, никак не могу найти в нете... Нужно создать приложение с авторизацией. То есть при запуску...

Организация вывода данных в приложении
Добрый вечер. Решил создать базу данных и приложение на Visual C++ для выборки данных и вставки их в форму Microsoft Word и столкнулся с...

Как создать авторизацию MS SQL Server в клиентском приложении на MS Access?
Есть БД на SQL Server с клиентской частью на Access. Вот и существует проблема с авторизацией. На данный момент использую вариант с защитой...

Организация связей между таблицами в БД
Уважаемые профессионалы по рельсам, подскажите как правильно организовать БД. В результате надо иметь два каталога: каталог врачей и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru