Вызов функции .NET во внешней DLL из postgres - PullRequest
0 голосов
/ 08 мая 2009

Можно вызывать функции C через CREATE FUNCTION, но как можно вызывать функции .NET в dll из postgres?

Ответы [ 2 ]

1 голос
/ 08 мая 2009

Вы можете определить внешнюю функцию, используя CREATE FUNCTION . Эта ссылка подразумевает, что DLL должна быть собственной DLL, использующей соглашение о вызовах C, и, следовательно, не может обрабатывать управляемый код.

Вы можете попытаться использовать Mono AOT или MS Native Image Generator для компиляции управляемого кода в собственный код, но я не могу сказать, приведет ли это к созданию собственной DLL с использованием C Соглашение о вызовах. Вы должны попробовать.

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

UPDATE

Вы должны написать оболочку - Функции языка C утверждает, что DLL должна содержать магический блок, который будет недоступен, если вы компилируете управляемый код в собственный код.

1 голос
/ 08 мая 2009

Похоже, что есть некоторые издержки при вызове функций C из PosgtreSQL, Внешние функции в Postgres @ Linux Gazette посвящены написанию такого метода на C. Я бы предположил из того, что вы могли бы, если бы вы ДЕЙСТВИТЕЛЬНО необходимо создать хост-модуль, который загружает экземпляр CLR и предоставляет точку входа в ваш метод C #, который сопоставлен с соответствующей логикой связывания Postgres. Это кажется чрезвычайно дорогостоящим.

Другим подходом, который мог бы быть лучше, было бы инкапсулировать метод C # (который, как я предполагаю, уже написан) в веб-сервисе и использовать оболочку (не обязательно C, но одну из более легких привязок разработки расширений для Postgres), которая вызовет веб-сервис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...