Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов функций написанных на Python в C#, Вызов функций написанных на Python в C# 
:(
    Опции темы
Poisent
Дата 13.11.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



Есть набор функций написанных на Python, необходимо вызвать эти функции из C#, с указанными параметрами и обработать возвращаемые значение.
Аналогичные действия необходимо проделать с JavaScript, Lua, Perl.

Это сообщение отредактировал(а) Poisent - 13.11.2007, 23:41
PM MAIL   Вверх
marcusmae
Дата 14.11.2007, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Python for .NET
Lua 2 IL

Для Perl, видимо, только коммерческие портирования в .NET (или я не нашёл?).
А JScript есть и так : доступен через ASP.NET

Это сообщение отредактировал(а) marcusmae - 14.11.2007, 00:15


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Poisent
Дата 14.11.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



Мне надо не эти языки под Net, а выпорлнение самих скриптов, в исходном виде с помощью родных компиляторов/интерпритаторов.
Т.Е. есть какой-то сценарий Python, где есть функция Foo(int), которая возхвращает например входной параметр*2. Так вон, мне надо, что б моё приложение запускало этот скрипт в исходном виде, (Python) и получало значение от этого скрипта.
PM MAIL   Вверх
marcusmae
Дата 14.11.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата(Poisent @  14.11.2007,  15:02 Найти цитируемый пост)
Мне надо не эти языки под Net, а выпорлнение самих скриптов, в исходном виде с помощью родных компиляторов/интерпритаторов.


Понятно. Тогда COM Interop : если не хотите переносить скрипты под .NET, то подключайте интерпретаторы к проекту на C# как COM-объекты. Изучив предлагаемый ими интерфейс взаимодействия, можно научиться запускать на них скрипты. В интернете такой приём мало упоминается, так что перенести вероятно легче. Например, здесь примерно то же самое предлагается.

Это сообщение отредактировал(а) marcusmae - 14.11.2007, 19:45


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Void
Дата 14.11.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Сериализовать параметры в JSON, передать их прокси-модулю на скриптовом языке через стандартный ввод вместе с именем функции. Тот вызовет функцию, снова закодирует результат в JSON и вернёт через стандартный вывод.
Почему JSON? Легковесный и отлично поддерживается в каждом из перечисленных языков, для JS вообще родной (http://json.org/json-ru.html). Можно посмотреть на XML-RPC и SOAP. С COM я бы связывался в последнюю очередь.

Для Питона, к примеру, простейший прокси будет выглядеть так:
Код
import sys
import simplejson

def main():
    module, func, args = simplejson.loads(sys.stdin.read())
    result = getattr(__import__(module), func)(*args)
    sys.stdout.write(simplejson.dumps(result))

if __name__ == '__main__':
    main()

Соответственно, подав ему на ввод строку
Цитата
["math", "sqrt", [3]]

получим на выходе 1.73205...

На стороне C# можно использовать LitJSON.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Poisent
Дата 15.11.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



Спасибо за ответы. Буду копать.

PM MAIL   Вверх
Poisent
Дата 15.11.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



А где можно выудить названия COM объектов соответствующих необходимым мне интерпритаторам.
PM MAIL   Вверх
marcusmae
Дата 16.11.2007, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата(Poisent @  15.11.2007,  23:51 Найти цитируемый пост)
А где можно выудить названия COM объектов соответствующих необходимым мне интерпритаторам.


Попробовать поподключать к проекту какие-нибудь exe/dll интерпретаторов. Он сам попробует выудить. Или при подключении в References проекта перейти на вкладку COM и найти их там. Список COMов строится, тк система знает, какие COM-объекты в ней зарегестрировались - эта информация хранится в реестре.

Это сообщение отредактировал(а) marcusmae - 16.11.2007, 00:37


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Poisent
Дата 16.11.2007, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2007

Репутация: нет
Всего: нет



Цитата(marcusmae @  16.11.2007,  00:36 Найти цитируемый пост)
Попробовать поподключать к проекту какие-нибудь exe/dll интерпретаторов. Он сам попробует выудить. Или при подключении в References проекта перейти на вкладку COM и найти их там. Список COMов строится, тк система знает, какие COM-объекты в ней зарегестрировались - эта информация хранится в реестре

Я знаю архитектуру COM. Установил Python, он не предоставляет COM объектов.
PM MAIL   Вверх
marcusmae
Дата 16.11.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата(Poisent @  16.11.2007,  09:06 Найти цитируемый пост)
Я знаю архитектуру COM. Установил Python, он не предоставляет COM объектов.


Хорошо, во всяком случае, через COM можно взаимодействовать непосредственно с питоновским скриптом. Как зарегистрировать в нём COM-объект, показано здесь.



--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.