对了AppDomain 的微软官方的解释也好,网络上的文章也好,都看过了,但是其中的几点还是不是很明白!
关于AppDomain是WINDOW进程中的一个逻辑单元,是.net 托管世界中的应用程序在其中执行的独立环境,每个AppDomain 之间是相互隔离的,有各自的配置信息、存储区域、引用、执行边界和安全策略,但是有可以彼此通信 等等等等等等它的作用都很清楚 不清楚的是: 1.什么时候会出现多个AppDomain 同时运行的时候?而且会进行域间的通信!(最好用详细例子说明)
2.“应用程序域把任何一个进程分解到多个应用程序域中,每个应用程序域大致对应一个应用程序,执行的每个线程都运行在一个具体的应用程序域中” 这句怎么理解?是对还是错? 我目前天真的理解:是包含在一个进程中的所有应用程序都会在除了它自己的每个应用程序域中分配一个线程? 如果是又是怎么做到的呢?如果不是又是怎么实现域间通信的呢? 小弟才疏学浅!期待高手解惑!
关于AppDomain是WINDOW进程中的一个逻辑单元,是.net 托管世界中的应用程序在其中执行的独立环境,每个AppDomain 之间是相互隔离的,有各自的配置信息、存储区域、引用、执行边界和安全策略,但是有可以彼此通信 等等等等等等它的作用都很清楚 不清楚的是: 1.什么时候会出现多个AppDomain 同时运行的时候?而且会进行域间的通信!(最好用详细例子说明)
2.“应用程序域把任何一个进程分解到多个应用程序域中,每个应用程序域大致对应一个应用程序,执行的每个线程都运行在一个具体的应用程序域中” 这句怎么理解?是对还是错? 我目前天真的理解:是包含在一个进程中的所有应用程序都会在除了它自己的每个应用程序域中分配一个线程? 如果是又是怎么做到的呢?如果不是又是怎么实现域间通信的呢? 小弟才疏学浅!期待高手解惑!
应用程序域通常由运行库宿主以编程的方式来创建和操作。但是,有时应用程序还可能要和应用程序域结合起来使用。例如,应用程序可以将一个应用程序组件卸载到一个域中,以避免停止整个应用程序。
如果只是个Coder,就安分守己地写写代码,不要想太多。
要干CODER干的事 但远远超过他要干的!CSDN的高手啊! 我在呼唤你们! 最近做C#的教案,在这里迷惑了两天了! 给点儿金玉良言点醒下小弟!
那么a.exe运行,就是Windows的一个进程,你再运行它,就又是一个进程。
进程中存在两个a.exe的进程,但是彼此之前不能通信(除非用一些进程通信的手段)知道Java吧,一个Java程序的运行,可以在一个JVM的进程内,也可以在多个JVM的进程中。
问题是它们尽管是走一样的代码逻辑,但是不能通信。
现在到了.Net了,一个a.exe,是一个dot net的程序。
它只能走单进程的方式,单进程在Windows上意味着进程的切换的奢侈~~。
如果能有一个类似于Java的,在一个进程内,而Application和Application之间又能彼此不可通信。
那样就好多了。
这样就有了AppDomain的概念。这个在IIS上面是有体现的。IIS上面的不同Application既可以处于同一个Windows进程,又可以安全的隔离开。
这个AppDomain,可以简单理解为大于线程资源访问范围,而又小于进程的一个设计。
以上是我胡说八道的猜测
我这有电子版的,你要的话,我给你发过去?email?
好的 谢谢 [email protected]
AppDomain.CurrentDomain.SetData()和GetData()传值,相当于session
哈,不错,给我份呗,谢了
[email protected]
同求,可否?
[email protected]
谢谢
host mx4.hotmail.com[65.55.37.88] said: 552 Data size must not exceed 29000K bytes. (in reply to EHLO command)
这篇文章提到了一些可能用到AppDomain的情境,包括:隔离容易崩溃的代码、需要加载不同安全级别的程序集、临时使用一个AppDomain以便回收节约资源、加载同一程序集的不同版本(重名不同实现的类)。
这些情况在普通项目中基本是不会发生的,我只遇到过最后一种情况,那是一个遗留项目,我要对它进行重写,但是有部分代码(加解密部分)体量过大,一时改不过来,我就建了一个AppDomain加载这个老程序,让它继续执行部分的功能,当然后来整个程序改完后自然AppDomain也就不用了。最后,如果你是做教案,为了便于同学们理解,可以这样形象地比喻:AppDomain就是在Application这个大房间里再隔出一些小隔间,作用呢?有限!无非是给大家一些隐私的空间罢了。