Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: Komandor, 15:49 31-03-2024
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Samotek
Просто я не сторонник периодического опроса(в нашем случае по таймеру) т.к. по-моему каждую минуту если все пользователи будут обращаться к серверу для просмотра версии exe, то будет лишняя нагрузка на него. Я хочу чтобы грубо говоря нажал на кнопку и приложение в этот же момент у всех пользователей отреагировало каким либо образом.

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 16:11 10-03-2016
Samotek

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zealotfan

Цитата:
Просто я не сторонник периодического опроса

С базами по другому не получится. Они обычно работают только по запросу. Может в конкретной СУБД что-то есть, но я об этом не знаю...

Всего записей: 2594 | Зарегистр. 18-05-2005 | Отправлено: 16:15 10-03-2016
funnyman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zealotfan
Просто поставьте себя на место человека, который сидит работает, что-то делает и тут бац, ему показывается окно с обратным отсчетом. Это равносильно тому, как если бы вы получили такое от виндовс, мол я перезагружаюсь для уставноки апдейтов и пофиг,что вы там делаете.
Обновления надо проверять и делать либо при старте программы, либо в самом конце.

Всего записей: 106 | Зарегистр. 08-01-2003 | Отправлено: 16:17 10-03-2016
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А СУБД какая?

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 16:26 10-03-2016
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
funnyman
Тут я с Вами соглашусь. Из-за этого и решил посоветоваться с участниками форума. Вижу что много людей использует Delphi и это просто отлично. Жаль только то, что на форумах не сидел раньше
AlexCoRu
Firebird 2.5.2
 

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 07:50 11-03-2016
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Firebird 2.5.2
У него есть евенты и можно узнать активных пользователей.
Вообще-то, я на рабочей БД, тем более на ходу, структу не меняю.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 09:31 11-03-2016 | Исправлено: AlexCoRu, 09:34 11-03-2016
jhtiger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zealotfan
 
Можно написать что-то похожее на сервис уведомлений с использованием Indy. Пример работы с Indy есть в комплекте Delphi.  
Запуск программы на рабочей станции устанавливается коннект с сервисом. Само собой, сервис должен быть всегда запущен на сервере БД.  
Появилось обновление, сервис делает рассылку по клиентам. Сервис по таймеру опрашивает, например, содержимое какой-либо папки на предмет ini файла, который содержит данные об обновлении.
Можно установить флаги, насколько важное обновление:  
  - несрочное (можно продолжить работу до следующего запуска программы),
  - важное  
  - критическое  
ну и т.д.

Всего записей: 194 | Зарегистр. 15-09-2003 | Отправлено: 11:47 11-03-2016
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
В firebird действительно есть таблица с активными соединениями(MON$ATTACHMENTS). Я могу сделать туда delele и разорвать соединения со всеми, но тогда мой телефон оборвётся от звонков и программа однозначно некорректно закроется у клиента. Буду копать в сторону INDY по совету jhtiger

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 12:42 11-03-2016
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zealotfan, Вы случаем не Налогоплательшик ЮЛ или Документы ПУ пишете?

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 14:32 11-03-2016 | Исправлено: AlexCoRu, 14:37 11-03-2016
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zealotfan
Вы же не будете менять структуру базы, когда с ней работают пользователи ? Даже если обновление происходит в рабочее время, всё равно оно сопровождается разрывом всех соединений перед изменением структуры базы.
 
Тогда сценарий такой:  
При запуске приложение проверяет новую версию. Если нужно - обновляется. Безальтернативно. Пользователи же работать пришли, а не фотки в инстаграмм постить. "Мне старое приложение привычнее" - не отмаз.
 
Если обновление структуры базы произошло, когда приложение работает... Происходит разрыв соединения. Приложение изумляется и молча делает реконнект.
 
При любом коннекте, авария или первый запуск - не важно, первое, что делает приложение - проверяет версию структуры вашей базы. Если номер версии незнаком - выводит пользователю требование обновиться и завершает работу.
 
