![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Poisent |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.10.2007 Репутация: нет Всего: нет |
Есть набор функций написанных на Python, необходимо вызвать эти функции из C#, с указанными параметрами и обработать возвращаемые значение.
Аналогичные действия необходимо проделать с JavaScript, Lua, Perl. Это сообщение отредактировал(а) Poisent - 13.11.2007, 23:41 |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Python for .NET
Lua 2 IL Для Perl, видимо, только коммерческие портирования в .NET (или я не нашёл?). А JScript есть и так : доступен через ASP.NET Это сообщение отредактировал(а) marcusmae - 14.11.2007, 00:15 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Poisent |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.10.2007 Репутация: нет Всего: нет |
Мне надо не эти языки под Net, а выпорлнение самих скриптов, в исходном виде с помощью родных компиляторов/интерпритаторов.
Т.Е. есть какой-то сценарий Python, где есть функция Foo(int), которая возхвращает например входной параметр*2. Так вон, мне надо, что б моё приложение запускало этот скрипт в исходном виде, (Python) и получало значение от этого скрипта. |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Понятно. Тогда COM Interop : если не хотите переносить скрипты под .NET, то подключайте интерпретаторы к проекту на C# как COM-объекты. Изучив предлагаемый ими интерфейс взаимодействия, можно научиться запускать на них скрипты. В интернете такой приём мало упоминается, так что перенести вероятно легче. Например, здесь примерно то же самое предлагается. Это сообщение отредактировал(а) marcusmae - 14.11.2007, 19:45 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Сериализовать параметры в JSON, передать их прокси-модулю на скриптовом языке через стандартный ввод вместе с именем функции. Тот вызовет функцию, снова закодирует результат в JSON и вернёт через стандартный вывод.
Почему JSON? Легковесный и отлично поддерживается в каждом из перечисленных языков, для JS вообще родной (http://json.org/json-ru.html). Можно посмотреть на XML-RPC и SOAP. С COM я бы связывался в последнюю очередь. Для Питона, к примеру, простейший прокси будет выглядеть так:
Соответственно, подав ему на ввод строку
получим на выходе 1.73205... На стороне C# можно использовать LitJSON. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| Poisent |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.10.2007 Репутация: нет Всего: нет |
Спасибо за ответы. Буду копать.
|
|||
|
||||
| Poisent |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.10.2007 Репутация: нет Всего: нет |
А где можно выудить названия COM объектов соответствующих необходимым мне интерпритаторам.
|
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Попробовать поподключать к проекту какие-нибудь exe/dll интерпретаторов. Он сам попробует выудить. Или при подключении в References проекта перейти на вкладку COM и найти их там. Список COMов строится, тк система знает, какие COM-объекты в ней зарегестрировались - эта информация хранится в реестре. Это сообщение отредактировал(а) marcusmae - 16.11.2007, 00:37 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Poisent |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.10.2007 Репутация: нет Всего: нет |
Я знаю архитектуру COM. Установил Python, он не предоставляет COM объектов. |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Хорошо, во всяком случае, через COM можно взаимодействовать непосредственно с питоновским скриптом. Как зарегистрировать в нём COM-объект, показано здесь. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |