"горячая" замена бизнес-логики на сервере
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 24.11.10 06:43
Оценка:
Добрый день!


Есть постоянно работающий сервер приложений (FW3.5), у которого хотелось бы поменять какую-то функциональность.
В идеале хотелось бы аналога встроенных процедур на SQL сервере — поменял на лету текст и все.
Мне приходит в голову только грузить сборку с бизнес логикой через reflection и по необходимости выгружать и менять dll, потом загружать обратно. Может быть есть лучший способ?
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re: "горячая" замена бизнес-логики на сервере
От: Lloyd Россия  
Дата: 24.11.10 06:52
Оценка:
Здравствуйте, Sshur, Вы писали:

S>В идеале хотелось бы аналога встроенных процедур на SQL сервере — поменял на лету текст и все.

S>Мне приходит в голову только грузить сборку с бизнес логикой через reflection и по необходимости выгружать и менять dll, потом загружать обратно.

Так просто без приседаний выгружать не получится.

S>Может быть есть лучший способ?


Можно по аналогии с теми же хранимками использовать внутренний скриптовый язык.
Re[2]: "горячая" замена бизнес-логики на сервере
От: Aen Sidhe Россия Просто блог
Дата: 24.11.10 06:59
Оценка:
Здравствуйте, Lloyd, Вы писали:

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


S>>В идеале хотелось бы аналога встроенных процедур на SQL сервере — поменял на лету текст и все.

S>>Мне приходит в голову только грузить сборку с бизнес логикой через reflection и по необходимости выгружать и менять dll, потом загружать обратно.

L>Так просто без приседаний выгружать не получится.


S>>Может быть есть лучший способ?


L>Можно по аналогии с теми же хранимками использовать внутренний скриптовый язык.


Да выгрузить домен, да и всё. Как IIS делает.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[3]: "горячая" замена бизнес-логики на сервере
От: Lloyd Россия  
Дата: 24.11.10 07:05
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

L>>Так просто без приседаний выгружать не получится.


S>>>Может быть есть лучший способ?


L>>Можно по аналогии с теми же хранимками использовать внутренний скриптовый язык.


AS>Да выгрузить домен, да и всё. Как IIS делает.


Это уже приседания, причем достаточно активные, т.к. вам еще нужно будет убедиться, что все используемые вами объекты либо маршалбайрефы, либо сериализуемы и не меняются принимающей стороной.

Хотя скриптовый язык тоже не сахар. Счастья нет.
Re[4]: "горячая" замена бизнес-логики на сервере
От: Aen Sidhe Россия Просто блог
Дата: 24.11.10 07:09
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Aen Sidhe, Вы писали:


L>>>Так просто без приседаний выгружать не получится.


S>>>>Может быть есть лучший способ?


L>>>Можно по аналогии с теми же хранимками использовать внутренний скриптовый язык.


AS>>Да выгрузить домен, да и всё. Как IIS делает.


L>Это уже приседания, причем достаточно активные, т.к. вам еще нужно будет убедиться, что все используемые вами объекты либо маршалбайрефы, либо сериализуемы и не меняются принимающей стороной.


IIS почти ничего не маршалит. Старые запросы обрабатываются старым доменом, после чего домен прибивается. Новые запросы идут в новый домен.

L>Хотя скриптовый язык тоже не сахар. Счастья нет.


Угу, как-то так.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[5]: "горячая" замена бизнес-логики на сервере
От: Lloyd Россия  
Дата: 24.11.10 07:16
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

L>>Это уже приседания, причем достаточно активные, т.к. вам еще нужно будет убедиться, что все используемые вами объекты либо маршалбайрефы, либо сериализуемы и не меняются принимающей стороной.


AS>IIS почти ничего не маршалит. Старые запросы обрабатываются старым доменом, после чего домен прибивается. Новые запросы идут в новый домен.


Судя по формулировке "поменять какую-то функциональность", топикстартеру не очень подходит вариант с выгрузкой домена целиком, т.к. в это случае будет меняться вся функциональность.
Re: "горячая" замена бизнес-логики на сервере
От: cadet354 Россия
Дата: 24.11.10 07:47
Оценка:
Здравствуйте, Sshur, Вы писали:

S>Добрый день!



S>Есть постоянно работающий сервер приложений (FW3.5), у которого хотелось бы поменять какую-то функциональность.

