24、深入理解 Windows Management Instrumentation(WMI)及其应用

深入理解 Windows Management Instrumentation(WMI)及其应用

1. 引言

Windows Management Instrumentation(WMI)是微软为其 Windows 操作系统提供的主要系统和应用程序管理支持技术。它提供了访问和管理 Windows 资源的基础设施,使得用户可以通过脚本语言(如 VBScript)来查询、交互和管理各种资源,包括文件系统、事件日志、打印机、磁盘驱动器等。

2. WMI 概述

2.1 WMI 能管理的资源

WMI 提供了对众多资源的访问和管理能力,具体如下:
- 文件系统
- 事件日志
- 打印机
- 磁盘驱动器
- 注册表
- 共享资源
- 活动进程
- 服务
- 调度程序
- 性能数据
- 网络服务(DHCP、DNS 和 SNMP)
- 系统硬件(主板、内存等)

此外,WMI 还支持对资源的实时监控,例如生成事件日志记录、修改 Windows 注册表或文件系统。

2.2 WMI 的发展历程

微软在 1998 年将 WMI 作为 Windows NT Service Pack 4 的一部分首次发布。从 Windows 2000 开始,所有 Windows 计算机都预装了 WMI。WMI 实际上是基于 Web-Based Enterprise Management(WBEM)标准的微软实现,同时也符合 Common Information Model(CIM)标准,这两个标准均由 Distributed Management Task Force(DMTF)开发。

2.3 WMI 的优势

WMI 的优势在于它能够本地和远程管理运行微软操作系统的计算机。通过像 VBScript 这样的脚本语言和 Windows Script Host(WSH),用户可以以编程方式与 Windows 计算机上的几乎所有主要组件(包括硬件和软件)进行交互和管理。此外,WMI 还提供了对网络资源(如 DNS 和 DHCP)的访问,支持跨网络对 Windows 计算机进行远程管理,但需要执行脚本的管理员具有对远程系统资源的适当访问权限。

3. WMI 基础设施概述

WMI 框架由三个主要部分组成:
- 消费者(Consumers) :使用 WMI 基础设施访问和管理受管资源的脚本、应用程序或管理工具。
- WMI 基础设施 :由四个组件(WMI 脚本库、CIM 对象管理器、WMI 提供程序和公共信息模型)组成,提供定义和访问受管资源的框架。
- 受管资源(Managed resources) :由 WMI 暴露的物理或逻辑组件(如磁盘驱动器和 Windows 服务),允许收集有关资源状态的数据,并对资源进行监控和管理。

下面是 WMI 基础设施各组件的交互流程图:

graph LR
    A[消费者] --> B[WMI 基础设施]
    B --> C[受管资源]
    C --> B
    B --> A
    B1[WMI 脚本库] --> B
    B2[CIM 对象管理器] --> B
    B3[WMI 提供程序] --> B
    B4[公共信息模型] --> B

3.1 识别 WMI 消费者

WMI 消费者是任何通过 WMI 基础设施访问和管理受管资源的脚本、程序或工具。常见的 WMI 消费者包括企业管理应用程序(如 Microsoft Systems Management Server)和由 WSH 执行的 VBScript。接下来将介绍如何开发作为 WMI 消费者的 VBScript 来访问和管理 Windows 资源。

3.2 剖析 WMI 基础设施

WMI 基础设施由四个主要组件构成,通过这些组件可以暴露、访问和管理受管资源:
| 组件名称 | 描述 |
| ---- | ---- |
| WMI 脚本库 | 提供对 WMI 基础设施的访问,包含一组对象,用于以编程方式检索 WMI 数据和管理受管资源。 |
| CIM 对象管理器(CIMOM) | 负责管理消费者应用程序和 WMI 提供程序之间的数据交换,同时也是消费者访问 WMI 和提交请求的接口。 |
| 公共信息模型(CIM) | 用于存储和管理所有 WMI 命名空间的存储库,其中包含每个受管资源的类定义。 |
| WMI 提供程序 | 作为 WMI 与资源进行交互和管理的接口。 |

