Remoting基本原理及扩展机制(下)

让我们在开始本节内容之前先了解以下几个基本概念。

应用程序域

应用程序域(通常简称为AppDomain)可以视为一种轻量级进程。一个Windows进程内可以包含多个AppDomain。AppDomain这个概念的提出是为了实现在一个物理服务器中承载多个应用程序,并且这些应用能够相互独立。ASP.NET中利用AppDomain在同一个进程内承载了多组Web应用程序就是一个例子。实际上微软曾进行过在单一进程内承载多达1000个简单Web应用程序的压力测试。

使用AppDomain所获得的性能优势主要体现在两方面:

·创建AppDomain所需要的系统资源比创建一个Windows进程更少。

·同一个Windows进程内所承载的AppDomain之间可以互相共享资源,如CLR、基本.NET类型、地址空间以及线程。

而各个AppDomain之间的独立性体现为以下这些特征:

·一个AppDomain可以独立于其他的AppDomain而被卸载。

·一个AppDomain无法访问其他AppDomain的程序集和对象。

·若没有发生跨边界的异常抛出,一个AppDomain拥有自己独立的异常管理策略。这意味着一个AppDomain内出现问题不会影响到同一个进程内中的其他AppDomain。

·每个AppDomain可以分别定义独自的程序集代码访问安全策略。

·每个AppDomain可以分别定义独自的规则以便CLR在加载前定位程序集所在位置。

可以看出应用程序域是进程中的一个子单元,不过在.NET中还存在一个比应用程序域还要细粒度的单元——.NET上下文(Context)。

.NET Context

一个.NET 应用程序域能够包含多个被称为.NET上下文的实体。所有.NET对象都存在于上下文中,每个应用程序域中至少存在一个上下文。这个上下文称为应用程序域的默认上下文,它在应用程序域创建的时候就创建了。下图总结了它们之间的关系:

时间: 2024-12-10 10:26:31

Remoting基本原理及扩展机制(下)的相关文章

Remoting基本原理及扩展机制(中)

在上一篇文章我们已经介绍到通过在配置文件中指定自定义的ChannelSinkProvider,我们可以在Pipeline中加入自己的ChannelSink,此时我们就可以加入自己的信息处理模块,但是这里我们所能操作的对象是已经经过格式化的消息(即数据流),我们看不到原始的消息对象,这也势必影响了我们所能实现的扩展功能.而在上文的图1中,我们看到除了ChannelSink可以扩展之外,我们还可以加入自定义的MessageSink,而它是位于格式器之前的,也就是说在MessageSink中我们可以直

dubbo源码分析系列(1)扩展机制的实现

1 系列目录 dubbo源码分析系列(1)扩展机制的实现 dubbo源码分析系列(2)服务的发布 dubbo源码分析系列(3)服务的引用 dubbo源码分析系列(4)dubbo通信设计 2 SPI扩展机制 站在一个框架作者的角度来说,定义一个接口,自己默认给出几个接口的实现类,同时允许框架的使用者也能够自定义接口的实现.现在一个简单的问题就是:如何优雅的根据一个接口来获取该接口的所有实现类呢? 这就需要引出java的SPI机制了 2.1 SPI介绍与demo 这些内容就不再多说了,网上搜一下,一

多线程-不用等待唤醒机制下的多生产多消费有什么缺陷

问题描述 不用等待唤醒机制下的多生产多消费有什么缺陷 class Resouce{ private int count=1; private String name; boolean flag=true; Resouce(String name) { this.name=name; } synchronized void set() { if(!flag) { System.out.println(Thread.currentThread().getName()+""------生产-

设计-java 字段扩展机制 类扩展机制

问题描述 java 字段扩展机制 类扩展机制 当要求数据库中的一个表里需要进行字段扩展时,如何能让po层中的各个实体也能一起达到扩展的效果呢,数据库里面的表又该如何设计 解决方案 本文转载自:http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/ 简介:? 本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟推演了动态代理类的可能实现,向读者阐述了一个完整的 Java 动态代理运作过程,希望能帮助读者加深对 Java

.NET Discovery 系列之四--深入理解.NET垃圾收集机制(下)

本系列文章导航 .NET Discovery 系列之一--string从入门到精通(上) .NET Discovery 系列之二--string从入门到精通(勘误版下) .NET Discovery 系列之三--深入理解.NET垃圾收集机制(上) .NET Discovery 系列之四--深入理解.NET垃圾收集机制(下) .Net Discovery 系列之五--Me JIT(上) .NET Discovery 系列之六--Me JIT(下) .NET Discovery 系列之七--深入理解

艾伟_转载:.NET Discovery 系列之四--深入理解.NET垃圾收集机制(下)

本系列文章导航 .NET Discovery 系列之一--string从入门到精通(上) .NET Discovery 系列之二--string从入门到精通(勘误版下) .NET Discovery 系列之三--深入理解.NET垃圾收集机制(上) .NET Discovery 系列之四--深入理解.NET垃圾收集机制(下) .Net Discovery 系列之五--Me JIT(上) .NET Discovery 系列之六--Me JIT(下) .NET Discovery 系列之七--深入理解

解析Windows2000的IDT扩展机制

今天我们谈谈Windows 2000下中断机制的扩展,首先申明本文提到的技术并非本人发现的,只不过是我在学习Windows内核过程中的一点心得罢了,目的在于为和我一样刚刚步入Windows底层学习的朋友提供一点实用的资料,同时也顺带记录下自己的学习过程.如果您是Windows Kernel高手,还望有时间能多多指点一下我们这些晚辈:如果您也是初学者,同样欢迎到我们FZ5FZ网站来交流探讨!那好吧,我们就直接进入正题,如果您对中断还不怎么了解,那眼前将是一次激动人心的旅程. 1> Windows陷

转 【转载】 SYN cookies 机制下连接的建立

      在正常情况下,服务器端接收到客户端发送的 SYN 包,会分配一个连接请求块(即 request_sock 结构),用于保存连接请求信息,并且发送 SYN+ACK 包给客户端,然后将连接请求块添加到半连接队列中.客户端接收到 SYN+ACK 包后,会发送 ACK包 对服务器端的包进行确认.服务器端收到客户端的确认后,根据保存的连接信息,构建一个新的连接,放到监听套接字的连接队列中,等待用户层 accept 连接.这是正常的情况,但是在并发过高或者遭受 SYN flood 攻击的情况下,

探索Clojure将协议用作扩展机制的方法

"没有继承性的扩展,第 1 部分" 主要讨论了 Goovy.http://www.aliyun.com/zixun/aggregation/16945.html">Scala 和 Clojure 中为现有类添加新方法的机制,这也是 Java 下一代语言实现无继承扩展的方法之一.本文将探讨 Clojure 的协议如何以创新的方法拓展 Java 扩展功能,为表达式问题提供出色的解决方案. 尽管这期文章主要关注可扩展性,但也会略为涉及一些允许 Clojure 和 Java 代