Продукты, похожие на Progress AppServers - PullRequest
0 голосов
/ 28 января 2009

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

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

Этот продукт является проприетарным и совместим с другими клиентами, такими как .net.

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

Пример выполнения кода на AppServer.

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

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

Ответы [ 4 ]

1 голос
/ 05 марта 2009

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

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

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

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

1 голос
/ 16 июня 2009

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

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

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

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

0 голосов
/ 16 апреля 2015

Ответ для дальнейшего использования:

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

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

Полный комплект документации 11,5

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

0 голосов
/ 05 февраля 2009

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

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

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

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

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

...