• --:)欢迎访问锋网源码(:--
  • 首页
  • RSS订阅
  • 常用软件
  • 网页模板
  • 网站运作
  • 锋网学院
  • 繁體中文

  • 学院首页
  • 新闻资讯
  • 网站运营
  • 网站开发
  • 美工设计
  • 数据库类
  • 服务器类
  • 网络应用
  • 操作系统
  • 软件教学
编程开发   认证考试   网络安全   文章搜索: 高级搜索
会员登录/控制面版 您的位置: 学院首页 >> 网站开发 >> .NET教程 >> 文章内容
 

精彩推荐

 
 

本类推荐文章

 
 

本类阅读排行

  • ASP.NET中Cookie编程简明参考..
  • 十天学会ASP.net之第一天
  • 在ASP.NET访问Excel文件 (VB..
  • 求素数(质数)的算法
  • 将dataset以xml形式发给客户..
  • ASP.NET MasterPage 中图片路..
  • 使用ASP.NET2.0的ReportView..
  • Asp.Net中使用水晶报表
  • ASP.NET上传图片时,产生预览..
  • C#进阶教程(一)
  • 用C#创建Web应用程序
  • 带你走进ASP.NET(1)
  • 十天学会ASP.net之第二天
  • 最佳ASP.NET编程习惯(1)
  • [视频]vs2005入门之对工具栏..
  • 安装好.net之后如何运行asp...
  • 带你走进ASP.NET(2)
  • 十天学会ASP.net之第三天
  • C#对Java--微软的反击?
  • C#究竟能给开发者带来什么
 
 

ASP.NET程序员应用程序域须知

  • 日期:2007-10-15     人气:     出处:     作者:
  • 字体大小:
  • 小
  • 中
  • 大

  本文将讨论.NET的应用程序域,并且它们是如何对ASP.NET的执行和调度产生影响的。

  当在Windows中启动Notepad程序时,众所周知程序会执行一个包含在容器内的进程。可以启动多个Notepad的实例,并且每个实例都会在一个专注的进行程运行。使用任务管理器,可以看到在系统中当前运行的所有进程的清单。

  一个进程包括可执行从操作系统中保留的在内存中的代码和程序数据。在进程之内只少有一个包含在进程之内的正在执行指令的线程,并且在多数情况下有多个线程。如果程序打开了任何文件或者资源,这些资源将属于这个进程。

  一个进程也有一个分界线。包含在进程之内的错误代码不能在当前进程之外的地区腐化。在一个进程之内很容易通讯,但是专业技术要求一个进程对另一个进程通讯是必需的。每一个进程也在一个特殊的上下文安全系统中运行,这个安全系统规定在机器和网络中进程做什么。

  一个进程是一个在Windows 操作系统中独立运行的最小单位。这会给在一个单一服务器上对一大堆应用程序的ISP提出一个问题。ISP将会分离每一个在同一个服务器上的与另一个公司的应用程序干扰的ASP.NET应用程序。但是相关的发射和执行一个对成百上千的应用程序的过程成本禁止的。

  介绍应用程序域

  .NET介绍一个应用程序域的概念,或者AppDomain像一个过程,AppDomain是既是容器又是边界线。.NET运行时间使用AppDomain作为代码和数据的容器,就像操作系统一个过程作为代码和数据的容器一样。当操作系统使用一个过程来分离不整齐的代码时,.NET运行时间使用一个AppDomain来分离在一个安全边线内的代码。

  一个AppDomain仅仅属于一个单过程,但是单个过程能够保持多重的AppDomain。一个Appdomain创建起来相对容易(与一个过程比较起来),并且与一个过程比较起来具有少的维护费用。由于这些原因,一个AppDomain是ISP(提供成千上万的应用程序)的很好的解决方案。每一个应用程序可以生存在一个独立的AppDomain之内,并且许多这样的AppDomain可以生存于一个单一的过程(节省费用)之内。

  AppDomain

  在同服务器上创建了两个ASP.NET应用程序,并且没有任何特殊配置。会发生什么事情呢?

  一个单一的ASP.NET手工进程使ASP.NET应用程序变成两方面的主要程序。在Windows XP和Windows 2000中,这一程序被命名为aspnet_wp.exe,并且这一程序运行在本地的ASPNET计数器的前后安全关系中。在Windows 2003手工程序拥有w3wp.exe并且默认运行在NETWOR SERVICE中。

  一个对旬可以进住在一个AppDomain中。每一个ASP.NET应用程序将具有它自己的一套全局变量:Cache,Application进住进同一进程,.NET AppDomain是一个独立的单元。如果存有共享的或静态成员的类,并且那些类存在于两种应用程序之内,每一个AppDomain拥有它自己的静态字段的备份—数据并不共享。每一个应用程序的数据和代码安全独立存在并且在一边界之内由AppDomain提供。

  为了在AppDomain之间通讯或者在AppDomain之间交换对象,需要查看在.NET中穿过边界的通讯技术,例如.NET细微的或Web 服务。

  对将AppDomain作为边界思想的警告之一是ASP.NET应用程序在默认情况下会带着充分的信任运行。充分信任的代码可以执行本地代码,并且本地代码可以本质地在进程之内的任何内容。需要运行带着部分信任执行应用程序来约束存取不完整的代码并且对安全的AppDomain验证所有代码。

  隐藏备份并且重新启动

  一旦一个集合加载到一个AppDomain,没有办法从AppDomain集合的办法。不过,从一个进程中移除一个AppDomain是有可能的。

  如果将一个已更新的dll复制到一个应用程序的子目录中,从ASP.NET的运行时间知道有新代码要执行。既然ASP.NET不能将dll复制到已存在的AppDomain中,它就会起动一个新AppDomain。旧的应用程序域是“排水已停止”,那就是,存在的需要被允许完成执行并且一旦它们执行完成AppDomain可以卸载。带有新代码的新的AppDomain就会开始并且开始所有的新请求。

  典型地说,当一个dll加载进一个进程时,进程对dll加锁并且不能对磁盘的上的文件进行覆盖。不过,AppDomain有一个众所周知的特点:隐藏复制那所有的允许保留在磁盘上的那些未被加锁的可替换的集合。

  运行时间对二进制子目录的带有Shadow Copy的ASP.NET进行初始化。AppDomain将任何的加锁之前的dll从二进制子目录中拷贝到一个临时位置并且再将这些dll加载到内存。Shadow Copy允许没有将网页在线的情况下对所有在二进制子目录中的任何dll进行重写。

  熟练掌握Domain

  应用程序域替换OS进程将为单独的.NET结点单元。一个可理解的应用程序域将会给你一个在ASP.NET应用程序后的手工发生的概念。使用AppDomain类的CurrentDomain属性,可以检查关于代码正在运行的AppDomain的属性,包括我们在此文章中讨论的Shadow Copy。

相关文章
  • QQ帮你突破网吧硬盘访问限制
  • 局域网内盗用IP的安全问题
  • 邮件安全攻略:只要糖衣不要炮弹
  • 手机病毒的分类及其防范措施
  • 如何防止黒客远程盗取QQ密码
  • 始料未及,谁在控制电脑重新启动
  • 网络常见木马的手工清除方法
  • 魔高一尺 道高一丈
  • 防火墙日志记录让蠕虫病毒无处可逃
  • 提防他人动用电脑另有妙招
相关软件

  • 网友评论:
  • 查看所有评论
  • 我要发表评论
 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 加入收藏 | 帮助中心 |

Copyright © 2006-2007 fwvv.net  程序支持:木翼  皖ICP备06004916号