И всё красиво. Никто не лезет к базе с периодическими селектами номера версии. Никто не держит постоянно работающих листинеров для оповещения об отключениях, и никто не работает устаревшим приложением с новой структурой базы.

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 15:32 11-03-2016
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
Нет. У меня проект связанный с электроэнергетикой уже давно работающий. Просто решил избавится от стороннего приложения оповещающего пользователей о необходимости обновления
KDPoid
Иногда времени на изменение дается часа 3 и естественно я меняю структуру базы в рабочее время(когда работаю пользователи). Я уже сегодня попробовал сделать как вы написали(сделать разрыв соединения). У пользователей вышла ошибка и программа закрылась(у транзакций естественно прошел rollback), а при запуске программа обновилась. Вроде бы всё меня устраивает

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 16:24 11-03-2016
funnyman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Иногда времени на изменение дается часа 3

Оно что круглосуточно работает? Если уж делать горячую замену файла/изменения в db, то как мне кажется, перед закрытием коннекта, стоит сохранять текущее состояние. Зависит конечно от критичности данных, которые вводятся, но все же такое аварийное завершение может много нервов оператору поизмотать.

Всего записей: 106 | Зарегистр. 08-01-2003 | Отправлено: 20:04 11-03-2016
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
funnyman
Ты приходишь на планёрку с утра в 8 часов и тебе говорят что сделать и чтобы в 11 уже работало. Естественно я изменяю структуру бд на в своей локальной БД, изменяю проект на своём компьютере, кидаю проект на сервер чтобы все могли обновится и меняю структуру БД на сервере. Как только я изменил структуру нужно всех оповестить о обновлении. Теперь я буду всех удалять из firebird насильно. Думаю ничего страшного не произойдет.  

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 20:51 11-03-2016
funnyman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zealotfan
Да ужж, тогда конечно через дисконнект пользоватлей будет удобней.

Всего записей: 106 | Зарегистр. 08-01-2003 | Отправлено: 21:03 11-03-2016
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
8 часов и тебе говорят что сделать и чтобы в 11 уже работало
Бывает ) Бывает и наоборот, что в 11 говорят, что должно было работать в 8 )

Цитата:
Теперь я буду всех удалять из firebird насильно. Думаю ничего страшного не произойдет.
Ничего страшного, клиент и без помощи админа может потерять коннект ) Но лучше всё-таки сделать shutdown с возможностью доступа sysdba. В ibexpert есть такое и gfix.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 22:41 11-03-2016
ZloyBrawler



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
funnyman
 

Цитата:
Да ужж, тогда конечно через дисконнект пользоватлей будет удобней.

 
Я конечно понимаю, везде задачи разные, но если я вот так вот просто завершу сеанс расчетчице, которая рассчитывает ЗП и делает отражение ЗП в бух учете за месяц на 800+ человек в 1С ЗУП, то она меня точно не похвалит и другие, кто ждет результатов ее работы.  
 
Больно вольные решения отрубать всех насильно.
Если уж и делать отганичения, то выносить их нужно на некий иной уровень.
Например, если это база данных в которой делают документы, то запрещать брать на редактирование документы пока не перезапустишься и не обновишься, все уже ранее открытые документы так уж и быть дать возможность попытаться записать.
 
Не знаю чего трястись за лишние обращения в базе данных за проверкой какого либо флага на обновление.  
1С в своих решениях делает обработчик, который повешен на таймер, там по тику (длительному по времени тику, не каждую минуту), проверяется модифицирована ли база данных (есть специальная платформенная функция) с момента запуска клиента, если база динамически модифицирована, то рекомендуется выполнить перезапуск. Нет никаких проблем.
 
Некоторые виды изменений базы данных, все же требуют остановки работы всех клиентов, для этого есть написанные на самом же встроенном языке обработки, которые рассылают оповещение клиентам и по истечении некоторого времени завершают работу клиента со стороны клиента. Так же параллельно на сервере ставится запрет на новые коннекты (админу дается лазейка на подключение с ключевым словом так сказать), пока администратор или кто еще не применит обновления к базе, после чего запреты на коннект снимаются и пользователи получают возможность продолжить работу. Все гуманно.

