Развертывание и выполнение кода на удаленной машине через Remoting / WCF - PullRequest
2 голосов
/ 20 мая 2011

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

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

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

Я хотел бы понять, так как в настоящее время я только через базовыйучебные пособия по WCF, если вообще возможно динамическое развертывание нового кода с использованием WCF для удаленного выполнения?

На мой взгляд, у меня есть 2 разных сценария:

  1. УдаленныйНа машине развернута базовая библиотека «Выполнение».
  2. На удаленной машине в настоящее время не установлена ​​служба WCF.

При использовании опции № 1, я думаю, у меня могут быть некоторые функции для отправкичерез DLL или что-то еще, и выполняйте ее удаленно, так как исполняющая библиотека уже знает, как это сделать.

При использовании опции №2 мне потребуется в основном развернуть eчто-то (каким-то образом) с нуля, а затем отправить команду для его запуска.

Возможен ли этот сценарий вообще?У вас есть какие-либо советы по выполнению такого рода задач?

Кроме того, если у вас есть хорошие уроки WCF (я сейчас читаю на MSDN).

Спасибо!

1 Ответ

3 голосов
/ 20 мая 2011

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

Другими словами, если у вас есть клиент WCF на удаленном конце, вы можете отправить ему свой DLL-файл (как двоичный файл data ), а затем клиент может динамически загрузить и выполнить его, используя отражение (но что без упоминания всех очевидных проблем безопасности и совместимости, которые это вызовет). Другой, возможно, более простой вариант - отправлять сценарии вместо скомпилированного кода и выполнять их с использованием некоторого интерпретатора на стороне сервера. Но какой бы трюк вы ни использовали, вам придется проделать большую работу вне WCF, поскольку отправка инструкций не является целью WCF.

...