3.2.1 WMI 脚本库

要使用 VBScript 开发 WMI 消费者,需要了解脚本如何与 WMI 脚本库进行交互。WMI 脚本库通过提供一组对象来方便对 WMI 管理资源进行脚本编写,这些对象为访问 WMI 基础设施提供了一致的接口。在 VBScript 中,可以通过连接到 WMI 服务,然后检索 WMI 受管资源的实例,从而访问特定类型 WMI 类的属性和方法,还可以执行根据指定条件检索数据的查询。

3.2.2 CIM 对象管理器

CIM 对象管理器(CIMOM)管理提供程序和消费者之间的数据交换。除了管理从受管资源检索数据外,CIMOM 还作为消费者访问 WMI 和提交请求的接口。CIMOM 为 WMI 提供了一系列服务,包括:
- 查询管理:允许消费者使用 WMI 查询语言(WQL)提交收集 WMI 信息的查询。
- 路由管理:自动将信息请求路由到适当的提供程序,以检索指定受管资源的数据。
- 远程访问管理:通过建立与其他网络计算机上运行的 CIMOM 的连接,方便对网络计算机进行远程访问。
- 提供程序注册:允许提供程序向 WMI 注册,并标识它们可以执行的数据类型和任务。
- WMI 安全:通过确保用户具有适当的安全权限来限制对 WMI 资源的访问。

CIMOM 从公共信息模型(CIM)中检索信息,以便确定将请求交给哪个提供程序来满足 WMI 请求。

3.2.3 公共信息模型

WMI 通过存储在公共信息模型(CIM)中的类定义来维护有关不同类型资源的信息。CIM 是一个面向对象的存储库,用于存储 WMI 提供程序收集的信息,并负责管理所有存储库对象的定义。CIM 将信息组织成类,一个类定义了描述和控制受管资源交互的所有属性和方法。CIM 使用层次结构存储类,类似于 Windows 管理 Windows 文件系统的方式,其中命名空间大致相当于文件系统的文件夹。

CIM 包含每个受管资源的类,例如 Win32_OperatingSystem 类代表计算机的操作系统,该类定义了大量的属性和方法,如 BootDevice 属性用于标识计算机启动时用于加载 Windows 操作系统的磁盘驱动器,Win32Shutdown 方法可用于使用 Windows 支持的任何选项(注销、关机、重启等)关闭计算机。

以下是一些常见的 CIM 类:
- Win32_Service
- Win32_BIOS
- Win32_BaseBoard
- Win32_NTLogEvent
- Win32_OperatingSystem

3.2.4 WMI 提供程序

WMI 通过提供程序访问受管资源。提供程序作为 WMI(更具体地说是 CIMOM)与操作系统、网络和应用程序的不同部分之间的中介。每种类型的受管资源都有一个不同的 WMI 提供程序。常见的 WMI 提供程序包括:
- Win32 提供程序 :提供有关计算机的信息,包括文件系统、磁盘驱动器、操作系统、服务、打印机、共享资源等。
- 事件日志提供程序 :允许访问、读取、删除、复制和监控事件日志。
- 注册表提供程序 :允许以编程方式访问、修改和删除注册表键和值。
- Active Directory 提供程序 :允许与 Active Directory 对象进行交互和管理。

WMI 是一个可扩展的框架,软件开发人员可以开发额外的提供程序来暴露其应用程序的不同部分,从而通过 WMI 进行管理,例如 Internet Information Server 和 Systems Management Server 应用程序。

4. 识别受管资源

受管资源是指由 WMI 暴露(已为其定义了类)的任何硬件或软件组件。WMI 使用提供程序与受管资源进行通信,受管资源包括 Windows 文件系统、磁盘驱动器、事件日志、打印机、注册表、主板、进程、服务和共享资源等。

5. 编写 WMI 脚本

5.1 开发 WMI 脚本的基本步骤

大多数与 WMI 交互的 VBScript 通常通过执行以下三个基本步骤来实现:
1. 连接到 WMI :使用 GetObject 函数,传递 WMI 脚本库的名称和脚本要执行的计算机名称。例如:

set WMIServices = GetObject("winmgmts:\\DELL-PC")

也可以使用“.”来表示本地计算机:

Set WMIServices = GetObject("winmgmts:\\.")
  1. 检索对 WMI 受管资源的访问 :使用 SWbemServices 对象的 InstancesOf 方法来检索指定 WMI 类的数据。例如:
set WMICollection = WMIServices.InstancesOf("Win32_OperatingSystem")
  1. 检索结果或执行类方法 :处理 SWbemObjectSet 集合的内容,并使用不同 SWbemObject 属性和方法。

5.2 检索操作系统数据示例

以下是一个名为 GetOSInfo.vbs 的脚本,用于演示如何检索脚本执行所在计算机的操作系统信息:

'*************************************************************************
'Script Name: GetOSInfo.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script demonstrates how to use WMI to retrieve
'             operating system information
'*************************************************************************
'Initialization Section
Option Explicit
'Main Processing Section
DisplayData("DELL-PC")  'Set the computer on which the script will execute
WScript.Quit()  'Terminate script execution
'Procedure Section
'This function retrieves and displays operating system information
Function DisplayData(trgtSystem)
    DIM WMIServices, WMICollection, WMIObject
    Set WMIServices = GetObject("winmgmts:\\" & trgtSystem )
    Set WMICollection = WMIServices.InstancesOf("Win32_OperatingSystem")
    For Each WMIObject In WMICollection
        Wscript.Echo "Operating System:  " & WMIObject.Caption
        Wscript.Echo "OS Version Number: " & WMIObject.Version
        Wscript.Echo "OS Manufacturer:   " & WMIObject.Manufacturer
        Wscript.Echo "Service Pack:      " & WMIObject.ServicePackMajorVersion
        Wscript.Echo "SystemDirectory:   " & WMIObject.SystemDirectory
    Next
End Function

5.3 检索 Windows 服务信息示例

以下是一个名为 GetServicesInfo.vbs 的脚本,用于演示如何检索 Windows 服务的信息:

'*************************************************************************
'Script Name: GetServicesInfo.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script demonstrates how to use WMI to retrieve
'             information about Windows services
'*************************************************************************
'Initialization Section
Option Explicit
'Main Processing Section
DisplayData(".")  'Set the local system as the target
WScript.Quit()  'Terminate script execution
'Procedure Section
'This function displays the amount of physical memory on the target system
Function DisplayData(trgtSystem)
    DIM WMIServices, WMICollection, WMIObject
    Set WMIServices = GetObject("winmgmts:\\" & trgtSystem)
    Set WMICollection = WMIServices.InstancesOf("Win32_Service")
    For Each WMIObject In WMICollection
        WScript.Echo "Name:  " & WMIObject.DisplayName & vbCrLf & _
                     "State: " & WMIObject.State
    Next
End Function

6. 执行 WMI 查询

6.1 WMI 查询语言(WQL)概述

除了通过检索指定受管资源的实例来收集数据外,还可以使用 WMI 查询语言(WQL)提交查询,以检索匹配的 WMI 资源信息。WQL 是一种仅用于检索的语言,源自标准 SQL 语言,由一组小的语句组成。以下是 WQL 的关键字及其描述:
| 关键字 | 描述 |
| ---- | ---- |
| and | 如果两个组合的布尔表达式返回的结果都为 true,则返回 true 结果 |
| associators of | 返回给定资源类型的每个实例的列表 |
| class | 引用与指定查询对象关联的类 |
| from | 指定在 select 语句中使用的类 |
| group clause | 指示 WMI 创建一个代表一组事件的单个通知 |
| having | 通过指定 within 关键字在分组间隔期间要处理的事件类型来细化 select 语句查询 |
| is | 执行查询数据的比较 |
| isa | 对属于指定类的子类进行比较 |
| keysonly | 通过用 references of 和 associations of 查询产生的实例的键填充查询结果来减少查询开销 |
| like | 通过确定字符串是否出现在查询结果中来细化查询结果 |
| not | 反转处理查询结果时使用的逻辑 |
| null | 表示对象没有分配值的值 |
| or | 在制定查询时组合两个条件 |
| references of | 返回所有引用指定源实例的实例 |
| select | 指示在制定查询时要使用的特定属性 |
| true | 表示 true 结果的布尔值 |
| where | 通过允许指定所需条件来细化查询范围 |
| within | 设置事件查询要使用的轮询或分组间隔 |
| false | 表示 false 结果的布尔值 |