Всего записей: 514 | Зарегистр. 19-10-2010 | Отправлено: 23:05 11-03-2016
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZloyBrawler, 1С это сервер приложений.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 00:00 12-03-2016
ZloyBrawler



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexCoRu
Эмммм, 1С это та же программа с такими же коннектами юзеров к базе данных, данные хранятся все в той же MS SQL и иных поддерживаемых 1С.
Изменение базы так же может привести к поломке алгоритмом работающей с ней, потому там при модификациях структуры базы и приходится гонять пользователей, а иного выбора и нет особо. Все направлено на стабильную работу и как правило именно платформа обязывает отрубать юзеров, а иначе не применит изменения к базе. Сначала гонишь юзеров из базы, применяешь изменения, даешь добро на вход. Так как там нет классической установки программа на машины клиентов, то при повторном подключении у юзеров работате последняя версия клиента, ну или правильнее сказать конфигурации, так как клиент там просто исполняющая среда, которой пофиг что за конфигурация в базе крутится.  
 
Ну это все 1С, там все свое, и язык и методика программирования, говорим же сейчас об насильственном отрубании пользователей, это все не хорошо, не нужно ввергать их в шок, так как не все стараются как можно чаще сохранять проделанную работу.

Всего записей: 514 | Зарегистр. 19-10-2010 | Отправлено: 00:24 12-03-2016
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZloyBrawler
У меня в программе никто не обидеться на то, что программа потеряла коннект, т.к. когда происходят сложные расчёты, обмен информацией с другими организациями и т.д. дисконнекта я естественно делать не буду и каких либо изменений. А вот в случае когда идет занесение какой либо информации по потребителю можно сделать дисконнект без последствий.  И опять же эти задачи(требуемые решения в течение дня) не каждый день.

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 06:20 12-03-2016
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZloyBrawler
По разному бывает...
Вот обеспечиваете вы сервис 24х7, с работоспособностью, к примеру, 99.6%
Это даёт вам три часа на обновление в месяц.
Но как бы вы не предупреждали о регламентных работах в ночь на воскресенье, обязательно найдутся те, кто в субботу вскочит с воплем "забыл сделать отчёт, а в понедельник сдавать", те кто забыл выключить приложение на выходные и т.д...  
Поэтому да, процедура обновления должна предусматривать насильное отключение пользователей, а не ждать, когда все соизволят выйти.
 
Часто работодатель решает экономить на тестерах, если это внутренняя разработка для своих нужд. Тестирование разработки производится на живых людях. Значит обновление обязательно должно производиться в рабочее время, когда максиамальное количество подопытных и разработчиков на месте. И тогда хоть запишись "прошу в 11 прекратить работы". В 11 важное завершат. И продолжат делать то, что не очень жалко потерять, если что...
 
Как оно там у zealotfan-а, кто его знает. Может "вырвать провода" - самый разумный выход.
 
 
Про регулярный опрос версии.
Это плохо, потому что добавляет точку отказа. Вот случается что-то посреди дня. Номер версии повреждается или становится недоступен для клиентов. Если у вас он проверяется при старте, большинство уже работает и не заметит, если вы за час всё восстановите. Если у вас номер версии проверяется раз в минуту... У вас минута до массового отказа по всей конторе.
 
Из таких мелочей и складывается стиль жизни...  
Сидите на унитазе, из-за двери заполошно орёт молодой: "ой, я случайно проапдейтил номер версии в базе". И оказывается, что есть у вас время спокойно застегнуться или нужно выпрыгнуть из портков и нестись к ближайшему компу - это архитектурное решение, которое было принято год назад.
Достаточно ли будет новичку выслать описание структуры базы или нужно каждого обучать регламенту внесения изменений и экзаменовать под роспись "обязуюсь соблюдать", -  складывается из таких мелких решений.
 
"...разруха не в клозетах, разруха в головах..."

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 08:42 12-03-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru