Chr*_*isW 6 .net javascript c# interpreter codedom
Html可以包含嵌入其中的少量Javascript(例如,在onclick事件处理程序中定义).
如果我使用像C#这样的dotNet语言编写Html浏览器,我可以使用哪些技术或API来运行这些Javascript片段,因为我直到运行时才收到它(并将其作为字符串数据接收,而不是作为可执行文件码)?
如果要运行的代码是C#片段而不是Javascript,是否更容易或更难?
是否有任何技术不需要我的代码具有不寻常的特权?例如,一个像CodeCompiler.FromSource需求的方法SecurityPermissionFlag.UnmanagedCode(这在我看来是过分的:我不明白为什么编译代码的风险很大).
如果我控制服务器端以及客户端代码,我还可以考虑在服务器上而不是在客户端上编译这样的脚本片段,然后将其作为预编译代码发送到客户端执行.有没有办法通过网络向客户端发送此类代码(大概是dotNet程序集),让客户端代码从网络接收到客户端RAM,并在客户端调用它而不将其存储为在客户端磁盘驱动器上的文件?
编辑
我已经回答了前三个问题:我已经让自己认识到编译需要高权限.我不明白为什么; 也许(虽然我认为这不是一个非常有说服力的理由),这是因为编译器是使用非托管代码实现的.也许这会在使用托管代码重新实现编译器时发生变化,可能是"C#版本5"时间帧.在任何情况下,无论什么原因,这似乎是它的方式,并没有解决方法(其他类似的API,但需要较少的权限).
我剩下的问题是如何从一台机器到另一台机器获得一个程序集实例.当我有时间时,我会发现不受信任的代码是否可以运行该Assembly.Load(byte[] rawAssembly)方法.
服务器端 Javascript 是 .NET 平台支持的语言之一。当您需要将小代码片段插入现有代码时,我多次使用它。运行时它可以从ie数据库加载并编译,因此没有性能损失。
从使管道工作(检索源代码、编译源代码等)的角度来看,没有什么区别。然而,对于强类型语言,将代码片段组装成可编译的编译单元要困难得多。
权限无疑是一个挑战。我不确定您提到的具体权限,但安全性是一个问题,毕竟您编译的源代码可以是任何内容,如果您不小心代码的源代码,它可能会成为您系统的后门
这个问题的答案是——当然可以。您可以从任何地方加载程序集,不一定从文件中加载,您也可以在内存中编译 - 这就是我所做的。在这种情况下,没有 dll 文件。
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |