17.06.2023 22:22
FinSoft
 
В мире клариона есть популярная библиотека, которая называется NetTalk Web Server (NTWS). С большой долей вероятности, она скоро появится и у меня в пуле инструментов разработки. В основе NTWS лежит положение, что в качестве веб сервера может выступать обычное win32 приложение. Условно говоря, в одном exe собирается веб сервер и прикладная бизнес-логика. NTWS разрабатывается с 2005 года и в настоящее время работает устойчиво на множестве серверов в реальном мире. Разработкой занимается южноафриканская фирма CapeSoft.

Главный смысл NTWS это использовать имеющиеся наработки в области настольных приложений и выносить определенный функционал в виде веб приложений. Настольные и веб приложения могут работать с одними и теми же базами данных параллельно. Кроме этого, в веб приложении могут использоваться те же самые библиотеки (кроме тех, которые выводят сообщения на экран), что и в настольном приложении, а также общие бланки печатных форм. Интерфейсная часть, конечно, для веб приложения разрабатывается отдельно. Важно, что сохраняется привычная методология разработки с применением автоматической генерации кода, для бизнес-логики используется компилируемый язык со строгой типизацией данных и верификацией ошибок. Ни при разработке, ни при эксплуатации не требуется устанавливать дополнительное ПО, соответственно, практически не требуется специальное администрирование при умеренном количестве пользователей, как и в настольных системах. Только открыть/пробросить порт.

Структурно NTWS состоит из коммуникационного слоя (библиотеки классов) и NTWS Template Framework. Написано все полностью на кларионе. Библиотека классов поставляется в виде готовой dll, которая требует лицензирования на разработчика (разовый платеж, обновления продаются со скидкой), сервера можно развертывать без ограничений. Шаблоны (фреймворк) открыты, можно адаптировать и расширять на свое усмотрение, максимально автоматизируя процесс разработки под свои нужды. Для создания простых типовых веб приложений знание вебовских языков не обязательно (в том числе html и css). К ним можно прибегать по мере необходимости, при углубленной разработке. Со стороны веб браузера используется jquery (jQuery UI). В проекте на NTWS можно подключать модули на javascript и php. Последний, конечно, в этом случае придется установить.

С точки зрения нагрузки, NTWS спроектирован на возможность одновременной работы нескольких тысяч пользователей, как и мэйнстримные веб сервера.
В реальном мире некоторые разработчики используют NTWS для бизнес-логики, а интерфейсную часть делают отдельно на javascript. Например, есть подобный проект на связке NTWS и ExtJS, который создавался лет 10 назад, когда ExtJS был бесплатным. Пару месяцев назад на ClarionLive был вебинар с выступлением CEO одной американской компании, разрабатывающей ERP систему. Они также интерфейсную часть пишут отдельно на javascript (занимаются несколько программистов). В выступлении было много интересной информации про опыт развертывания облачной ERP системы. В частности, про схему балансировки нагрузки с помощью пула портов и на нескольких физических компьютерах, установке обновлений и т.п. Были также озвучены цифры о предпочтении клиентов - около 60% готовы использовать облачную версию системы, 40% предпочитают настольный вариант по соображениям приватности.

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

Для конкретики приведу несколько скриншотов, поясняющий работу данной технологии.



Так выглядит типовое веб приложение на NTWS. Накладна с табличной частью. Все, конечно, русифицируется. Про дизайн говорить не приходится, просто стандартные схемы с меню, таблицами данных и формами редактирования. Если нужен более презентабельный интерфейс, то надо уже задействовать вставки фрагментов кода на вебовских языках. Поскольку основная рубка за использование имеющихся наработок и скорость сборки работающих веб приложений, на первых порах можно особо не заморачиваться.



Так выглядит типовое окно работающего веб сервера. Оно содержит диагностические сообщения и статистику работы. Окно это можно перепроектировать на свое усмотрение, это обычный диалог win32.



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



На этом скриншоте показана настройка просмотра списка накладных. Видно, что все делается параметрически, без написания ручного кода. К ручному коду прибегаем только тогда, когда без этого не обойтись. В шаблонах NTWS нет оконного дизайнера. Я не думаю, что это замедляет разработку, для веб приложений часто без него обходятся.
17.06.2023 22:24
Капитан О.
 
NTWS - это встраиваемый веб-сервер, который использует библиотеку N для проброса порта и php для обработки запросов. Он спроектирован на возможность работы с большим количеством пользователей, что делает его подходящим для бизнес-логики, а интерфейсную часть можно отделить на другую систему. Также он может использоваться в схеме балансировки нагрузки с помощью пула портов и на нескольких физических компьютерах, а также для установки обновлений. Некоторые клиенты предпочитают облачную версию системы, другие - настольный вариант из соображений приватности.
17.06.2023 22:37
FinSoft
 
Цитата:
Капитан О. NTWS - это встраиваемый веб-сервер, который использует библиотеку N для проброса порта и php для обработки запросов. Он спроектирован на возможность работы с большим количеством пользователей, что делает его подходящим для бизнес-логики, а интерфейсную часть можно отделить на другую систему. Также он может использоваться в схеме балансировки нагрузки с помощью пула портов и на нескольких физических компьютерах, а также для установки обновлений. Некоторые клиенты предпочитают облачную версию системы, другие - настольный вариант из соображений приватности.
Почти все правильно, кроме php. Запросы обрабатывает приложение, написанное на кларионе. Модули (фрагменты) на php могут применяться опционально (также как и javascript). Я этого не пробовал, только читал. Эти фрагменты пропускаются через процессор php и включаются в выходной поток вместе с остальным. Это может быть полезно для взаимодействия с разными внешними сервисами, которые предоставляют пример готового кода на php. С другой стороны, никто не запрещает, как в win32 приложениях, исполнять php скрипты, расположенные на хостинге разработчика, без локальной установки php.
17.06.2023 23:11
OlegON
 
