ddtkh,dynamic datacenter toolkit for hosters,原先发布在codeplex开源社区,后来被微软归档到开发者社区中,从本质上来说它是一个企业级应用的套件,集成了微软的scvmm、scom、dpm和sms这几款windows平台应用,经过进一步的封装,通过wcf的方式提供这些应用的api接口。

现在社区提供了3.0和3.1两中版本,3.0之后各个应用的封装开发包独立出来了。比如有人需要2012的scvmm开发包,可以下载3.1的,不支持scvmm2008。

这里我们介绍3.0的scvmm2008的版本。首先我们看一下sample的解决方案。

我们看一下hosts目录下的寄宿服务

ConfigurationService为Systems Management Server服务,这款应用包含软件管理,资产管理和故障处理等工具包,它有一种wql查询语言,类似sql,可以通过这种语言调用wmi来获取和监视计算机的运行状况,wmi叫windows管理规范,是windows操作系统的重要组件。

dpm为Microsoft Data Protection Manager提供服务,顾名思义,是用来管理存储的,可以提供基于磁盘备份解决方案。随着2012版本的发布,功能也不断完善,随着虚拟化技术的不断发展,对备份需求也不断提高,这款产品也值得研究一下。

monitor是Microsoft System Center Operations Manager,它可以为操作系统性能进行综合的分析,作为推广者可以根据监控数据进行多方位的评估,合理安排资源,而客户可以利用它来监控自己的系统环境运行状况,根据自身需要申请调整资源。

virtualmachinemanagement就是scvmm了,是基于微软基于hyperv的界面化管理应用。

我们主要介绍scvmm的部分,部分工程已unload。

在services目录下面,我们需要这几个上图几个已加载的工程即可。

FaultContracts:错误异常的代理类。

Management:调用wmi组件的封装包。

DataContract:scvmm的代理类。

ServiceContracts:wcf接口定义。

ServiceImplementation:接口实现,关键工程,这下面是powershell的封装包。

在VirtualMachineManagementService.cs连接scvmm的一段代码,原先配置信息是放在宿主服务的config文件里,我这里已有改动,具体请看sample。(我这里强制使用了session模式,保持了登录状态,避免每次调用wcf重新连接。)

 public bool Connect(string serverName, int serverPort, string userName, string password)
{
this.serverName = serverName;
this.serverPort = serverPort;
this.userName = userName;
this.password = password; try
{
SecureCredential auditUserCredentialObject = new SecureCredential(userName, GetSecurePassword(password));
NTAccount account = new NTAccount(auditUserCredentialObject.Account);
SecurityIdentifier identifier = (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));
UserOrGroup key = UserOrGroup.CreateFromSid(identifier.Value); conn = new ServerConnection(serverName, serverPort, Profile.Administrator, auditUserCredentialObject, ServerConnection.InitializationStrategy.LazyInitialization, true, true);
if (conn.IsConnected)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
return false;
throw new HostingManagementException("Cannot connect to SCVMM server." + ex.Message);
}
}

介绍下config文件配置。server名填scvmm server地址,端口号默认是8100,登录名密码是域帐号,这里还有一个DomainSecurityGroup,这个在sample貌似没有用到,应该是用它来限制客户端使用身份,在Microsoft.Hosting.Management工程有一段。这些配置信息完全可以像套件配置一样放在数据库里。

 <appSettings>
<add key="DomainSecurityGroup" value="domain"/>
<add key="SCVMMServerName" value="localhost"/>
<add key="SCVMMServerPort" value="8100"/>
<add key="SCVMMUserName" value="domain\administrator"/>
<add key="SCVMMPassword" value="password"/>
</appSettings>

另外,在wcf定义的接口中,功能也是不完全的,开发者可以根据自己的需要更改。

比如获取共享库信息、刷新共享库,暴露接口就是没有的,但在sample中powershell都基本上已经封装好了,我们只需要写一些逻辑代码。建议在调用这些接口之前,用powershell命令试试。

 public static LibraryShare GetLibraryShareByName(ServerConnection conn, string name)
{
try
{
using (PSWrapper.CmdletProcessor cp = GetCmdletProcessor())
{
var list = PSWrapper.LibraryShare.Get(cp);
if (list.Length > )
{
return list.Where(x => x.Name.Equals(name)).FirstOrDefault();
}
return null;
}
}
catch (Exception ex)
{
throw new HostingManagementException("Failed to get Library Share:" + ex.Message, ex);
}
}

另外在学习sample的过程中可能会遇到以下两个错误。

The Windows PowerShell snap-in 'Microsoft.SystemCenter.VirtualMachineManager' is not installed on this computer.

这是本地没有安装scvmm服务,sample不要直接在本地运行,如果有需要可以安装一个scvmm,或者将wcf部署到scvmm所在系统的iis上。

No snap-ins have been registered for windows powershell version 2.

