在 CLR 执行托管代码的第一行之前,它会创建三个应用程序域 system domain、shared domain、default Appdomain。
可以使用 AppDomain.CreateDomain 方法从托管代码中创建其他 Appdomain 域,也可以使用 ICORRuntimeHost 接口(interface)从非托管托管代码中创建其他 Appdomain 域。
意味着单个应用程序中可以有多个 appdomain。
我的问题是。
问题1> silverlight 解决方案由两个项目silverlight 项目和web 项目组成,这意味着该解决方案将有两个appdomin。这就是silverlight 中发生跨域策略的方式。让我知道我是对还是错。
问题 2> 因为silverlight 被视为窗口应用程序,所以silverlight 应用程序的appdomain 是在客户端或服务器上创建的。
最佳答案
问题一:你是对的,但出于错误的原因。有两个应用程序域,但它们存在于不同的进程中,并且确实存在于不同的机器上。您混淆了两个完全不同的概念,它们都碰巧使用了“域”这个词。
.NET 使用 AppDomains 作为一种机制,允许单个操作系统进程托管多个应用程序实例。 AppDomains 在应用程序之间创建边界,使得不同的应用程序不能仅仅读取彼此的数据并直接调用彼此的代码。需要编码数据传输和方法调用(如有必要)。
“跨域策略”中的“域”是指Web 服务器的DNS 域和主机名。 Web 服务器需要这样的策略,该服务器希望向可能托管在不同服务器上的 Silverlight 应用程序提供数据。
问题二: Silverlight 在浏览器使用的操作系统进程中的客户端上创建自己的 AppDomain 版本。
关于silverlight - Silverlight 的应用领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202548/