S>В идеале хотелось бы аналога встроенных процедур на SQL сервере — поменял на лету текст и все.
S>Мне приходит в голову только грузить сборку с бизнес логикой через reflection и по необходимости выгружать и менять dll, потом загружать обратно. Может быть есть лучший способ?
используй агенты для логики которую надо на горячую менять.
Можно приседать с app domain:
видео от Ayenda
но подход с агентами я считаю лучше.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re: "горячая" замена бизнес-логики на сервере
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.11.10 08:29
Оценка:
Здравствуйте, Sshur, Вы писали:

S>Добрый день!



S>Есть постоянно работающий сервер приложений (FW3.5), у которого хотелось бы поменять какую-то функциональность.

А что делает "постоянно работающий сервер приложений"?
Если он обрабатывает запросы + просыпается по таймеру, то его вполне можно захостить на IIS и пусть IIS парится с загрузкой-выгрузкой сборок.

S>В идеале хотелось бы аналога встроенных процедур на SQL сервере — поменял на лету текст и все.

Динамическая компиляция на IIS решает, только в medium trust такое сам не сделаешь.

S>Мне приходит в голову только грузить сборку с бизнес логикой через reflection и по необходимости выгружать и менять dll, потом загружать обратно. Может быть есть лучший способ?

Выгружать сборки нельзя, можно только домен выгрузить.
Re: "горячая" замена бизнес-логики на сервере
От: matumba  
Дата: 24.11.10 08:41
Оценка: 6 (1)
Здравствуйте, Sshur, Вы писали:

S>Есть постоянно работающий сервер приложений (FW3.5), у которого хотелось бы поменять какую-то функциональность.


А просто "в лоб" решить, не? Повесить отдельный сервис, который следит за обновлениями и выкачивает. Потом останавливает сервис, перезаписывает модули (причём с возможностью обновить ВСЁ), затем опять запускает. Дай бог это займёт секунду.
Re[4]: "горячая" замена бизнес-логики на сервере
От: Аноним  
Дата: 24.11.10 08:47
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Aen Sidhe, Вы писали:


L>>>Так просто без приседаний выгружать не получится.


S>>>>Может быть есть лучший способ?


L>>>Можно по аналогии с теми же хранимками использовать внутренний скриптовый язык.


AS>>Да выгрузить домен, да и всё. Как IIS делает.


L>Это уже приседания, причем достаточно активные, т.к. вам еще нужно будет убедиться, что все используемые вами объекты либо маршалбайрефы, либо сериализуемы и не меняются принимающей стороной.


L>Хотя скриптовый язык тоже не сахар. Счастья нет.


А что если держать на горячей замене вторую виртуальную машину с новой логикой? Мне знакомый рассказывал как серваки HP стоимостью 10M $ можно из калаша пострелять, а юзеры даже не заметят.

Т.е. средствами сисадмина меняем маршрутизацию с одной машины на другую и готово.. Способ мне и самому кажется странным, но как вариант для МозгоШтурма.
Re[2]: "горячая" замена бизнес-логики на сервере
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 24.11.10 09:41
Оценка:
Здравствуйте, gandjustas, Вы писали:

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


S>>Добрый день!



S>>Есть постоянно работающий сервер приложений (FW3.5), у которого хотелось бы поменять какую-то функциональность.

G>А что делает "постоянно работающий сервер приложений"?
G>Если он обрабатывает запросы + просыпается по таймеру, то его вполне можно захостить на IIS и пусть IIS парится с загрузкой-выгрузкой сборок.

Ну планируется общение с клиентскими машинами либо по ремоутингу либо по WCF. В принципе да, он обрабатывает запросы + просыпается по таймеру. Но он точно не stateless.

S>>В идеале хотелось бы аналога встроенных процедур на SQL сервере — поменял на лету текст и все.

G>Динамическая компиляция на IIS решает, только в medium trust такое сам не сделаешь.

S>>Мне приходит в голову только грузить сборку с бизнес логикой через reflection и по необходимости выгружать и менять dll, потом загружать обратно. Может быть есть лучший способ?

G>Выгружать сборки нельзя, можно только домен выгрузить.

Надо покопать в сторону доменов
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re[3]: "горячая" замена бизнес-логики на сервере
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.11.10 09:48
Оценка:
Здравствуйте, Sshur, Вы писали:

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


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


S>>>Добрый день!



S>>>Есть постоянно работающий сервер приложений (FW3.5), у которого хотелось бы поменять какую-то функциональность.

