MTS管理自动化

MTS管理自动化

关键词:VBScript

    MTS(Microsoft Transactin Server)是构筑安全、稳定的INTERNET/INTRANET应用的基础,在引进事务的概念后,你不用担心你的应用在崩溃时造成数据的不完整性。
    在ASP中可以方便地应用MTS,你可以编写支持MTS的组件,然后注册到MTS中。前提是你必须启动DTC(分布式事务管理器)服务。注册MTS组件是个比较麻烦的过程,特别是当你必须在多台机器上进行的时候,但幸亏MTS提供了管理对象,你可以通过编写简单的程序来自动地注册。下面这段拷自MTS文档:

MTS 管理自动化的 Visual Basic 示例应用程序

Visual Basic 5.0 版的示例应用程序演示了如何使用 Catalog、CatalogObject 以及 CatalogCollections 对象的方法来自动完成对一个名为““脚本化的管理示例”的软件包的基本管理功能。

注意 必须将您的 Visual Basic 工程配置为可以引用 MTS 管理类型库(MTSAdmin 类型库)。要引用 MTSAdmin 类型库,请从 Visual Basic 工程工具栏中选择“引用”选项。然后查找“MTS 2.0 管理类型库”可引用文件。对于后期绑定的变量(在运行程序时才绑定),如果 MTXADMIN.DLL 文件已在本地机器上注册,则 Visual Basic 只记录类型库的位置,而不进行进一步的配置。

删除已有的名为“Scriptable Admin Demo”的软件包

调用 CreateObject 方法实例化目录对象。

Dim catalog As Object
Set catalog = CreateObject("MTSAdmin.Catalog.1")
调用 GetCollection 方法获取一个 Packages 集合对象。返回的 Packages 集合不从目录取得任何数据,因此从 GetCollection 方法返回的集合是空的。

Dim packages As Object
Set packages = catalog.GetCollection("Packages")
填充这个 Packages 集合,读入所有软件包并查找“Scriptable Admin Demo”软件包,从而获得该软件包的已有版本。枚举该集合,在最高索引开始,就可以在循环内部调用 Remove 方法。Remove 方法负责释放该对象,从集合中删除该对象,以及移动集合中的对象,使第 (n+1) 个对象变为第 (n) 个对象,这里的 n 大于或等于正在被删除的索引。集合对象的 Remove 方法是立即生效的。在 Remove 方法之后的任何时刻调用 Item 和 Count 方法都将反映出索引的变化。不过,对软件包的删除要直到调用 SaveChanges 方法后才会反映到目录上(请参阅第 4步)。


packages.Populate
Dim pack As Object
n = packages.Count
For i = n - 1 To 0 Step -1
    If packages.Item(i).Value("Name") = "Scriptable Admin Demo" Then
    packages.Remove (i)
End If
Next
调用 SaveChanges 方法来保存对数据的更改。

packages.SaveChanges

》创建一个新的名为“Scriptable Admin Demo”的软件包

使用 Add 方法添加一个软件包,注意要指定软件包标识符。Add 方法将该对象添加到集合,但要到调用 SaveChanges 方法后才会将该变化应用到目录(请参阅第 3 步)。注意 Add 方法将把所有属性设为默认值。默认的标识符是一个新的具唯一性的标识符。

Dim newPack As Object
Dim newPackID As Variant
Set newPack = packages.Add
newPackID = newPack.Value("ID")

》更新 Name 和 SecurityEnabled 属性。

newPack.Value("Name") = "Scriptable Admin Demo"
newPack.Value("SecurityEnabled") = "N"
调用 SaveChanges 方法将这个新的软件包保存到目录。该调用的返回值是更改、添加或删除的对象数目。如果没有发生改变,该方法返回 0。

n = packages.SaveChanges
更新“Scriptable Admin Demo”软件包的属性以及获取 ComponentsInPackage 集合。

调用 PopulateByKey 方法,从目录读入该软件包。这需要传递一个包含用来读入的关键字的数组。在示例代码中,使用了一个包含单个元素(刚创建的软件包的标识符)的数组。

Dim keys(0) as Variant
keys(0) = newPackId
packages.PopulateByKey keys
从集合中获取该软件包对象

Dim package As Object
Set package = packages.Item(0)
更新软件包的 SecurityEnabled 属性。

package.Value("SecurityEnabled") = "Y"
调用 GetCollection 方法来取得 ComponentsInPackage 集合。将“Scriptable Admin Demo”软件包的关键字作为其中一个参数。

Set components = packages.GetCollection("ComponentsInPackage",_   package.Key)
调用 SaveChanges 方法将更改保存到目录。


packages.SaveChanges

》安装一个组件到“Scriptable Admin Demo”软件包:

调用 GetUtilInterface 方法来获取组件实用程序对象。一般使用该对象来安装组件。


Dim util As Object
Set util = components.GetUtilInterface
On Error GoTo installFailed
调用 InstallComponent 方法,用一个字符串传递包含要安装组件的动态链接库 (DLL) 的名字。如果该组件没有一个外部类型库或 proxy-stub DLL,则传递一个空字符串作为第二个和第三个参数。注意,在安装一个新组件之后,不必调用 SaveChanges 方法。InstallComponent 方法将安装 DLL 中包含的所有组件,且这些组件被立即写入到目录。可以调用 GetCLSIDs 方法来获取所安装的组件的类标识符。


Form2.Show 1
Dim thePath As String
thePath = Form2.MTSPath + "/samples/packages/vbacct.dll"
util.InstallComponent thePath, "", ""
Dim installedCLSIDs() as Variant
util.GetCLSIDs thePath, "", installedCLSIDs
On Error GoTo 0
调用 PopulateByKey 方法读回刚安装的组件。注意通过 InstallComponent 方法安装到软件包的组件在调用 Populate 或 PopulateByKey 方法从该目录中读回数据之前,在集合中是不可见的。


components.PopulateByKey installedCLSIDs

》从“Scriptable Admin Demo”软件包中查找并删除 Bank.CreateTable 组件:

逐个列枚组件,并使用 Item 和 Count 方法更改事务属性。


Dim component As Object
n = components.Count
For i = n - 1 To 0 Step -1
    Set component = components.Item(i)
    component.Value("Transaction") = "Required"
按索引查找并删除 Bank.CreateTable 组件。注意,为了在循环中能调用 Remove 方法,必须向后逐个枚举集合中的对象。


If component.Value("ProgID") = "Bank.CreateTable" Then
        components.Remove (i)
    End If
Next
取得一个新的计数,并再次枚举集合。注意要到调用 SaveChanges 方法后,才会从数据存储中删除 Bank.CreateTable 组件。如果安装成功,则显示一个消息框通知用户。


n = components.Count
For i = 0 To n - 1
    Set component = components.Item(i)
    Debug.Print component.Value("ProgID")
    Debug.Print component.Value("DLL")
Next

n = components.SaveChanges
MsgBox "Scriptable Admin Demo package installed and configured."
Exit Sub

installFailed:
    MsgBox "Error code " + Str$(Err.Number) + "installing " + thePath + "  Make sure the MTS path you entered is correct and that vbacct.dll is not already installed."
End Sub

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当使用 OpenLayers 加载 MTS(Mapbox Tileset)示例瓦片时,你可以按照以下步骤进行操作: 1. 首先,确保你已经引入了 OpenLayers 的 JavaScript 库。你可以从 OpenLayers 的官方网站下载最新版本的库文件,并将其引入到你的 HTML 页面中。 2. 在 HTML 页面中创建一个用于显示地图的 `<div>` 元素,给它一个唯一的 id。例如: ```html <div id="map"></div> ``` 3. 在 JavaScript 代码中,使用 OpenLayers 创建一个地图实例,并指定地图的初始视图和目标容器。例如: ```javascript var map = new ol.Map({ target: 'map', view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), // 设置地图的初始中心点 zoom: 10 // 设置地图的初始缩放级别 }) }); ``` 4. 接下来,创建一个用于加载 MTS 示例瓦片的图层。你需要指定 MTS 瓦片的 URL 模板、瓦片格式和投影信息。例如: ```javascript var mtsUrlTemplate = 'https://api.mapbox.com/styles/v1/{username}/{styleId}/tiles/256/{z}/{x}/{y}?access_token={accessToken}'; var mtsLayer = new ol.layer.Tile({ source: new ol.source.XYZ({ url: mtsUrlTemplate.replace('{username}', '<YOUR_USERNAME>') .replace('{styleId}', '<YOUR_STYLE_ID>') .replace('{accessToken}', '<YOUR_ACCESS_TOKEN>'), projection: 'EPSG:3857' // 设置投影信息 }) }); ``` 在上面的代码中,你需要将 `<YOUR_USERNAME>`、`<YOUR_STYLE_ID>` 和 `<YOUR_ACCESS_TOKEN>` 替换为你自己的 Mapbox 用户名、样式 ID 和访问令牌。 5. 最后,将 MTS 图层添加到地图实例中,并刷新地图以加载瓦片。例如: ```javascript map.addLayer(mtsLayer); map.updateSize(); ``` 通过上述步骤,你应该可以成功加载 MTS 示例瓦片到 OpenLayers 的地图中。请确保你已经替换了示例代码中的用户名、样式 ID 和访问令牌,并且保持你的访问令牌的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈俊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值