将脚本语言集成到C#应用程序是否有意义?

时间:2009-04-13 18:10:57

标签: c# .net scripting

我一直在考虑将Ruby集成到我的应用程序中,但是我工作的一些朋友告诉我C#已经非常高了。但对我来说,似乎它可以为做很快的事情提供更多的包袱。

你们有什么想法?

此外,如果我进行集成,那么限制它是否有意义,以便您可以使用应用程序的现有功能执行任何操作,但不能扩展它?

原因是,scritping语言的性能并不为人所知,如果你说让人们编写Blur,Contrast等过滤器,那么那些会比它们应该慢一些并且会降低客户端的体验脚本编写者,对吧?

4 个答案:

答案 0 :(得分:7)

我已经将(lua)脚本集成到应用程序中,并且我还使用c#本身作为“脚本语言”,通过用户提供的代码动态编译动态程序集。我还使用符合特定接口或基类的用户提供的程序集实现了“插件”系统。

从安全性,性能到最终用户的混淆,需要考虑很多事情。我认为你不能像“脚本语言不属于应用程序”,甚至“脚本语言属于应用程序”那样做一个全面的陈述。任何给定的具体案例都需要仔细考虑所有选项以及这些选项的后果,然后再跑掉并做一些你可能会后悔的事情。

答案 1 :(得分:3)

通过脚本界面实现给定功能时可能会受到性能影响,而不是通过您的应用本地实现,但如果您希望允许用户编写应用程序脚本并允许他们实现有用的功能对于那些在您的应用中不受支持的人来说,对我来说这似乎是一个好主意。如果您最终得到一个非常受欢迎的特定用户脚本,那么如果您可以提高其性能,则可以在以后的版本中将其作为应用程序的本机功能发布。希望这有帮助!

答案 2 :(得分:3)

我喜欢能够编写脚本来扩展应用程序的功能。当脚本语言是众所周知的时候更好。

我不会基于对性能的担忧限制脚本可以执行的功能。例如,您不知道某些东西在未来的硬件上的表现如何;但是,您应该限制它对安全性/功能的作用。

如果您有性能问题,那么我会通过脚本实现扩展点,也可以通过插件实现扩展点,这样就可以执行和运行已编译的代码。

修改

一般来说,我认为它不再引入漏洞,然后通过插件扩展应用程序。至于具体的漏洞,我真的不能不了解你的应用程序。但以网络浏览器为例。 IE有很多安全漏洞,因为脚本可以访问更多的资源。

通过编译代码强制扩展可以让您利用机制来帮助防止攻击。例如,你可以检查一个程序集(假设.net这里)。轻松查找恶意代码(是的,您也可以使用脚本执行此操作),或者您可以阻止访问某些资源cia Code Access Security。您还可以利用代码签名,并仅加载来自受信任发布者的插件。

答案 3 :(得分:3)

根据您要完成的工作,您可能会喜欢 PowerShell 所提供的功能。您可以将应用程序设置为自定义PowerShell脚本主机,或者只提供操纵应用程序的cmdlet。

在任何一种情况下,您的用户都可以使用内置的.NET / COM / WMI支持的丰富,强大,合理的脚本语言,但他们不必是开发人员就可以使用它。

您还在建立用户可能已拥有的技能。如果他们还没有它,他们可以为您的应用程序学习它,然后将来从中受益。

如果要查看有关如何解决问题的示例,则Exchange Server 2007会实现自定义脚本主机。