Пара гвоздей в гроб html browser-based приложений

User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Gennadiy wrote:
Dmitry67 wrote:Дык если бы самописные приложения то проблем бы небыло бы
Клиент - IE

Мы пару лет назад делали такого киента. Полноценный statefull клиент, работающий в IE и Netscape. Есть такая технология ActiveX (для Нетшкафа - plugin-s).
Был полноценный state на киенте. Плюс был state на сервере (на каждого клиента свой - маштабировалось прекрасно). Никакого HTML програмирования ублюдочных клиентских скриптов. Rich GUI интерфейс (realtime updates, графика, docking windows, никаких "вперед/назад"). Честный HTTP для прохождения прокси и фаерволов.
7000 клиентов, клиентская часть поддерживала до 1000 обменов в секунду, сервера до 1 млн меседжей в секунду.
Так что все можно было и раньше сделать. Не без усилий конечно.


Хе хе.
И что делал браузер в этом натюрморте?
Работал downloader-ом? :mrgreen:
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Seryi wrote:
A. Fig Lee wrote:а в чем там принципиальная разница с апплетами? вендор другой?


Принципиальной разницы я не вижу.
А в мелочах - не сомневаюсь что Микрософт сделает (я даже скажу, что уже сделал) ГУИ в .NET реально быстрым, симпатичным и привычным пользователям, а не таким убогим как джавовский ГУИ.
Как я говорил раньше - я считаю что идея Java-апплетов была великолепной и провалилась во многом из-за отвратной реализации ГУИ в Java-машине.


Вы очевидно, не видите разницы - делать ГУИ для одной архитектуры или для многих, генерик.
как пример Ява апплетов - ремоте косоли для доступа к клавиатуре, скрину, делают на Ява. Реал-тайм квоты апдейтс с маркета, потом разные тестовые аппликации для сдачи тестов, etc..
Пока МС не сделал ничего для другой ОС, так что..
Верить нельзя никому - даже себе. Мне - можно!
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Dmitry67 wrote:Форум не тянет на Web приложение, слишком прост
Клик на странице и читаете минуту
Для WEB приложений характерно высокая степень интерактивности (обращение к серверу раз в две секунды, раз в секунду или чаще), очень сложная логика, и вследствие жтого отсутствие клавиш Вперед Назад, которые становятся бессмысленными

А что касается количества коннекций то неужели 6000 threads не потянуть ?


Вы не путаете веб-приложение с клиент-сервер технологией? Зачем Вам вообще веб? Делайте отдельное Виндовс приложение. В чем пойнт?
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

Strannik223 wrote:Хе хе.
И что делал браузер в этом натюрморте?
Работал downloader-ом? :mrgreen:

Где-то так. Статические старницы, help, deployment.
Главное конечно он создавал у юзера впечатление что ему на компьютер ничего не инсталируют :mrgreen:
Получался такой невявный Windows Update :wink:
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Dmitry67 wrote:
Strannik223 wrote:Проблемы statefull:

1. Ни клиент ни сервер могут быть не в состоянии определить что другой из них закрыл сессию. Например из за недоступности сети.

2. Большое количество клиентов быстро истощат память сервера своими данными. И не надо считать сколько памяти занимает поток, не много. А вот данных клиент может держать на сервере вобщем случае неопределенный объем. Множим количество клиентов на размер состояния, и получаем полную неопределеннось в потребности сервера в памяти.

3. Клиент может долгое время оставатся бездействующим занимая память на сервере своими данными.

4. Оно не масштабируемо. Сложно построить server farm. А утверждение о том что один сервер справится с любой нагрузкой...
Может сейчас и справится, а через год?


1. А как жто делается сейчас ? Примитивный timeout, и все
2. Нет. я как раз потребую цифр
Практика моей работы показывает что перовым истощается CPU на сериализации а не память
3. Система виртуальной памяти автоматически (и на пааратном уровне) решает эту проблему
4. Почему ? Вы можете поставить в ряд несколько серверов. Да, коннекция не может перепрыгнуть с сервера на сервер. Ну так для https она и так не может перепрыгнуть


1. Почему примитивный, а не простой? :)
Мысль была в том что для таймаута не надо спецобработчик делать, он сам по себе работает. А для постоянного соединения надо что то програмить, тестировать, а в первой итерации обычно на такие "мелочи" забивают...

2. Просто думал что это очевидно.
N*M где N-количество залогиненых клиентов, M - средний объем данных состояния одного клиента.
Если количество клиентов принять за константу, например ограничив их в документации, то с M сложнее, вы никогда заранее не знаете какова эта величина. То есть можно предполагать что то, но всегда есть высокий риск того что релиз не уложится в границы, в результате будешь объяснятся с разьяренным менеджером продукта "ты же обещал и подсчитывал что оно выдержит X клиентов!!! при таком-то железе"

У нас разные практики :) У меня сериализация ничтожно малая величина, основная задержка - sql. Упреждающе: хранимки я писать умею! Возможно надо делать custom serialization?

3. Своп спасает от простаивающих клиентов, но если они активны... система будет свопом заниматся. Например клиент делает действие раз в 2 минуты. Достаточно характерно для офисного приложения.

3. Да, так можно и я даже так делал. Конструкция получается не так гибкой как хотелось бы. Нельзя динамически балансировать нагрузку (роутить каждый запрос индивидуально например), и т д.
<added>
Тяжело (но реализуемо) shutdown сервера, клиент должен быть достаточно умным что бы перелогинится.
</added>

Далее, если вдуматся то IP то же является session-based. В качестве идентификатора сессии выступает пара IP/port. ОС по своей таблице открытых соединений роутит пакеты приложению кторое заявило что слушает этот порт на этом IP. Вам это ничего не напоминает? :) Например lookup of Session table.

В общем и целом я согласен с тем что тонкий клиент, то есть web browser очень ограничен и следующий виток эволюции идет к ренесансу client-server.

Возможно свежую волну и спасение браузера принесет SVG-1.2 и его вариант от МС- XAML.
Last edited by Strannik223 on 28 Apr 2004 02:20, edited 1 time in total.
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

A. Fig Lee wrote:Вы не путаете веб-приложение с клиент-сервер технологией? Зачем Вам вообще веб? Делайте отдельное Виндовс приложение. В чем пойнт?

Поинт в том, что в нынешние времена даже там где очевидно нужно клиент-серверое приложение с богатым GUI, все равно лепят веб. Мода такая сейчас.
Клиент говорит - хотим мол веб. А програмистам мучаться с этим. Вот Дмитрий свои мучения и описывает.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Gennadiy wrote:
A. Fig Lee wrote:Вы не путаете веб-приложение с клиент-сервер технологией? Зачем Вам вообще веб? Делайте отдельное Виндовс приложение. В чем пойнт?

Поинт в том, что в нынешние времена даже там где очевидно нужно клиент-серверое приложение с богатым GUI, все равно лепят веб. Мода такая сейчас.
Клиент говорит - хотим мол веб. А програмистам мучаться с этим. Вот Дмитрий свои мучения и описывает.


и правильно делают! Если клиент заведомо известно что работает на Виндовс и готов инсталлировать всякие АцтивеХ - тады да. Но ето редкий слушай. как правило клиенты и их платформа неизвестна. к тому же при вебе можно иметь доступ с любого компьютера, даже будучи в командировке, в библиотеке.
Я щитаю ето более важно, чем красивые буковки.
А Дмитриы явно по клаент-сервер скучает, при чем здесь веб?
Верить нельзя никому - даже себе. Мне - можно!
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Кстати, I даут Х11 стетлесс. Иначе весь екран перерисовывался бы.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

A. Fig Lee wrote:и правильно делают! Если клиент заведомо известно что работает на Виндовс и готов инсталлировать всякие АцтивеХ - тады да. Но ето редкий слушай.

Это как раз самый распостраненный случай. Какой процент у нас Виндов на клиентских машинах? 95%? 98%?
Среди наших клиентов (мы их не подбирали) только 3% использовали НЕ Internet Explorer (который по определению на Windows). Мы статистику собирали.
как правило клиенты и их платформа неизвестна. к тому же при вебе можно иметь доступ с любого компьютера, даже будучи в командировке, в библиотеке.
Я щитаю ето более важно, чем красивые буковки.

Это вопиюще неверно. Существуют тысячи приложений где важно совсем другое. Я бы даже сказал их большинство.
Как вы представляете себе систему с havy realtime на HTML?
Или видел я decision cube в HTML - печальное зрелиже. Приучает к терпению.
Список можно продолжать и продолжать.
А Дмитриы явно по клаент-сервер скучает, при чем здесь веб?

Клиент сервер явно рано похоронили. И даже классический multi-tier не отрицает толстого клиента.

