我想以这样一种方式托管动态语言运行时(DLR),以便在其中运行任意脚本的用户无法使该过程失效?
DLR hosting spec描述了如何在单独的ApplicationDomain中托管DLR。这允许拆除和卸载脚本运行时并通过CAS限制某些操作(例如,我可以限制文件系统访问或禁止使用反射)。
但也有方法可以举例: - 限制脚本使用的最大内存量? - 限制脚本创建的线程数? - 检测死锁脚本?
我认为使用为SQL Server开发的unmanaged .net hosting API可以实现这种精细控制。这是方向吗?是否有这种通用.net沙盒的开源项目?
以下是我发现的一些可能有用的参考资料:
答案 0 :(得分:3)
看一下Terrarium - 这是一个用.NET语言构建自己的自主生物的游戏,它们被传送到其他联网计算机以及它们所描述的程序集。目标是让你的生物接管整个生态系统,要么杀死其他一切,要么通过战略性地管理食物资源。
我记得,任何花费超过0.n秒“思考”或nkb内存的小动物都会被删除。