意思是说没有注册scvmm组件的管理单元。Microsoft.SystemCenter.VirtualMachineManager的powershell工具集只支持x64的平台,需要把vs项目的目标平台设置成64位的。

scvmm sdk之ddtkh(二)的更多相关文章

  1. Baxter机器人---安装SDK包(二)

    原创博文,转载请标明出处:--周学伟http://www.cnblogs.com/zxouxuewei/ 一.frist baxter robot workspace root@zxwubuntu-A ...

  2. 【Android类型SDK测试(二)】环境基础

    (一)语言 Android使用的Java语言,所以要测试Android类型的SDK,Java的基础知识还是需要的. 另外,Android中有NDK类型的编程,需要知道C相关的知识. (二)环境准备 A ...

  3. iOS开发——iOS7(及以后版本) SDK自带二维码(含条形码)扫码、二维码生成

    本文转载至 http://www.cnblogs.com/leotangcn/p/4357907.html 现在很多APP都涉及了二维码扫码功能,这个功能简单实用,很多情况下用户乐于使用,现在本文带来 ...

  4. Autodesk FBX SDK Program 中文 (二)

    这是Autodesk FBX SDK学习笔记第二篇.下面部分汉字翻译自Autodesk FBX SDK Program.翻译人:有道翻译. 上一篇讲了一些FBX SDK的基本操作.创建FbxManag ...

  5. ArcSDE SDK For Java二次开发介绍、演示样例

    在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 ...

  6. scvmm sdk之powershell(一)

    shell表示计算机操作系统中的壳层,与之相对的是内核,内核不能与用户直接交互,而是通过shell为用户提供操作界面,shell分为两类,一种提供命令行界面,一种提供图形界面.windows powe ...

  7. nRF5 SDK for Mesh(二) Getting started 快速开始

    Getting started To get started, take a look at the Light switch demo. It shows how a simple applicat ...

  8. Kinect for Windows SDK开发入门(二):基础知识 上

    原文来自:http://www.cnblogs.com/yangecnu/archive/2012/03/31/KinectSDK_Application_Fundamentals_Part1.htm ...

  9. 定时模块app_timer用法及常见问题—nRF5 SDK模块系列二

    app_timer是大家经常用到的一个库,app_timer的功能就是定时,也就是说,你在某一时刻启动一个app timer并设定超时时间,超时时间一到,app_timer就会回调timeout ha ...

随机推荐

  1. httpclient的几种请求URL的方式

    一.httpclient项目有两种使用方式.一种是commons项目,这一个就只更新到3.1版本了.现在挪到了HttpComponents子项目下了,这里重点讲解HttpComponents下面的ht ...

  2. Fri Oct 31 18:00:00 UTC+0800 2008转换为yyyy-mm-dd

    这个其实网上有很多例子,都是直接用js在前端做了时间处理,我的处理也一样,想要变成2008-3-31,就用下面的js直接可以处理 function Todate(num) { //Fri Oct 31 ...

  3. redis for windows之nosql还需要入门?

    RT:nosql给很多人的感觉就是上手特别快,本文也是一篇入门级的,哎~~ 又写了一篇没有卵用的博文,姑且把它当作一篇文档吧,还是没有发布/订阅.事件...等介绍的一篇残缺文档,幸好废话不是很多,凑合 ...

  4. Oracle数据库物理结构

    Oracle数据库物理结构 oracle的数据,实际上是以文件的形式来保存的,文件中出了保存用户的数据之外,还需要保存管理数据和日志数据等等.作为一个DBA,必须需要知道自己的数据分别保存在什么位置上 ...

  5. MVC中@Html.Action的用法

    MVC项目中如果有公共部分的代码就可以单独拿出来作为控件来用(比如头部和底部代码).跟ASP.NET中的ASCX实现的效果一样,但MVC比它方便的多. 想要实现该效果,需要知道@Html.Action ...

  6. leetcode131

    深度优先遍历(DFS),先判断前一个部分是否是回文,如果是,则将其加进集合中,然后继续判断后面的回文串. 在回溯的时候,将之前加入集合的串删除,重新选择回文串.每到达一次叶子节点,得到一组结果. pu ...

  7. Eclipse开启或取消快速导航栏(toggle breadcrumb)

    在Eclipse中快速调出导航栏 关闭导航栏: 在视图的设置中,去掉breadcrum的勾选状态

  8. 使用Visual Studio进行 Android开发的十大理由

    [原文发表地址]Top 10 reasons to use Visual Studio for C++ Android Development! Visual Studio: C++跨平台的移动解决方 ...

  9. Wrapper模式(Decorator模式)

    [Wrapper模式(Decorator模式)] 装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案. 意图: 动态地 ...

  10. Mybatis多表查询(一对一、一对多、多对多)

    Mybatis的多表级联查询 . 一对一可以通过<association>实现,一对多和多对多通过<collection>实现. <discriminator> 元 ...