Устойчивость системы к изменению структуры данных
От: Аким Россия  
Дата: 02.12.05 16:14
Оценка:
Вот поддерживаю систему на 1С, и что в ней нравится, это довольно высокая способность к реструктуризации данных. Как правило, формы даже и не замечают что данные поменялись, ну или нужно внести минимальные
изменения в дизайнере и в код... Вот, а с .Net как я понял совсем другая песня... Ради интереса поменял имя
таблицы, а так же имена полей в ней, пришлось долго по коду лазить всё перенастраивать, т.к. даже в дизайнере
форма не открывается уже... Форму восстановил (простенький тестовый примерчик).
А когда реальные проекты пойдут, боюсь не справиться — будет же по нескольку таблиц, связи между ними Есть ли какая-то устоявшаяся методология внесения изменений с минимальными затратами времени на перенастройку датасетов, форм и т.д., что можно почитать по этому поводу? Спасибо.
Re: Устойчивость системы к изменению структуры данных
От: DrAg0n Норвегия  
Дата: 02.12.05 19:34
Оценка:
Здравствуйте, Аким, Вы писали:

А>Вот поддерживаю систему на 1С, и что в ней нравится, это довольно высокая способность к реструктуризации данных. Как правило, формы даже и не замечают что данные поменялись, ну или нужно внести минимальные

А>изменения в дизайнере и в код... Вот, а с .Net как я понял совсем другая песня... Ради интереса поменял имя
А>таблицы, а так же имена полей в ней, пришлось долго по коду лазить всё перенастраивать, т.к. даже в дизайнере
А>форма не открывается уже... Форму восстановил (простенький тестовый примерчик).
А>А когда реальные проекты пойдут, боюсь не справиться — будет же по нескольку таблиц, связи между ними Есть ли какая-то устоявшаяся методология внесения изменений с минимальными затратами времени на перенастройку датасетов, форм и т.д., что можно почитать по этому поводу? Спасибо.

Устойчивость к изменениям в структуре данных, которая реализована в системе 1С, а также гибкость системы в целом, достигнута за счёт применения тех же вполне конкретных вещей, но на мета-уровне. Т.е. есть уровень абстракции данных, который обрабатывается специальной логикой. Dataset в программе — это вполне конкретная вещь "низкого" уровня (вот до чего дожились... раньше ассемблер был ), а в 1С конйигураторе нет возможности работать с данными напрямую.

Мне кажется вопрос некорректный. .NET — это система проектирования приложений — среда программирования (native), а 1С конфигуратор — это всё та же система настройки прикладного программного продукта — не более того (pseudo).


-------------------------------
Всё пройдёт, пройдёт и это...
Всё пройдёт... Пройдёт и это.
Re[2]: Устойчивость системы к изменению структуры данных
От: Аким Россия  
Дата: 03.12.05 08:07
Оценка:
Здравствуйте, DrAg0n, Вы писали:


DA>Мне кажется вопрос некорректный. .NET — это система проектирования приложений — среда программирования (native), а 1С конфигуратор — это всё та же система настройки прикладного программного продукта — не более того (pseudo).


Спасибо, мне кажется вопрос вполне корректный. Задача не в реализации под Net архитектуры 1С а
в освоении правильной методологии внесения изменения в существующую структуру таблиц. Я не стремлюсь
к максимальной универсализации (ибо плата за это высока весьма) а именно хочу чётких инструкций:
Нужно добавить/изменить/удалить — таблицы/поля/связи — которые уже используются в приложении. Чёткий
план действий — "пойди туда, подкрути то, обрати внимание на следующее". Методом проб и ошибок я конечно
же разберусь (уже начал), но боюсь и времени это отнимет массу, и навыки скорее всего получу "кустарные"
Спасибо за любую инфу, ссылки, книги по данной проблематике.
Re[3]: Устойчивость системы к изменению структуры данных
От: DrAg0n Норвегия  
Дата: 03.12.05 11:36
Оценка:
Здравствуйте, Аким, Вы писали:

А>Здравствуйте, DrAg0n, Вы писали:



DA>>Мне кажется вопрос некорректный. .NET — это система проектирования приложений — среда программирования (native), а 1С конфигуратор — это всё та же система настройки прикладного программного продукта — не более того (pseudo).


А>...Я не стремлюсь

А>к максимальной универсализации (ибо плата за это высока весьма) а именно хочу чётких инструкций:
А>Нужно добавить/изменить/удалить — таблицы/поля/связи — которые уже используются в приложении.

...Вот это и есть по 1С-овски. А когда программируешь на native-языке, ты несёшь полную ответственность за соответствие структуры данных БД и логики программы её использующей.

