Потребовалось нам сделать интегратор нашего вэб прилодения со старинным десктопом для этих целей был написан небольшой виндовый клиент. Который худо-бедно умел гонять данные от нас к ним. Но со временем у этого десктопного монстра появилась вэб версия, а у нас задача по интеграции еще и с вэбом. Для усиления эффекта аффекта руководство очень просило сделать единое приложение для интеграции с десктопом и вэбом, да так чтобы его не пришлось переписывать в ближайшем будущем. А в этом самом ближайшем будущем у нас маячила задача про интеграцию с маковской версией этого чудоприложения. Ну и чтобы жизнь малиной не казалась сам процесс интеграции содержит нехилый кусок довольно сложного UI, который очень хочется делать на связке JS + HTML.
На текущий момент пришли к такой схеме:
1) делаем self-hosted web server в виде сервиса и ставим его локально пользователю. На этом сервисе разрешаем кросдоменные запросы..
Этот сервис будет предоставлять REST API к легаси приложению
2) из браузера, из JS работаем с нашим серваком и с self-hosted api.
Получим:
1) более простую имплементацию UI
2) переход на мак это перекомпиляция локального вэб сервера. Что очень легко.
3) прозрачная, практически одинаковая интеграция с десктопом и UI
4) понятное добавление новых интеграции
Но смущает что так никто не делает... Либо я плохо искал и не нашел похожих подходов.
Может есть подводные камни, которых я не вижу?
Есть такая штука nw.js (ранее Node Webkit). Позволяет строить десктопное приложение на базе Node со всей его экосистемой.
При таком подходе получаете общую кодовую базу для всех своих приложений, в вашем случае вы просто запиливаете WebApp и достаточно просто делаете из него десктопное приложение под все платформы.
Здравствуйте, __SPIRIT__, Вы писали:
__S>На текущий момент пришли к такой схеме:
__S>1) делаем self-hosted web server в виде сервиса и ставим его локально пользователю. На этом сервисе разрешаем кросдоменные запросы.. __S>Этот сервис будет предоставлять REST API к легаси приложению __S>2) из браузера, из JS работаем с нашим серваком и с self-hosted api.
__S>Но смущает что так никто не делает... Либо я плохо искал и не нашел похожих подходов. __S>Может есть подводные камни, которых я не вижу?
С чего Вы взяли, что никто так не делает? Я, например, использую Nancyfx+Angularjs (SPA). Собственно, так делают все, кто использует self-hosted веб сервера. А у node.js под енто дело целый стек есть -- MEAN js.
Здравствуйте, __SPIRIT__, Вы писали:
__S>На текущий момент пришли к такой схеме:
__S>1) делаем self-hosted web server в виде сервиса и ставим его локально пользователю. На этом сервисе разрешаем кросдоменные запросы.. __S>Этот сервис будет предоставлять REST API к легаси приложению __S>2) из браузера, из JS работаем с нашим серваком и с self-hosted api.
__S>Но смущает что так никто не делает... Либо я плохо искал и не нашел похожих подходов. __S>Может есть подводные камни, которых я не вижу?
к сожалению делают многие.
это очень красивая схема, только пока это единственное приложение на компьютере пользователя.
как только оказывается что это приложение одно из множества используемых одновременно, так внезапно выясняется что ресурсов компа на всех не хватает. служба в фоне отъедает память с процессором, даже если пользователь "закрыл" ваше и работает, пытается, в другом приложении.
Здравствуйте, Stanislaw K, Вы писали:
SK>как только оказывается что это приложение одно из множества используемых одновременно, так внезапно выясняется что ресурсов компа на всех не хватает. служба в фоне отъедает память с процессором, даже если пользователь "закрыл" ваше и работает, пытается, в другом приложении.
так будет только если открыта страница и десктопная приложение с которым мы работаем. Сам сервис работает, как и любой http сервер работает только если есть запросы на данные.
Здравствуйте, __SPIRIT__, Вы писали:
SK>>как только оказывается что это приложение одно из множества используемых одновременно, так внезапно выясняется что ресурсов компа на всех не хватает. служба в фоне отъедает память с процессором, даже если пользователь "закрыл" ваше и работает, пытается, в другом приложении.
__S>так будет только если открыта страница и десктопная приложение с которым мы работаем. Сам сервис работает, как и любой http сервер работает только если есть запросы на данные.
ну, не знаю. не верю.
например у HP проверялка уровня тонера в картриджах написанная на java и крутящаясяя на tomcat в виде сервиса всегда заметно замедляла всю систему одним своим наличием. а если уж открыто окно браузера....
окно браузера может быть свернуто, могут быть открыты новые вкладки (и про вкладку вашего приложения забыто)... масса сценариев.
Здравствуйте, Sharov, Вы писали:
S>С чего Вы взяли, что никто так не делает? Я, например, использую Nancyfx+Angularjs (SPA). Собственно, так делают все, кто использует self-hosted веб сервера.
есть преимущества перед стандартной реализацией web.api + self hosted?
S>А у node.js под енто дело целый стек есть -- MEAN js.
Здравствуйте, __SPIRIT__, Вы писали:
__S>Здравствуйте, Sharov, Вы писали:
S>>С чего Вы взяли, что никто так не делает? Я, например, использую Nancyfx+Angularjs (SPA). Собственно, так делают все, кто использует self-hosted веб сервера.
__S>есть преимущества перед стандартной реализацией web.api + self hosted?
Фактически тоже самое -- тут (см. справа раздел хостинг)
Здравствуйте, Stanislaw K, Вы писали:
SK>например у HP проверялка уровня тонера в картриджах написанная на java и крутящаясяя на tomcat в виде сервиса всегда заметно замедляла всю систему одним своим наличием. а если уж открыто окно браузера....
дык джава, томкат... базы не хватает. Да и хадуп могли прикрутить... лентяи...
Здравствуйте, __SPIRIT__, Вы писали:
SK>>например у HP проверялка уровня тонера в картриджах написанная на java и крутящаясяя на tomcat в виде сервиса всегда заметно замедляла всю систему одним своим наличием. а если уж открыто окно браузера....
__S>дык джава, томкат... базы не хватает. Да и хадуп могли прикрутить... лентяи...
просто это самый запомнившийся пример, за который хочется найти всех причастных и совершить над ними акт религиозной справедливости.
другие примеры запомнились менее ярко, так как сразу отметались на стадии чтения документации или тестирования, благо почти всегда есть выбор.
Здравствуйте, John1979, Вы писали:
J>Есть такая штука nw.js (ранее Node Webkit). Позволяет строить десктопное приложение на базе Node со всей его экосистемой.
J>При таком подходе получаете общую кодовую базу для всех своих приложений, в вашем случае вы просто запиливаете WebApp и достаточно просто делаете из него десктопное приложение под все платформы.
спасибо, но боюсь из nw.js с кривыми имплементациями COM-объектов будет проблематично работать.
Здравствуйте, Stanislaw K, Вы писали:
SK>просто это самый запомнившийся пример, за который хочется найти всех причастных и совершить над ними акт религиозной справедливости.
а могли еще и оракл тебе влепить на машину... Но ведь это все лишь кривая имплиментация.
SK>другие примеры запомнились менее ярко, так как сразу отметались на стадии чтения документации или тестирования, благо почти всегда есть выбор.
Здравствуйте, __SPIRIT__, Вы писали:
SK>>просто это самый запомнившийся пример, за который хочется найти всех причастных и совершить над ними акт религиозной справедливости. __S>а могли еще и оракл тебе влепить на машину... Но ведь это все лишь кривая имплиментация.
оракел тогда было не модно. кажется оно тащило с собой бесплатный ms sql engine
SK>>другие примеры запомнились менее ярко, так как сразу отметались на стадии чтения документации или тестирования, благо почти всегда есть выбор. __S>Есть варианты сделать по другому?
часто — да, есть.
я не совсем понял условий задачи.
Потребовалось нам сделать интегратор нашего вэб прилодения со старинным десктопом для этих целей был написан небольшой виндовый клиент.
Который худо-бедно умел гонять данные от нас к ним.
Но со временем у этого десктопного монстра появиласьвэб версия, а у нас задача по интеграции еще и с вэбом.
изначально было веб. сделали десктопное. теперь опять веб?
вот это "опять веб" оно самоцель, или с этим приложением будет /одновременно?/ много пользователей работать? само приложение должно стоять именно тут на конкретном хосте, или его можно на любом сервере в удаленный датацентр вынести?
Здравствуйте, Stanislaw K, Вы писали:
SK>изначально было веб. сделали десктопное. теперь опять веб?
легаси десктоп получил вэб версию
у нас был виндовое приложение для их десктопа, которое интегрило наше вэб приложение с легаси десктопом.
SK>вот это "опять веб" оно самоцель, или с этим приложением будет /одновременно?/ много пользователей работать? само приложение должно стоять именно тут на конкретном хосте, или его можно на любом сервере в удаленный датацентр вынести?
1) довольно сложный UI, HTML + JS очень нужен
2) в случае интеграции "наш вэб с их вэб версией" ничего не нужно ставить. В худшем случае ставится маленький, незаметный для юзера, сервис
3) простой перенос между платформами
4) из коробки(либо после легкой доработки напильником) будет работать на мобильниках
5) возможны интеграции с другими системами. В случае вэба будет проще.