Прогресс 4GL и .Net - PullRequest
       7

Прогресс 4GL и .Net

1 голос
/ 18 января 2010

Я пытаюсь получить данные из базы данных Progress 4GL в SQL Server.

В идеале я хотел бы сделать это напрямую и в .NET, а не через драйвер ODBC, так какДрайвер ODBC в Progress не поддерживает многоядерные системы (по крайней мере, в той версии, которая у нас есть).

Знаете ли вы, как подключиться к базе данных Progress 4GL из .NET (в идеале в C #, но ям гибкий здесь ...;))?

Ура

Ник

Ответы [ 6 ]

2 голосов
/ 18 января 2010

Если вы используете Progress OpenEdge версии 10.2 или выше, вы можете встраивать элементы управления .NET непосредственно в программу 4GL. Но это было бы все равно, что мухи кататься на санках ... И даже если бы это был не Progress 4GL (язык программирования), он агрессивно однопоточный и не будет поддерживать многопоточные элементы управления .NET.

Оба ядра 4GL и SQL-92 (Progress поддерживает 2 различных интерфейса с механизмом хранения) являются многопоточными и очень рады использовать столько ядер, сколько у вас есть.

Однако вы можете иметь лицензионное ограничение - лицензия «рабочая группа» использует алгоритм параллелизма на основе семафоров в версиях 9 и более ранних версий 10. (Более поздние версии используют очень ограниченный мьютекс (спин-блокировка).) У базы данных «Enterprise» таких ограничений нет.

Или возможно, что целевая система просто не была настроена для поддержки нескольких соединений ODBC (администратор БД должен знать, ключевые параметры -Mn, -Ma и, возможно, -Mpb).

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

1 голос
/ 05 февраля 2013

Я знаю, что это маленький бит некромантии потоков, но если какая-то бедная душа ищет ответ, вот как я это сделал с CQRS и .NET.

  • Я написал команды и запросы Progress для выполнения наших операций с данными.
  • Для доступа к командам и запросам из .NET был вызван диспетчер команд или запросов
    • Диспетчер был доступен с сервера Webspeed.
    • Диспетчер взял имя команды или запроса и данные формы.
    • Вызвал имя команды или запроса и ожидал, что для диспетчера запросов будет возвращен дескриптор временной таблицы.
    • Когда запрос вернул дескриптор временной таблицы, диспетчер запросов записал его содержимое в виде JSON в веб-поток.

Как только мы смогли использовать JSON, данныедоступ стал быстрым и многопоточным.

1 голос
/ 22 февраля 2011

Я опоздал, но подумал, что было бы полезно что-то предложить ...

Вы можете написать свою бизнес-логику, используя .NET, и подключиться к своим данным, используя прокси OpenEdge Open Client. Если вы построите хороший пограничный слой (доступ к данным) вокруг прокси-серверов, и прокси-серверы сделают немного больше, чем извлекают данные, которые будет использовать ваш BL в .NET, то в какой-то момент вы сможете поменять их. Это будет сложнее, если ваше существующее приложение будет огромным и громоздким, что затруднит его наложение слоя. Это также предполагает, что вы работаете с Progress Appservers.

Если вы не используете appservers, то вы все равно можете записать свой доступ к данным в .NET и обернуть его вокруг набора совместимых оболочек ... их можно вызывать прямо из вашего "клиентского кода" 4GL. При таком подходе переход на SQL Server будет немного сложнее, но, тем не менее, он может перемещать вас в нужном вам направлении.

Удачи!

1 голос
/ 05 февраля 2010

Проще, если вы используете драйверы Java + JDBC, из JDBC довольно просто работать с БД OpenEdge.

Не уверен насчет MS-SQL Server, но MySQL имеет миграцию базы данных, которая успешно подключается к OpenEdge черезJDBC и импорт выборок или всех таблиц для вас.

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

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

0 голосов
/ 13 августа 2013

Я очень опаздываю с ответом на этот вопрос, но если кто-то захочет это сделать, я сразу отправлюсь к утилите sqldump в opensge. Сбрасывает содержимое таблиц непосредственно в текст. Очень быстро. Вы также можете выгрузить структуру с помощью другого инструмента, чтобы затем написать код для опроса файла структуры и загрузить данные из текстового файла в таблицы (таблицы) SQL.

0 голосов
/ 18 января 2010

Сначала вы должны взглянуть на SQL Server Integration Services , когда хотите перенести данные на Microsoft SQL Server. Если вы хотите закодировать правила преобразования в .NET, посмотрите на Npgsql провайдера . Он даже поддерживает ADO.NET Entity Framework , поэтому разработка приложения для миграции должна быть довольно простой.

...