А>Спасибо за любую инфу, ссылки, книги по данной проблематике.


Лично я выбрал для изучения C#.NET книжку ISBN 5-93286-038-3 Здесь есть и описание самого языка с объектной-ориентацией по шарповски, и примеры применения для разработки.
Всё пройдёт... Пройдёт и это.
Re: Устойчивость системы к изменению структуры данных
От: Igor Trofimov  
Дата: 03.12.05 19:58
Оценка:
Ну, ничего не мешает сделать такую же гибкость и на .nt — юзай нетипизированные DataTable'ы и имей в программе описания метаданных.
Re: Устойчивость системы к изменению структуры данных
От: SEDEGOFF Россия www.srcsoft.com
Дата: 05.12.05 03:47
Оценка:
MVC тебе в помощь!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Устойчивость системы к изменению структуры данных
От: dshe  
Дата: 05.12.05 08:02
Оценка:
Здравствуйте, SEDEGOFF, Вы писали:

SED>MVC тебе в помощь!


Ну, если ты советуешь MVC, то может объяснишь как оно может ему помочь?
--
Дмитро
Re: Устойчивость системы к изменению структуры данных
От: bralgin США www.dwh-club.com
Дата: 05.12.05 08:10
Оценка: 1 (1)
Здравствуйте, Аким, Вы писали:

А>Вот поддерживаю систему на 1С, и что в ней нравится, это довольно высокая способность к реструктуризации данных. Как правило, формы даже и не замечают что данные поменялись, ну или нужно внести минимальные

А>изменения в дизайнере и в код... Вот, а с .Net как я понял совсем другая песня... Ради интереса поменял имя
А>таблицы, ...

Ну-Ну... Ты это о чем?
Ты открой Enterprise Manager, и поменяй имя таблицы (например SC33 на SC_33 ), и посмотри как у тебя 1С раскорячится!
http://www.flickr.com/photos/bralgin/
Re[3]: Устойчивость системы к изменению структуры данных
От: SEDEGOFF Россия www.srcsoft.com
Дата: 05.12.05 08:44
Оценка:
Ну например так.
Есть у него карточка товара. Он создает класс GoodsCard. Этот класс отвечает за выборку данных и их изменение. Вторым этапом создается GoodCardForm — форма для отображения информации о карточке товара. Коструктор в качестве параметра получает объект aGoodsCard.
Перед отображением происходит инициализация формы:
this.editBox1.Text = aGoodsCard.GetGoodsName();
this.editBox2.Text = aGoodsCard.GetGoodsId();
GoodsParametr [] params = aGoodsCard.GetGoodsParametrs();
foreach(GoodsParametr oneParam in params)
{
...
//GoodsParametr - тоже самописный класс для отображения параметров
}
GoodsPrice [] price = aGoodsCard.GetGoodsPrices();
....
//Ну и так далее
//Теперь изменить параметр
aGoodsCard.SetAddParam(GoodsParametr aGoodsParametr);

//Ну и теперь сохранить все изменения в БД
aGoodsCard.CommitWork();

Таким образом форме без разницы откуда прошла инициализация карточки. Например тим лидер захотелось что бы цены товара хранились не в одной таблице строками, а каждая цена в своей таблице (хптел бы я на такого взглянуть ). Нужно изменить только способ выборки информации, а форма даже и не заметит ничего. Более того — если эту инфу формировать процедурой на серваке — вынести логику туда — так и компилируемый код менять не надо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Устойчивость системы к изменению структуры данных
От: Аким Россия  
Дата: 05.12.05 12:20
Оценка:
SED>Таким образом форме без разницы откуда прошла инициализация карточки.
Т.е. форма ничего не знает о датасетах и т.д.? Прикольно, поковыряюсь
Re[2]: Устойчивость системы к изменению структуры данных
От: DenisCh Россия  
Дата: 06.12.05 06:15
Оценка:
Здравствуйте, bralgin, Вы писали:

B>Ну-Ну... Ты это о чем?

B>Ты открой Enterprise Manager, и поменяй имя таблицы (например SC33 на SC_33 ), и посмотри как у тебя 1С раскорячится!

И _как_ она раскорячится? Да, справочник, лежащий в sc33, будет пустым... Потеряются ссылки. Но это не раскорячка.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: Устойчивость системы к изменению структуры данных
От: Mazay Россия  
Дата: 06.12.05 10:49
Оценка:
Здравствуйте, SEDEGOFF, Вы писали:

SED>Ну например так.