WQL 还支持一组标准的比较运算符,可在开发 select 子句时与 where 关键字结合使用,如下表所示:
| 运算符 | 描述 |
| ---- | ---- |
| = | 等于 |
| < | 小于 |
| <= | 小于或等于 |
| > | 大于 |
| >= | 大于或等于 |
| != | 不等于 |
| <> | 不等于 |

6.2 检索事件日志记录示例

以下是一个名为 GetEventLogInfo.vbs 的脚本,用于检索 Windows 系统事件日志中的记录:

'*************************************************************************
'Script Name: GetEventLogInfo.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script demonstrates how to use WMI to retrieve
'             records from the Windows event log
'*************************************************************************
'Initialization Section
Option Explicit
'Main Processing Section
DisplayData(".")  'Set the local system as the target
WScript.Quit()  'Terminate script execution
'Procedure Section
'This function retrieves and displays operating system information
Function DisplayData(trgtSystem)
    DIM WMIServices, WMICollection, WMIObject
    Set WMIServices = GetObject("winmgmts:\\" & trgtSystem)
    Set WMICollection = _
        WMIServices.ExecQuery("Select * from Win32_NTLogEvent where " & _
                              "LogFile = 'System' and EventType = 1", , 48)
    For Each WMIObject In WMICollection
        Wscript.Echo "Operating System:  " & WMIObject.Message
    Next
End Function

6.3 检索 BIOS 信息示例

以下是一个名为 GetBIOSInfo.vbs 的脚本,用于检索计算机的 BIOS 信息:

'*************************************************************************
'Script Name: GetBIOSInfo.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script demonstrates how to use WMI to retrieve
'             System BIOS information
'*************************************************************************
'Initialization Section
Option Explicit
'Main Processing Section
DisplayData(".")  'Set the local system as the target
WScript.Quit()  'Terminate script execution
'Procedure Section
'This function retrieves and displays operating system information
Function DisplayData(trgtSystem)
    DIM WMIServices, WMICollection, WMIObject
    Set WMIServices = GetObject("winmgmts:\\" & trgtSystem)
    Set WMICollection = WMIServices.ExecQuery("Select * from Win32_BIOS", , 48)
    For Each WMIObject In WMICollection
        Wscript.Echo "Name:          " & WMIObject.Name
        Wscript.Echo "Manufacturer:  " & WMIObject.Manufacturer
        Wscript.Echo "Serial Number: " & WMIObject.SerialNumber
        Wscript.Echo "Version:       " & WMIObject.Version
        Wscript.Echo "Status:        " & WMIObject.Status
    Next
End Function

6.4 检索主板数据示例

以下是一个名为 GetMotherBoardInfo.vbs 的脚本,用于检索计算机的主板信息:

'*************************************************************************
'Script Name: GetMotherBoardInfo.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script demonstrates how to use WMI to retrieve
'             motherboard information
'*************************************************************************
'Initialization Section
Option Explicit
'Main Processing Section
DisplayData(".")  'Set the local system as the target
WScript.Quit()  'Terminate script execution
'Procedure Section
'This function retrieves and displays operating system information
Function DisplayData(trgtSystem)
    DIM WMIServices, WMICollection, WMIObject
    Set WMIServices = GetObject("winmgmts:\\" & trgtSystem)
    Set WMICollection = _
        WMIServices.ExecQuery("Select * from Win32_BaseBoard", , 48)
    For Each WMIObject In WMICollection
        Wscript.Echo "Name:         " & WMIObject.Name
        Wscript.Echo "Manufacturer: " & WMIObject.Manufacturer
        Wscript.Echo "Status:       " & WMIObject.Status
        Wscript.Echo "Class Name:   " & WMIObject.CreationClassName
        Wscript.Echo "Version:      " & WMIObject.Version
    Next