Отдельный вопрос о том как пишутся в большинстве своем веб-приложения. Никакого наукообразия, хак на хаке, ужастные клиентские скрипты без типизации. Откройте любую достаточно навороченую веб страницу - она же АБСОЛЮТНО не читабельная. А отладка? Брррр.....
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Gennadiy wrote:
A. Fig Lee wrote:и правильно делают! Если клиент заведомо известно что работает на Виндовс и готов инсталлировать всякие АцтивеХ - тады да. Но ето редкий слушай.

Это как раз самый распостраненный случай. Какой процент у нас Виндов на клиентских машинах? 95%? 98%?

Ето я согласен. Только вот ActiveХ поставить я бы не дал! Ето хуже чем отдельное приложение.

Это вопиюще неверно. Существуют тысячи приложений где важно совсем другое. Я бы даже сказал их большинство.
Как вы представляете себе систему с havy realtime на HTML?
Или видел я decision cube в HTML - печальное зрелиже. Приучает к терпению.
Список можно продолжать и продолжать.

На Ява апплет. по-моему, с маркетватч у меня работала отлично.

Клиент сервер явно рано похоронили. И даже классический multi-tier не отрицает толстого клиента.

Отдельный вопрос о том как пишутся в большинстве своем веб-приложения. Никакого наукообразия, хак на хаке, ужастные клиентские скрипты без типизации. Откройте любую достаточно навороченую веб страницу - она же АБСОЛЮТНО не читабельная. А отладка? Брррр.....

Тут я полностью согласе, что клаент сервер вполне еще, и веб приложения пишутся частенько нечитабельно.

Ну дак мода... У МС всегда мода.
Верить нельзя никому - даже себе. Мне - можно!
Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

Даешь holy wars ! (или уже была?)
Что лучше всего для на сегодня (и на послезавтра) для веб-приложений?
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Sergey___K wrote:Даешь holy wars ! (или уже была?)
Что лучше всего для на сегодня (и на послезавтра) для веб-приложений?


HTML. На худой конец апплет.
ActiveX - там могут быть всякие зависимости, регистрации, длл версии и прочая головная боль.
Верить нельзя никому - даже себе. Мне - можно!
Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

HTML. На худой конец апплет.
Я бы еще ВебСервисы добавил. А как вызывать ВебСервисы из javascript?
Я тут нашел http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/downloads/samples/internet/behaviors/library/webservice/default.asp
Это "цивилизованный" путь?
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Sergey___K wrote:
HTML. На худой конец апплет.
Я бы еще ВебСервисы добавил. А как вызывать ВебСервисы из javascript?
Я тут нашел http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/downloads/samples/internet/behaviors/library/webservice/default.asp
Это "цивилизованный" путь?


Since ето генерик, а не партикулярная аппликация, ИМХО, ето явно лучше ActiveX.
инсталируешь один раз, если чего - по крайней мере всегда известно кто виноват. :mrgreen: :mrgreen:
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

A. Fig Lee wrote:Ето я согласен. Только вот ActiveХ поставить я бы не дал! Ето хуже чем отдельное приложение.

Чем?
На Ява апплет. по-моему, с маркетватч у меня работала отлично.

Так это то же самое только в профиль. Какая разница что выполняет код java VM или .NET framework? Но ведь HTML там и близко не лежал. Как и клиентские скрипты. Только что в броузере хостится. А так ведь отдельное приложение. Вы этот аплет можете как отдельное приложение на раз запустить.
Тут я полностью согласе, что клаент сервер вполне еще, и веб приложения пишутся частенько нечитабельно.
Ну дак мода... У МС всегда мода.

Ну мы задались целью написать веб приложение читабельно. Красивенько так что бы было, по науке. Через неделю работы столкнулись с тем, что для какой-то необходимой функциональности пришлось применить грязный трюк. Потом еще раз. И еще. По науке ну никак не выходило. К концу оказалось то же что и у других. :pain1:
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Gennadiy wrote:
A. Fig Lee wrote:Вы не путаете веб-приложение с клиент-сервер технологией? Зачем Вам вообще веб? Делайте отдельное Виндовс приложение. В чем пойнт?

Поинт в том, что в нынешние времена даже там где очевидно нужно клиент-серверое приложение с богатым GUI, все равно лепят веб. Мода такая сейчас.
Клиент говорит - хотим мол веб. А програмистам мучаться с этим. Вот Дмитрий свои мучения и описывает.


