Ich überlege, eine Skriptsprache in eines meiner Softwareprojekte einzubetten und habe zwei Optionen identifiziert: das Kompilieren von C# zur Laufzeit über CodeDOM und das Einbetten einer DLR-basierten Skriptsprache. Beide Optionen geben mir vollen Zugriff auf das .NET Framework.Gründe für die Verwendung einer DLR-basierten Sprache anstelle von C# für Skriptaufgaben?
Die Operation, die ich scripting wäre eine benutzerdefinierte Transformation eines DataRow und eine Reihe von Metadaten in einer modifizierten DataRow. Ich erwarte, dass diese Transformationen zusammensetzbar und häufig aufgerufen werden. Natürlich erwarte ich, dass die Transformationen vom Endbenutzer bereitgestellt und modifiziert werden können.
Gibt es angesichts dieser Arbeitslast irgendwelche klaren Vorteile gegenüber der Verwendung eines Ansatzes gegenüber einem anderen?
Haben Sie irgendwelche Gedanken über die relative Leistung der beiden Ansätze? Oder zu den Problemen mit der AppDomain-Verwaltung, die mit der C# -Option auftreten? Oder die Schwierigkeit, einen DLR-Scripting-Host einzubetten? (Guter Punkt, ich habe es aufgezählt). – Dave
"Aber es wird nie schneller sein ..." Wollen Sie sagen, dass die Strafe für die Cross-AppDomain Methodenaufrufe geringer ist als der DLR dynamische Versandmechanismus? Haben Sie dafür irgendwelche Quellen? (In der C# -Implementierung muss ich die kompilierten Assemblys entladen können, daher die AppDomain-Isolierung.) – Dave
@Dave: Oh, da ist dieses Problem ... Diese Strafe wird gezahlt, wenn Sie die AppDomain überschreiten. Die geringen dynamischen Versandkosten kosten Sie überall im Script. Ich bin mir nicht sicher, wie sich das in Ihrem Anwendungsfall ausgleichen wird. –