SED>Есть у него карточка товара. Он создает класс GoodsCard. Этот класс отвечает за выборку данных и их изменение. Вторым этапом создается GoodCardForm — форма для отображения информации о карточке товара. Коструктор в качестве параметра получает объект aGoodsCard.
SED>Перед отображением происходит инициализация формы:
SED>
SED>this.editBox1.Text = aGoodsCard.GetGoodsName();
SED>this.editBox2.Text = aGoodsCard.GetGoodsId();
SED>GoodsParametr [] params = aGoodsCard.GetGoodsParametrs();
SED>foreach(GoodsParametr oneParam in params)
SED>{
SED>...
SED>//GoodsParametr - тоже самописный класс для отображения параметров
SED>}
SED>GoodsPrice [] price = aGoodsCard.GetGoodsPrices();
SED>....
SED>//Ну и так далее
SED>//Теперь изменить параметр
SED>aGoodsCard.SetAddParam(GoodsParametr aGoodsParametr);

SED>//Ну и теперь сохранить все изменения в БД
SED>aGoodsCard.CommitWork();
SED>

SED>Таким образом форме без разницы откуда прошла инициализация карточки. Например тим лидер захотелось что бы цены товара хранились не в одной таблице строками, а каждая цена в своей таблице (хптел бы я на такого взглянуть ). Нужно изменить только способ выборки информации, а форма даже и не заметит ничего. Более того — если эту инфу формировать процедурой на серваке — вынести логику туда — так и компилируемый код менять не надо.

Интересно, как часто возникает надобность в таком изменении структуры данных, что ненужно менять ничего кроме способа выборки? И во что выльется создание ещё одного абстрактного слоя?
Вот весело то будет писать функции типа GetGoodsName(), GetGoodsId(), GetGoodsParametrs() и т.д. А потом ещё аналогичный набор сеттеров, а потом ещё подумать о синхронизации с БД, а потом ещё вспомнить о биндинге контролов ко всему этому делу, о том что данные должны забираться только 1 раз и храниться только в одном месте (ну чтоб строка скажем с названием производителя хранилась в памяти приложения в единственном экземпляре). Тут, наверное, могут конкретно помочь средства объектно-реляционной проекции (ORM) — по ссылке статья Сергея Тарасова "Обзор средств объектно-реляционной проекции (ORM) для платформы .NET".
Кстати, если у тимлиду захотелось поменять структуру БД на SQL-сервере, Вам не обязательно менять структуру данных приложения — в смысле DataSet.
Главное гармония ...
Re[5]: Устойчивость системы к изменению структуры данных
От: SEDEGOFF Россия www.srcsoft.com
Дата: 06.12.05 11:23
Оценка:
Ссылка не верная — опубликуй пожалуйста еще раз.
А надобность возникает по мере получения опыта. Программист развивается всегда. Поэтому проектируя — нужно "видеть" будующее. В любом случае я не навязываю своем мнение, а делюсь опытом.
Могу привести пример из жизни. Переписываем большой блок кода из двухзвенки в трех — повышается производительность. И если бы изначально было реализовано как в моем примере — форму бы переделывать не пришлось (де и не только форму). Вместо этого мы просто все переписываем.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Устойчивость системы к изменению структуры данных
От: Mazay Россия  
Дата: 06.12.05 11:39
Оценка:
Здравствуйте, SEDEGOFF, Вы писали:

SED>Ссылка не верная — опубликуй пожалуйста еще раз.

SED>А надобность возникает по мере получения опыта. Программист развивается всегда. Поэтому проектируя — нужно "видеть" будующее. В любом случае я не навязываю своем мнение, а делюсь опытом.

Ссылка: http://arbinada.com/modules.php?name=News&amp;file=article&amp;sid=61

Я просто отметил, что только введение дополнительной абстракции к слою данных не спасёт от действительно значительных изменений в структуре БД (которые думаю не так часто происходят. а если и происходят, то наверняка влекут и серьёзные изменения в интерфейсе. ИМХО). А скажем переименование таблицы в БД не обязывает переименовывать её в ДатаСете. Ну или в вашем примере с карточками товара — просто перепешите соответствующий DbAdapter.SelectCommand и всё.

SED>Могу привести пример из жизни. Переписываем большой блок кода из двухзвенки в трех — повышается производительность. И если бы изначально было реализовано как в моем примере — форму бы переделывать не пришлось (де и не только форму). Вместо этого мы просто все переписываем.


Если не секрет, а на чём написано/переписывается приложение?
Главное гармония ...
Re[2]: Устойчивость системы к изменению структуры данных
От: Аким Россия  
Дата: 06.12.05 11:50
Оценка:
B>Ну-Ну... Ты это о чем?
B>Ты открой Enterprise Manager, и поменяй имя таблицы (например SC33 на SC_33 ), и посмотри как у тебя 1С раскорячится!