G>>А что делает "постоянно работающий сервер приложений"?
G>>Если он обрабатывает запросы + просыпается по таймеру, то его вполне можно захостить на IIS и пусть IIS парится с загрузкой-выгрузкой сборок.

S>Ну планируется общение с клиентскими машинами либо по ремоутингу либо по WCF.

И то и другое может быть выставлено endpoint_ами на IIS.

S>В принципе да, он обрабатывает запросы + просыпается по таймеру. Но он точно не stateless.

Без разницы, все равно у тебя состояние должно быть внешним, ибо даже 24/7 не означает что процесс будет постоянно работать.

S>>>Мне приходит в голову только грузить сборку с бизнес логикой через reflection и по необходимости выгружать и менять dll, потом загружать обратно. Может быть есть лучший способ?

G>>Выгружать сборки нельзя, можно только домен выгрузить.
S>Надо покопать в сторону доменов
Не надо, используй IIS.
Re[4]: "горячая" замена бизнес-логики на сервере
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 24.11.10 10:08
Оценка:
Здравствуйте, gandjustas, Вы писали:

S>>В принципе да, он обрабатывает запросы + просыпается по таймеру. Но он точно не stateless.

G>Без разницы, все равно у тебя состояние должно быть внешним, ибо даже 24/7 не означает что процесс будет постоянно работать.

Как так? Именно 24/7 и процесс работает всегда. За исключением простоев во время сбоев.

Внешнее состояние — можно сделать 2 связанных сервиса, один будет данные держать, а другой логику. В принципе тогда и перезапускать можно сколько угодно.


S>>Надо покопать в сторону доменов

G>Не надо, используй IIS.

Ну и в сторону IIS надо покопать)
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re[2]: "горячая" замена бизнес-логики на сервере
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 24.11.10 10:17
Оценка:
Здравствуйте, matumba, Вы писали:

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


S>>Есть постоянно работающий сервер приложений (FW3.5), у которого хотелось бы поменять какую-то функциональность.


M>А просто "в лоб" решить, не? Повесить отдельный сервис, который следит за обновлениями и выкачивает. Потом останавливает сервис, перезаписывает модули (причём с возможностью обновить ВСЁ), затем опять запускает. Дай бог это займёт секунду.


В принципе можно. Но это вопрос методологии скорее. Скажем, пользователи смирятся с простоем из-за перезапуска раз в неделю — но если их дергать каждые 10 минут, взвоют. Сейчас логика в хранимках БД — поэтому все привыкли, что замена идет мгновенно. Сейчас хочется перенести часть логики на сервер, но сразу надо продумать как потом быстро менять функционал.

Ну и чтобы остановка сервиса не секунду займет. Надо будет скинуть в БД состояние, потом при запуске считать кучу справочников и восстановить состояние. На текущем сервисе запуск где-то полминуты занимает. В принципе, это можно решить если всю логику вынести в отдельный сервис.
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re[5]: "горячая" замена бизнес-логики на сервере
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.11.10 10:25
Оценка:
Здравствуйте, Sshur, Вы писали:

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


S>>>В принципе да, он обрабатывает запросы + просыпается по таймеру. Но он точно не stateless.

G>>Без разницы, все равно у тебя состояние должно быть внешним, ибо даже 24/7 не означает что процесс будет постоянно работать.

S>Как так? Именно 24/7 и процесс работает всегда. За исключением простоев во время сбоев.


24/7 означает что приложение всегда обрабатывает запрос, за исключением времени простоя из-за сбоев. Держать процесс в памяти постоянно не нужно.

S>Внешнее состояние — можно сделать 2 связанных сервиса, один будет данные держать, а другой логику. В принципе тогда и перезапускать можно сколько угодно.

Ну так это и будет IIS + SQL сервер.

Не надо изобретать велосипеды в такой задаче.
Re[3]: "горячая" замена бизнес-логики на сервере
От: TK Лес кывт.рф
Дата: 25.11.10 17:34
Оценка: 1 (1)
Здравствуйте, Aen Sidhe, Вы писали:

L>>Можно по аналогии с теми же хранимками использовать внутренний скриптовый язык.

AS>Да выгрузить домен, да и всё. Как IIS делает.

IIS не выгружает домен на каждую перекомпиляцию одиночного aspx файла. Просто, в домене копится мусор в виде неиспользуемого кода (есть счетчик числа компиляций по достижению которого происходит перезагрузка домена).
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.