Если бы я был архитектором, то настоятельно бы рекомендовал избавляться от любой идеи делать веб-сервер на Win32.
Даже в случае проксирования внутрь с чего-то нормального, вроде nginx. Не поймите неправильно, но очень большие сомнения по поводу "множества серверов", где это уже работает. И тем более бы однозначно бы не стал совмещать веб-сервер и саму логику приложения в одном исполняемом файле просто по соображениям безопасности.
18.06.2023 09:48
FinSoft
 
По вопросам безопасности NTWS можно погуглить nettalk web security, выдаст статью с сайта разработчика. Насколько я знаю, проблем там особых не возникало, иначе бы такая информация всплыла. У нас достаточно закрытое комьюнити, многие заочно знакомы, отзывы про NTWS только положительные.

Целесообразность NTWS надо рассматривать только с позиции использования ранее накопленного опыта. Работающие у клиентов настольные приложения никуда не денутся, все привыкли, деньги на этом стабильно зарабатываются, все довольны. Но все чаще появляются потребности размещения части функционала в сети. Из того, с чем я сталкивался, интернет магазины, личные кабинеты для системы лояльности (то есть коммуникация с людьми за пределами компании), коммуникации внутри компании, например, отслеживание процесса изготовления заказов на производстве в сети мебельных салонов, проблем трекер для службы ИТ в торговых сетях. В этих ситуациях удобство веб приложений в том, что можно работать с разных девайсов. Например, у нас в сети продуктовых магазинов заказы на собственное производство заведующие делают с компьютеров в магазинах, но иногда и из дома, с планшета или смартфона. Чтобы обеспечить таким функционалом, я использую core php, размещая на обычном юниксовом хостинге у провайдера. Эти модули не самостоятельные, а работают в режиме автоматического обмена с настольными системами. Основная проблема там в том, что я не могу разрабатывать на core php с такой же простотой и легкостью, как настольные приложения. Я смотрел разные cms и фреймворки, но это совсем другой мир, требующий много времени на вхождение и осмысление, которого нет. Использовании NTWS позволяет создавать функционал быстро и практически привычным способом, где уже знаешь все тропы и подводные камни. Технологический процесс несколько отличается, но адаптироваться требует намного меньше времени и сил. К сильной стороне по сравнению с обычными веб фреймворками относится использование компилируемого языка с жесткой типизацией данных (значительно снижает вероятность ошибок в коде) и возможность привычного наращивания автоматизации разработки с помощью темплейтов. То есть, по сути, нет потребности в использовании скриптовых языков, интерфейсную часть (где они задействуются) можно практически полностью закрыть автоматической генерацией кода.

Еще я знаю случай комбинированного использования NTWS и облачной фермы серверов на tsplus (который позволяет запускать настольные приложения в веб броузере, но требует много ресурсов сервера по памяти для работы). То есть таким путем снижают нагрузку, вынося отдельный функционал на встроенный веб сервер, который работает с теми же данными, что и настольное приложение. Эта фирма имеет облачную ферму из 10 серверов, предоставляет услуги хостинга для местного легального бизнеса в Техасе.
Еще относительно недавний случай по NTWS. Один коллега из Бразилии написал, что у него есть давно используемое настольное приложение для определенного вида ритейла и, соответственно, довольно много пользователей. На него вышла крупная компания, которая скупает подобные проекты вместе с клиентской базой, и предложила выгодную сделку. Но условием поставило, что приложение должно иметь веб интефейс. Этот коллега, после общения в группах, приобрел лицензию на NTWS и в течении месяца при прямой поддержке разработчика NTWS, реализовал поставленную задачу. Потом высказал публичную благодарность, как я понял, сделка состоялась.
18.06.2023 11:12
OlegON
 
Не хотелось бы опять спорить, но как минимум один CSE я видел, да и в целом мир уже давно понял, что веб-сервер - это не для винды. Продажа с просто галочкой "есть веб-морда" и реальная эксплуатация, особенно в открытом вебе - очень разные вещи... Стоит этой библиотеке получить значимое распространение, особенно в связке с такими чувствительными данными и такое начнется...
18.06.2023 11:38
FinSoft
 
Да я и не возражаю, тоже так считаю. В данном случае речь идет про конкретную ситуацию. Есть у меня работающая настольная система, выглядит неплохо достучаться к ее данным из веб браузера. В режиме просмотра, возможно, вносить изменения в какие-то отдельные таблицы. При этом не надо устанавливать никаких серверов, просто запустить свое же небольшое приложение на компьютере в локальной сети. Добавим сюда, что это приложение создается с помощью привычного и понятного инструмента, то есть быстро и практически сразу баг фри.
Честно говоря, я пока еще не придумал, что целесообразно делать с использованием встроенного веб сервера. Есть некоторые соображения, сейчас консультируемся с клиентами. Те модули, которые реализованы на core php, переводить на встроенный веб смысла нет, они отлажены и хорошо работают на юниксовом хостинге. Чисто по интуиции, иметь в арсенале NTWS очень неплохо, расширяет потенциальные возможности и позволяет использовать имеющиеся наработки.
Часовой пояс GMT +3, время: 12:58.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.