【vSphere API学习笔记#2】vSphere API编程模型(vSphere API Programming Model)

vShere API 编程模型是vSphere中的一个基础概念。主要包括vSphere C/S结构,vSphere API即web服务,访问受管对象,访问vSphere服务器数据四部分。

vSphere API 编程模型

在本文中,重点掌握第一部分vSphere C/S结构就行。

一、vSphere C/S结构

vSphere 客户端应用采用了使用异步的通信模型的分布式结构。主要涉及到服务端的受管对象,客户端的受管对象引用以及数据对象。

受管对象:

受管对象在vSphere服务器上,vSphere服务器是指ESX/ESXi或vCenter Server。受管对象是指vSphere服务和组件,其中服务包括PropertyCollector、SearchIndex、PerformanceManager 和 ViewManager,组件包括清单对象,如VirtualMachine, Datastore, 和Folder。

受管对象引用:

受管对象引用在客户端应用上,是指服务器上的受管对象在客户端应用上的引用。在对象的生命周期内,受管对象应用是唯一的和持久的。对象在清单中,跨对话和服务器重启之后仍然存在。 如果从清单中删除对象(例如,虚拟机),然后将其重新放回,则引用将更改。

数据对象:

数据对象是包含受管对象信息的对象,主要存在于客户端和服务端的通信过程中。

vSphere client 和 vSphere Server通信示例

二、vSphere API即web服务

vSphere API是运行在ESX/ESXi和vCenter Server上与语言无关的Web服务。vSphere API 支持WS-I(Web Services Interoperability Organization ) Basic Profile1.0。WS-I(Web Services Interoperability Organization ) Basic Profile1.0包含如下内容:

  • XML Schema 1.0
  • SOAP 1.1
  • WSDL 1.1

vSphere API Web服务提供用于监视和管理vSphere组件(如计算资源,虚拟机,网络,存储等)所需的所有操作的访问。

2.1 WSDL文件和客户端代理接口

vSphere Web Services SDK提供了一组定义vSphere Web Services API的WSDL(Web服务描述语言)文件。 Web服务开发工具(如JAX-WS wsimport)或Microsoft .NET wsdl.exe使用这些WSDL文件来生成客户端代理代码。

客户端代理提供特定语言的vSphere API,例如使用Java或C#。客户端代理使用SOAP(简单对象访问协议),用于与vSphere服务器交换WSDL消息。

使用客户端代理接口进行C/S通信

使用客户端代理接口,必须引入vSphere API客户端库文件。C#使用using VimApi,Java使用 import com.vmware.vim25.*。

Notice:

vSphere Web Services SDK包括使用JAX-WS工具包生成的Java客户端代理代码。 如果开发平台上的Java和JAX-WS版本与用于生成SDK中提供的代理接口的版本相同,则不必从WSDL生成客户端代理代码。

2.2 网络访问vSphere Web 服务

vSphere客户端默认使用HTTPS协议与vSphere服务器进行通信。

2.3 特定语言的类和方法

SOAP工具生成与WSDL定义相匹配的特定于语言的类和方法。 工具还会生成不在WSDL文件中的对象和方法。

客户端代理定义
元素访问 Java C#
访问vSphere Web服务(HTTP/HTTPS) VimServiceLocator类 AppUtil 类
访问vSphere API 方法 VimPortType 类 VimService 类
访问vSphere API 属性 数据对象定义的getPropertyName和 setPropertyName
方法
属性定义的get 和 set 方法
vSphere 数据对象 vSphere API中的数据对象在客户端代理接口中被定义为对象

2.4 映射XML数据类型到JAVA和C#数据类型

Java和.NET数据类型映射的标准XML模式基元
XML Schema Java .NET Data Type
xsd:base64binary byte[] Byte[]
xsd:boolean boolean Boolean
xsd:byte byte SByte
xsd:dateTime java.util.Calendar DateTime
xsd:decimal java.math.BigDecimal Decimal
xsd:double double Double
xsd:float float Single
xsd:int int Int32
xsd:string java.lang.String String

三、访问受管对象

客户端应用程序通过ServiceInstance受管对象及其关联的ServiceContent数据对象获取对受管对象的访问。 ServiceContent数据对象包含服务和管理实体的受管对象引用以及清单的根文件夹。ServiceInstance是清单的根对象。

四、访问vSphere服务器数据

通过查询受管对象的属性来获取虚拟化基础组件的信息。

4.1 从服务器获取信息

从服务器获取信息的方法:

  • 使用getter方法
  • 使用 PropertyCollector 获取特定的属性值
  • 使用 SearchIndex。

4.2 数据结构

属性值的数据结构类型:

  • 简单的数据类型,如string, boolean 或者integer。
  • 简单数据类型或数据对象的数组。如SessionManager 受管对象的sessionList属性是一个由UserSession数据对象组成的数组。
  • 预先定义枚举类型值。如虚拟机的电源状态—poweredOn, poweredOff 或 suspended。
  • 复杂的数据结构。

 

 

0

发表评论

电子邮件地址不会被公开。 必填项已用*标注

微信扫一扫,分享到朋友圈

【vSphere API学习笔记#2】vSphere API编程模型(vSphere API Programming Model)
返回顶部