Я рассматриваю возможность включения языка сценариев в один из моих программных проектов и определил два варианта: компиляция C# во время выполнения через CodeDOM и встраивание языка сценариев на основе DLR. Оба варианта предоставили мне полный доступ к .NET Framework.Причины использования языка на основе DLR, а не C# для задач сценариев?
Операция, с которой я буду писать сценарии, будет определяемой пользователем трансформацией DataRow и набора метаданных, приводящих к модифицированному DataRow. Я ожидаю, что эти преобразования будут сложными и часто вызываться. Конечно, я ожидаю, что трансформаторы будут предоставлены и модифицированы конечным пользователем.
С учетом этой рабочей нагрузки существуют ли какие-либо очевидные преимущества для использования одного подхода над другим?
Есть ли у вас какие-либо соображения относительно относительной производительности двух подходов? Или о проблемах управления AppDomain, которые возникают с опцией C#? Или о сложности внедрения сервера сценариев DLR? (Хорошо, однако, я сделал это). – Dave
«Но это никогда не будет быстрее ...» Вы говорите, что штраф за вызовы метода cross-AppDomain будет меньше, чем динамический диспетчер DLR? У вас есть источники для этого? (В реализации C# мне нужно будет иметь возможность разгружать скомпилированные сборки, следовательно, изолировать AppDomain.) – Dave
@Dave: О, есть эта проблема ... Это наказание выплачивается, когда вы пересекаете AppDomain. Небольшая динамическая стоимость отправки, вы платите ее везде внутри скрипта. Я не уверен, как они будут сбалансированы в вашем случае использования. –