轻松访问系统资源

发表于:2007-06-30来源:作者:点击数: 标签:
.NET Framework的设计朝解除 开发 者关于 Windows 和COM结构的最大的抱怨迈了一大步。第一次,访问所有的系统资源主要的集中在了System库中。开发者现在能创建既能用于管理特定应用程序资源也能用于完成一般操作管理任务的系统管理应用程序。本文中,我将要
     .NET Framework的设计朝解除开发者关于Windows和COM结构的最大的抱怨迈了一大步。第一次,访问所有的系统资源主要的集中在了System库中。开发者现在能创建既能用于管理特定应用程序资源也能用于完成一般操作管理任务的系统管理应用程序。本文中,我将要说明.NET能开发的应用程序的类型,然后讨论一些开发系统管理应用程序中你将要使用的大体的指导方法。
  
  本地系统管理
  
  虽然工业已经发展到了每台PC可以被一个允许瘦客户端应用程序运行的“智能”终端代替的阶段。但是这个趋势已经停止了。很多公司现在都认识到一些应用程序需要高性能的本地处理器和存储器。这意味着开发者需要能有效地操纵本地机器资源。
  
  在.NET中微软通过在System.IO命名空间中提供一组对象和类而将底层的文件系统暴露给开发者。例如,System.IO提供Directory和DirectoryInfo类。Directory类提供一些可以不创建实例而直接调用的静态函数。这些函数,例如GetLogicalDrives, GetCurrentDirectory以及GetDIrectories,可以使你在本机上直接访问文件系统。DiectoryInfo类提供本机上任何目录的文件夹级的信息。System.IO中这些类以及其他类可以使你创建专门的存储管理应用程序或者添加存储管理特性到新的应用程序中。
  
  远程系统管理
  虽然能操纵运行在本机的服务比较的有趣,但是提供远程管理能力更有价值。.NET Framework为开发系统管理应用程序和远程访问这些特征提供了标准函数。随着越来越多的公司在Windows 2000以及将要推出的Windows .NET中实现活动目录服务(Active Directory Services, AD),他们也在寻找有效管理目录的方法。在.NET推出以前,那意味着需要在有关活动目录服务接口(Active Directory Services Interface , ADSI)的大量文档中寻找解决方法。为了有效的使用ADSI,你需要完全理解如何开发LDAP查询。而在.NET的System.DirectoryServices命名空间,微软提供所有的有效管理AD的函数。DirectoryEntry对象代表所有的用户设置,任何的.NET语言都可以轻松的操作它。
  
  你可以用其他的类创建、控制AD组。.NET Framework暴露了所有用于创建部门化的或者特定应用的AD管理应用程序所必须的函数。有些情况下,你还需要直接调用底层Windows系统,但是这种情况很少——在Framework的第二版将得到修正。
  
  微软所有的系统产品(SQL Server,Exchange,等等)以及许多第三方产品都提供开发者可以管理和控制的Windows管理工具(Windows Management Instrumentation, WMI)。不幸的是,WMI库的前期版本除了一些核心的C++开发者外,其他的开发者并不能完全使用。System.Management命名空间统一并简化了访问底层WMI库的使用,使开发者具有简单快速创建系统管理应用程序的能力。示例WMI应用程序包括存储有关商业活动信息的分析应用程序,系统快要或者已经崩溃时自动采取正确动作的健康监视应用程序,管理备份、根据特定的操作指导提供自动机器管理的操作策略管理应用程序。
  
  .NET Framework的另外一个新的显著特点是使用它你可以开发Windows服务程序。此外,.NET Framework暴露所有的Windows服务控制器,允许你为你自己的Windows服务开发用于管理服务以及服务依赖关系的应用程序,还允许你开发用于管理机器上已经存在的Windows服务的应用程序。开发一个使你监视、控制本机或局域网内任何一台机器的Window服务的Windows服务管理控制台程序相当容易。
  
  暴露系统管理应用程序
  在你的网络上管理机器可能是容易的,但是管理不在你的网络上的机器情况会怎样呢?使用Web Services你可以将许多这些系统级的服务暴露给使用Web Clients的远程管理程序。例如,我同一家公司合作设计一组系统管理程序,使他们的工程师可以使用一个具有Web Services, 系统对象和移动互联网工具包的便携式电话远程诊断、修复、重启系统。当然,这又会带来另一个主要的问题——安全问题。
  
  设计指导
  为了创建一个高性能的安全的应用程序,你应该使用多层次(Multilayered)的方法设计系统管理应用程序。首先,创建从System.EnterpriesServices继承的作为COM+组件的用于完成核心系统管理的对象。给这些组件做上标记,添加到COM+包之前首先将其放到GAC中,等他们具有能且只能完成我们设计的任务的安全性之后再将其添加到COM+包中。当你给这些组件一个ID时,一定不要使用标准管理员账号,而要创建一个特殊的单独的账号来暴露这些必要的权限。然后给这个账号命名,使其容易被找到并被停用(如果需要的话),像RemoteSysAdminServices或RemoteSysAdminWMI等。将组件安装到COM+包之后,你就能允许组用户访问它,例如操作员,超级用户或者管理员。使用活动目录作为你的信任验证的源可以使你在使用同一个信任源通过Web services或者Web sites暴露对象,因为ASP.NET身份验证和授权能使用Windows身份验证。
  
  快速开发系统管理应用程序的能力是.NET Framework的一个最好的新特点。.NET Framework同AD的紧密集成使你能保证系统管理应用程序只暴露给特定的人或者系统。
  
  

原文转自:http://www.ltesting.net