Ну конфигуратор берёт работу с таблицами на себя слава богу и необходимости в таких действиях не возникает
Re[7]: Устойчивость системы к изменению структуры данных
От: SEDEGOFF Россия www.srcsoft.com
Дата: 06.12.05 11:54
Оценка:
C++ Bulder 6
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Устойчивость системы к изменению структуры данных
От: Mazay Россия  
Дата: 06.12.05 12:09
Оценка:
Здравствуйте, SEDEGOFF, Вы писали:

SED>C++ Bulder 6


Интересно. Думаю что сейчас это выглядит примерно так:
1) Данные (что-нибудь от Accsess до SQL-сервера)
2) Компоненты доступа к данным (что-нибудь от BDE до dbExpress)
3) Формы с TDBEdit'ами (кажется их назывыают db-Aware Control, поправьте пожалуйста)

Если всё так, то почему бы не попробовать воспользоавться MIDAS'ом. Заменить TTable'ы на TClientDataSet'ы и не трогать контролы, на сервере приложений разместить провайдеры данных, попривязывать их к любым ДатаСетам и подсовывать клиентам ожидаемые ими данные.


PS
Сейчас участвую в подобном проекте, пытаюсь реализовать именно такую схему. Раньше с 3-х звенками дело не имел, так что чувствую как ежик в тумане на поле усеяном граблями.
Главное гармония ...
Re: Устойчивость системы к изменению структуры данных
От: OnThink Россия http://vassilsanych.livejournal.com
Дата: 06.12.05 12:21
Оценка: 1 (1)
А ещё хорошо ВСЕГДА использовать хранимые процедуры доступа.
... << RSDN@Home 1.2.0 alpha rev. 619>>
Re[9]: Устойчивость системы к изменению структуры данных
От: SEDEGOFF Россия www.srcsoft.com
Дата: 07.12.05 03:09
Оценка:
M>1) Данные (что-нибудь от Accsess до SQL-сервера)
FireBird
M>2) Компоненты доступа к данным (что-нибудь от BDE до dbExpress)
IBX
M>3) Формы с TDBEdit'ами (кажется их назывыают db-Aware Control, поправьте пожалуйста)
Просто TEdit, про db-Aware Control — не разу не слышал, поэтому сказать ничего не могу

Используется TIBClientDataSet + TIBSQL для коротких запросов и инициализации разных контролов.
С MIDAS никак не общался — ничего сказать не могу. Третье звено выделилось "само" — теперь доводим до ума (как сразу не увидели , не пойму ). В подробности вдаваться не буду, но прирост в производительности по сравнению с текущей системой составил где то в 10 — 15 раз. Это на протатипе. Ну MIDAS посмотрим — мож по более выручка будет
M>Если всё так, то почему бы не попробовать воспользоавться MIDAS'ом. Заменить TTable'ы на TClientDataSet'ы и не трогать контролы, на сервере приложений разместить провайдеры данных, попривязывать их к любым ДатаСетам и подсовывать клиентам ожидаемые ими данные.


M>PS

M>Сейчас участвую в подобном проекте, пытаюсь реализовать именно такую схему. Раньше с 3-х звенками дело не имел, так что чувствую как ежик в тумане на поле усеяном граблями.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Устойчивость системы к изменению структуры данных
От: Mazay Россия  
Дата: 07.12.05 07:28
Оценка:
Здравствуйте, SEDEGOFF, Вы писали:

M>>3) Формы с TDBEdit'ами (кажется их назывыают db-Aware Control, поправьте пожалуйста)

SED>Просто TEdit, про db-Aware Control — не разу не слышал, поэтому сказать ничего не могу

Просто TEdit? Может TDBEdit? Если всё-таки TEdit, то неужели руками реализовывали передачу из Edit1->Text в DataSet ?
А db-Aware controls это и есть все эти TDBEdit, TDBComboBox, TDBListBox ... .

SED>Используется TIBClientDataSet + TIBSQL для коротких запросов и инициализации разных контролов.

SED>С MIDAS никак не общался — ничего сказать не могу. Третье звено выделилось "само" — теперь доводим до ума (как сразу не увидели , не пойму ). В подробности вдаваться не буду, но прирост в производительности по сравнению с текущей системой составил где то в 10 — 15 раз. Это на протатипе. Ну MIDAS посмотрим — мож по более выручка будет

Интересно, а как в прототипе клиенты от сервера приложений отделены, как взаимодействуют ?
Главное гармония ...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.