End Function

7. 使用 WMI 操作受管资源

前面的示例主要展示了如何检索和显示 WMI 信息,实际上,除了检索 WMI 数据外,还可以使用 WMI 与受管资源进行交互和管理。以下是一个名为 WMIServiceCycler.vbs 的脚本,用于演示如何使用 VBScript 停止和启动 Windows 服务:

'*************************************************************************
'Script Name: WMIServiceCycler.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script demonstrates how to use VBScript to stop and
'             start Windows services.
'*************************************************************************
'Initialization Section
Option Explicit
Dim strServiceToManage
'Main Processing Section
'Prompt the user to specify the name of the service to cycle
strServiceToManage = InputBox("What service would you like to cycle?")
'Call the procedure that stops a service
StopService(strServiceToManage)
'Pause for 5 seconds
WScript.Sleep(5000)
'Call the procedure that starts a service
StartService(strServiceToManage)
'Terminate script execution
WScript.Quit()
'Procedure Section
'This subroutine stops a specified service
Function StopService(ServiceName)
    Dim wbemService, listOfServices, windowsService
    Set wbemService = GetObject("winmgmts:\\.")
    Set listOfServices = wbemService.InstancesOf("Win32_Service")
    For Each windowsService In listOfServices
        If windowsService.Name = ServiceName Then
            MsgBox("Stopping " + windowsService.Name)
            windowsService.StopService
        End If
    Next
End Function
'This subroutine starts a specified service
Function StartService(ServiceName)
    Dim wbemService, listOfServices, windowsService
    Set wbemService = GetObject("winmgmts:\\.")
    Set listOfServices = wbemService.InstancesOf("Win32_Service")
    For Each windowsService In listOfServices
        If windowsService.Name = ServiceName Then
            MsgBox("Starting " + windowsService.Name)
            windowsService.StartService
        End If
    Next
End Function

当执行此脚本时,它会显示一个弹出对话框,要求用户输入要停止并重新启动的 Windows 服务的名称。

综上所述,WMI 为 Windows 系统的管理提供了强大而灵活的工具。通过 VBScript 脚本和 WMI,用户可以方便地查询、监控和管理各种系统资源,提高系统管理的效率和自动化程度。无论是系统管理员还是开发人员,都可以利用 WMI 的功能来实现更高效的系统管理和应用开发。

8. 更多 WMI 脚本应用场景

8.1 监控磁盘空间

下面是一个用于监控磁盘空间的 VBScript 脚本示例:

'*************************************************************************
'Script Name: MonitorDiskSpace.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script monitors the disk space of the local computer.
'*************************************************************************
'Initialization Section
Option Explicit
Dim wmiService, diskDrives, drive
Set wmiService = GetObject("winmgmts:\\.")
Set diskDrives = wmiService.InstancesOf("Win32_LogicalDisk")

For Each drive In diskDrives
    If drive.DriveType = 3 Then ' 3 represents hard disk drives
        Dim freeSpace, totalSpace
        freeSpace = CDbl(drive.FreeSpace) / (1024 * 1024 * 1024)
        totalSpace = CDbl(drive.Size) / (1024 * 1024 * 1024)
        Dim usageRate
        usageRate = (totalSpace - freeSpace) / totalSpace * 100
        WScript.Echo "Drive: " & drive.DeviceID
        WScript.Echo "Total Space: " & FormatNumber(totalSpace, 2) & " GB"
        WScript.Echo "Free Space: " & FormatNumber(freeSpace, 2) & " GB"
        WScript.Echo "Usage Rate: " & FormatNumber(usageRate, 2) & "%"
        If usageRate > 80 Then
            WScript.Echo "Warning: Disk space usage is over 80%!"
        End If
    End If
