在.net框架中控制用户脚本的执行

问题描述 投票:-1回答:1

我的用户想要的是编写并添加“存储过程”(而不是SQL)到我们的系统。这些过程包含用户定义函数中的用户逻辑,处理内存对象,使用列表,结构,字典等高级数据结构。脚本创建内存中的XML文件。

其他用户不审查脚本 - 执行子系统必须保证脚本不会对服务器造成任何伤害。脚本访问外部资源(文件系统,sql数据库等)是不可接受的,但应该使用应用程序公共API - 最好的方法是使用自定义对象实例方法。因此脚本应该在执行期间传递环境,但只能通过受控方式。不能吃所有的记忆,不能永远运行。

脚本可以编写应该​​捕获和显示的输出消息。如果有办法以某种方式调试脚本执行,那将是一笔财富。

我是这个问题空间的新手。没有指定脚本语言,可以是python,powershell,C#脚本,任何东西。我在研究阶段找到了CSharpScript(https://github.com/dotnet/roslyn/wiki/Scripting-API-Samples),但我不确定这是否是最佳选择。 anybofy知道一个更好的起点吗?我们应该如何解决这个问题 - 因为我们不想编写脚本语言,定义解析器并自己执行脚本。谢谢你的建议!

c# scripting user-defined-functions execution
1个回答
0
投票

事实上,roslyn(微软代码分析)是编译和构建程序集的好功能,然后与其他外部DLL结合很容易。使用反射可以启动脚本,因此可以启动执行。

但是控制执行时间,限制资源使用(内存,CPU,...),限制外部资源(磁盘,网络,数据库......)的访问并不是一件容易的事。

© www.soinside.com 2019 - 2024. All rights reserved.