Продукты, похожие на Progress AppServers

Я работаю в Progress ABL и использую то, что мы называем серверами приложений. Серверы приложений, процессы, которые могут взаимодействовать с базой данных Progress и выполнять бизнес-логику на сервере, а затем отправлять ответ обратно клиенту.

Они доступны в 4 режимах, но я больше всего привык к сбросу состояния, который представляет собой сервер приложений, сохраняющий состояние на протяжении всего соединения, и режим без состояния, который представляет собой режим «запустил и забыл».

Этот продукт полностью защищен собственной собственностью и совместим с другими клиентами, такими как .net.

Мой вопрос в том, есть ли какие-либо решения, основанные на чистом .NET, которые делают то же самое. Я не говорю об использовании ASP.net или веб-сервисов, поскольку они решают другую проблему. Я хочу что-то, что может запускать код, который может подключаться к базе данных и передавать ответы без написания моей собственной системы.

Пример запуска кода на AppServer.

определить переменную handleToAppServer как дескриптор без отмены. определить переменную charResponse как символ без отмены.

запустите AppServerProcedure.p на сервере hAppServer (выведите charResponse).


person Jeremy Edwards    schedule 28.01.2009    source источник


Ответы (4)


Я давний разработчик ABL, и я думаю, что это отличный вопрос. Я также использую C#, я люблю и уважаю обе платформы. Но я никогда не понимал, как разработчик C # может делать то, что описывает OP и кажется таким простым в P4GL.

Приведенный выше ответ от p.marino предполагает, что вы можете делать то, что хотите, с SP. Конечно, это часто так, но мы, разработчики ABL, привыкли делать вещи, выходящие далеко за рамки того, чего вы можете достичь с помощью SQL.

Итак, если я хочу написать бизнес-логику на C# и выполнить ее удаленно, но не как SQL SP, какие у меня есть варианты? Может быть, .NET Remoting, веб-службы или .NET Enterprise Services? Я не думаю, что какие-либо из них столь же просты, как серверы приложений ABL, и ни один из них, за исключением, возможно, WS, не имеет большого преимущества.

(Чтобы не показаться фанатиком P4GL, их графический интерфейс просто ужасен, их инструменты отвратительны, а лицензионные сборы довольно непомерны. Я бы написал GUI на C# или Swing поверх P4GL в любое время. Но удаленная бизнес-логика... Я не так уверен).

person GregT    schedule 05.03.2009
comment
Я рассматривал веб-службы, но похоже, что они берут XML-данные и передают их по сети, которая кажется небезопасной и медленной. Можете ли вы убедиться, что это правда? - person Jeremy Edwards; 06.03.2009
comment
Вы можете использовать HTTPS с веб-службами, чтобы избежать проблем с безопасностью. Я уверен, что серверы Progress AppServer передают данные по сети, и даже если они используют двоичное кодирование, это не дает реального преимущества в плане безопасности по сравнению с XML. - person LeBleu; 12.08.2009

Серверы приложений Progress похожи на нейтральные контейнеры db и ui для логики. Они работают сами по себе, а не как часть Oracle или как часть SQL Server или чего-то еще, и им все равно, является ли клиент .NET, Java, WS или зеленым экраном. Им не требуется подключение к базе данных, но они могут подключиться, если им это подходит.

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

Есть еще одна особенность, которая может иметь значение для первоначального вопроса — настоящая причина, по которой программистам Progress нравятся серверы приложений, вероятно, заключается в том, что это дает им единый язык программирования для работы. Если вы начнете использовать хранимые процедуры, вам потребуется использовать язык, отличный от того, на котором вы кодируете свой пользовательский интерфейс. И каждая целевая база данных будет иметь свой собственный язык и его особенности для работы.

(Триггеры выполнения запускаются на клиенте, а не внутри контекста сервера. Так что они не очень похожи на хранимые процедуры.)

person Tom Bascom    schedule 16.06.2009

Честно говоря, я не уверен, что понимаю, в чем проблема.

Если вас беспокоит возможность подключения клиентского приложения к отдельному серверу БД, это на самом деле норма, а не исключение. Просто используйте любой мост JDBC/ODBC, и ваш код будет выполняться на клиенте, при этом только данные будут перемещаться в сеть и из сети.

Если вы хотите, чтобы ваша логика выполнялась на удаленном сервере (ваш пример с вызовом процедуры на именованном AppServer предполагает последнее), то основы те же, т.е. используйте ODBC для подключения к БД. server и переместите большую часть своей логики в хранимые процедуры.

(Я думаю, что то, что вы ищете, в большинстве современных СУБД называется «хранимая процедура»: т. е. полные единицы кода, либо функции, либо процедуры, которые выполняются исключительно на самом сервере БД. Они могут вызываться удаленно клиентами, но использовать память и вычислительные ресурсы на сервере БД).

Это, опять же, довольно стандартный архитектурный выбор при работе с БД. Progress ABL/4GL имеет модель смешанной парадигмы, которая может немного сбить вас с толку (если не изменяет память, APPServers — это процессы, которые работают как своего рода безголовые «суперклиенты», и нет понятия «хранимая процедура», т. е. код выполняться внутри самой БД, за исключением, возможно, триггеров).

person p.marino    schedule 05.02.2009

Отвечаю на будущее:

Да, теперь есть. В OpenEdge 11.5 (выпущенном в декабре 2014 г.) «Pacific AppServer» был включен в качестве альтернативы классическому серверу приложений. Он основан на Apache Tomcat и легче старого.

Смотрите их для получения дополнительной информации:

Полный набор документации 11.5

Представляем PAS для OpenEdge (PDF)

person Jensd    schedule 16.04.2015