Intereting Posts
(this == null) в C #! Буфер HTTPClient превышен 2G; Невозможно записать больше байтов в буфер проверьте, является ли запись последней или первой в списке с linq Фундаментальная частота + обнаружение голоса в c # функция для вычисления контрольного символа блока (BCC) в C # Почему Control.FromHandle (IntPtr) возвращает null в одном подключенном процессе и возвращает действительный объект «Form»? в другом подключенном процессе? Page_ClientValidate () ожидаемая ошибка объекта, не может найти валидатор Как определить NumberDecimalSeparator в событии KeyDown (C #) Что вызывает эту ошибку? Ошибка выполнения дочернего запроса для обработчика ‘System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerWrapper’ Использование инъекции зависимостей Unity в (данных) annotations Есть ли способ по умолчанию для успешного завершения первой задачи? Использование VS 2005 для разработки абстрактных форм Где я могу поставить try / catch с помощью инструкции «using»? Предотrotation выбора нескольких строк в WPF DataGrid Элементы управления Asp.net недоступны в коде

запрос на MUMPS из asp.net/C#

Кто-нибудь знает, как запрашивать из базы данных MUMPS с помощью C # без использования KBSQL -ODBC?

У нас есть потребность в запросе из базы данных MUMPS (забота о пациенте Mckesson STAR), и когда мы используем KBSQL, она ограничена для 6 одновременных пользователей. Поэтому мы пытаемся напрямую запросить MUMPS, не используя KBSQL.

Я ожидаю что-то вроде LINQ TO MUMPS.

Я думаю, что Mckesson использует Intersystems ‘ Cache в качестве провайдера паролей (M). Кэш поддерживает .Net (см. Документацию здесь ). У Джесси Либерти есть довольно хорошая статья об использовании C #, .Net и Windows Forms в качестве передней части базы данных Cache.

Я не уверен в LINQ (я не эксперт здесь), но это может дать вам представление о том, где начать работу над вашим проектом.

Майкл

Во-первых, я тоже чувствую вашу боль. У меня был неудачный опыт разработки в MagicFS / Focus пару лет назад, и у нас был тот же запрос для поддержки реляционных запросов. Почему люди всегда хотят того, чего они не могут иметь?

В любом случае, если версия MUMPS, которую вы используете, похожа на MagicFS / Focus, и у вас есть доступ к файловой системе, в которой содержится «firebase database» (плоские файлы), тогда один из возможных способов:

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

  2. Чтение в XML с использованием LINQ to XML

  3. Запустите запросы LINQ.

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

Если вы будете запрашивать только по определенным причинам (т.е. я хочу присоединиться к таблицам Foo и Bar в ID, и это все, что я хочу), я бы подумал, что вместо этого вытащить и кэшировать эти данные в серверные C # -сборы и пропустить запрос (или потяните их за использование WCF или как, а затем выполните ваши запросы LINQ).

Вы можете избежать 6 ограничений пользователя, разделив соединение с базой данных из экземпляров приложения

Используйте ODBC KB / SQL через средний уровень (либо DAL в приложении), либо отдельный сервис (служба Windows).

Этот компонент может разговаривать с базой данных MUMPS, используя не более 6 отдельных streamов (в соответствии с ограничением KB / SQL).

Компонент может использовать ADO.NET для ODBC для связи с драйвером OBSBC KBSQL. Затем вы можете использовать данные из своего приложения, используя LINQ для ADO.NET.

Возможно, вам потребуется использовать систему массового обслуживания, такую ​​как MSMQ, для управления очередностью запросов данных. если 6 одновременных соединений недостаточны для объема запросов. Хорошей практикой проектирования является очередь запросов и использование асинхронных вызовов LINQ, чтобы избежать блокировки взаимодействия с пользователем.

Все текущие реализации языка MUMPS имеют возможность указывать MUMPS-программы, которые отвечают на TCP / IP-соединение. Собственная firebase database MUMPS структурирована как иерархия упорядоченных пар с несколькими ключами и значениями, по существу, надмножество парадигмы NoSQL.

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

Если у вас есть разрешения / разрешения для вашей реализации, которые позволяют создавать и запускать программы MUMPS (называемые «подпрограммами»), вы можете отвечать на любой протокол, который вы хотите от этих программ. Системы MUMPS могут создавать текстовые или двоичные результаты на порту TCP / IP или файле операционной системы хоста. Многие поставщики явно не дают вам сделать это в своих контрактах для предоставления медицинских и финансовых решений.

Насколько мне известно, синтаксис LINQ является запатентованным продуктом Microsoft, хотя есть, конечно, LINQ-подобные усилия Open Source. Я не видел формального определения линейного протокола для LINQ, но если он есть, для связи с этим протоколом может быть записана процедура MUMPS. Однако он должен был бы сделать что-то похожее на KB / SQL, поскольку ни синтаксис LINQ, ни синтаксис SQL не очень близки к родному синтаксису MUMPS.

Механизм структурирования и хранения данных MUMPS может быть механически переведен в синтаксис XML. Это может потребовать больших усилий, так как маловероятно, что поставщик вашей системы предоставит DTD, определенный для этого механически созданного синтаксиса XML, и вам все равно придется иметь дело с закодированными значениями и ссылками, которые хранятся в системе на основе MUMPS в их сыром виде.

Какой поставщик и версия MUMPS вы используете? Решение, несомненно, будет зависеть от api поставщика, который они выставили.