Next

这个脚本会遍历本地计算机的所有硬盘驱动器,计算每个驱动器的总空间、可用空间和使用率,并在使用率超过 80% 时发出警告。

8.2 管理打印机

以下脚本展示了如何使用 WMI 管理打印机,例如列出所有打印机:

'*************************************************************************
'Script Name: ManagePrinters.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script lists all printers on the local computer.
'*************************************************************************
'Initialization Section
Option Explicit
Dim wmiService, printers, printer
Set wmiService = GetObject("winmgmts:\\.")
Set printers = wmiService.InstancesOf("Win32_Printer")

For Each printer In printers
    WScript.Echo "Printer Name: " & printer.Name
    WScript.Echo "Status: " & printer.Status
    WScript.Echo "Shared: " & printer.Shared
Next

该脚本会列出本地计算机上所有打印机的名称、状态和是否共享的信息。

9. WMI 脚本的优化与注意事项

9.1 性能优化

  • 减少不必要的查询 :在编写 WMI 脚本时,尽量避免执行不必要的查询。例如,如果只需要特定类的部分属性,就只查询这些属性,而不是使用 Select *
  • 合理使用缓存 :对于一些不经常变化的数据,可以考虑使用缓存机制,避免频繁查询 WMI。

9.2 错误处理

在编写 WMI 的 VBScript 脚本时,应该添加适当的错误处理代码,以确保脚本在遇到错误时能够优雅地处理,而不是直接崩溃。以下是一个简单的错误处理示例:

'*************************************************************************
'Script Name: ErrorHandlingExample.vbs
'Author:      Jerry Ford
'Created:     03/06/14
'Description: This script demonstrates error handling in WMI scripts.
'*************************************************************************
'Initialization Section
Option Explicit
On Error Resume Next ' 开启错误处理
Dim wmiService
Set wmiService = GetObject("winmgmts:\\.")
If Err.Number <> 0 Then
    WScript.Echo "Error: " & Err.Description
    Err.Clear
End If
On Error Goto 0 ' 关闭错误处理

9.3 安全注意事项

  • 权限管理 :确保执行 WMI 脚本的用户具有足够的权限来访问和管理相关的资源。
  • 避免硬编码敏感信息 :在脚本中不要硬编码用户名、密码等敏感信息,以免信息泄露。

10. 总结

通过前面的介绍,我们可以看到 WMI 在 Windows 系统管理中具有非常重要的作用。它提供了一个强大而灵活的框架,允许用户通过脚本语言(如 VBScript)来查询、监控和管理各种系统资源。

10.1 主要知识点回顾

  • WMI 基础设施 :包括消费者、WMI 基础设施(WMI 脚本库、CIM 对象管理器、公共信息模型、WMI 提供程序)和受管资源。
  • 编写 WMI 脚本的步骤 :连接到 WMI、检索对受管资源的访问、检索结果或执行类方法。
  • WMI 查询语言(WQL) :用于提交查询以检索匹配的 WMI 资源信息。
  • WMI 脚本的应用场景 :如检索系统信息、监控磁盘空间、管理打印机等。

10.2 未来展望

随着 Windows 系统的不断发展和更新,WMI 也会不断完善和扩展其功能。未来,我们可以期待 WMI 在更多领域得到应用,例如自动化运维、云计算环境下的系统管理等。同时,结合其他技术(如 PowerShell),可以进一步提高系统管理的效率和自动化程度。

下面是一个总结 WMI 脚本开发流程的 mermaid 流程图:

graph LR
    A[开始] --> B[连接到 WMI]
    B --> C[检索受管资源访问]
    C --> D[执行查询或操作]
    D --> E{是否有结果或操作成功?}
    E -- 是 --> F[处理结果或完成操作]
    E -- 否 --> G[错误处理]
    F --> H[结束]
    G --> B

总之,掌握 WMI 脚本开发对于 Windows 系统管理员和开发人员来说是一项非常有价值的技能,可以帮助他们更高效地管理和维护系统。

分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科学或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力学生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值