Это не мода, а непонимание некоторыми програмистами потребностей заказчиков.
Если ваши заказчики разнообразны то уговорить всех поставить вашу application + runtime support (*.dll, Framework, ADO, BDE bla-bla) не просто.
Я как пользователь скажу, прочитав что надо кучу софта поставить что бы простенькую задачку выполнить "да пошли они, вон те за углом то же самое делают и я могу это из браузера запустить".

Хотя как програмисту вам работы меньше конечно же :)
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Sergey___K wrote:
HTML. На худой конец апплет.
Я бы еще ВебСервисы добавил. А как вызывать ВебСервисы из javascript?
Я тут нашел http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/downloads/samples/internet/behaviors/library/webservice/default.asp
Это "цивилизованный" путь?


Проверено электорникой, работает на ура.
Я с его помощью около 5К JavaScript кода с клиента выбросил!
Рекомендую. У мозилки то же есть возможность такая, но я не пробовал реально.
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Gennadiy wrote:
A. Fig Lee wrote:Ето я согласен. Только вот ActiveХ поставить я бы не дал! Ето хуже чем отдельное приложение.

Чем?

Опасней. имеет интерфейс, можно из браузера вызвать. А аппликейснх, не КОМ а обычная - лежит пока не кликнешь.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

Strannik223 wrote:Это не мода, а непонимание некоторыми програмистами потребностей заказчиков.


:radio%:
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Gennadiy wrote:Ну мы задались целью написать веб приложение читабельно. Красивенько так что бы было, по науке. Через неделю работы столкнулись с тем, что для какой-то необходимой функциональности пришлось применить грязный трюк. Потом еще раз. И еще. По науке ну никак не выходило. К концу оказалось то же что и у других. :pain1:


А что за проблемы такие?
У меня не то что бы проблем не было, но к чему то что грязным хаком назвать можно не приводило.
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Big Cheese wrote:Максимальное количество threads в Win32 процессе можно грубо прикинуть, разделив доступный virtual address space процесса (обычно - 2GB, в военное время может достигать 3GB) на thread stack size (в VC++ по умолчанию 1MB, если мне память не изменяет). Т.е примерно до ~2000 threads наплодить можно, только такая система будет плохо масштабируемой, как мне видится...


А что, весь 1MB сразу выделяется ?
Я сейчас зашел на сервер, он показывает в спокойном состоянии 1300 threads. В Военное время я видел до 5000-6000 threads...
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Strannik223 wrote:N*M где N-количество залогиненых клиентов, M - средний объем данных состояния одного клиента.
Если количество клиентов принять за константу, например ограничив их в документации, то с M сложнее, вы никогда заранее не знаете какова эта величина. То есть можно предполагать что то, но всегда есть высокий риск того что релиз не уложится в границы, в результате будешь объяснятся с разьяренным менеджером продукта "ты же обещал и подсчитывал что оно выдержит X клиентов!!! при таком-то железе"


Собственно, все windows программы так и работают... При неизвестном M.
P.S. А где кстати Вы храните viewstates ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

По поводу остального - да, основная причина "чтобы ничего не надо ставить"
Самое смешное что для подключения к сайту нужно втыкать в USB card reader от Gem, ну и соответственно ставить софт от Gem, но это 'не считается' :)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

Dmitry67 wrote:А что, весь 1MB сразу выделяется? Я сейчас зашел на сервер, он показывает в спокойном состоянии 1300 threads. В Военное время я видел до 5000-6000 threads...

Так как диапазон виртуальных адресов под один конкретный стек потока должен быть непрерывным, то его приходится резервировать весь и сразу. Однако по умолчанию это диапазон действительно коммитится по мере необходимости. Поэтому проблема с ограничением на количество потоков заключается в ограниченном архитектурой процессора максимальном размере виртуального адресного пространства процесса для "плоской модели" 32 битного Intel - 4 GB. В общем, если хочется иметь больше, чем ~2000 потоков, то для стеков потоков нужно резервировать меньше, чем умольчальный 1 meg.
Cheers
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

tengiz, вспоминается что на VAX вообще не было ограничения по стеку. То есть он и аллокировался по необходимости (по page faults), и рос не обязательно непрерывно физически (но конечно непрерывно в физическом адресном пространстве).

А то что я видел столько threads... похоже это было от SQL servers... Очевидно те ребята которые писали SQL server знали про мегабайт :)

Вообще я не знал о таком ограничении. А в Пингвинах как с этим ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014

Return to “Вопросы и новости IT”