SDK generation method and apparatus
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-12-27
- Publication Date
- 2026-08-14
AI Technical Summary
当API服务成指数级增长时,SDK手动生成效率低,多为重复性工作,出错率高
[0030]利用本发明提供的SDK生成方法及装置,通过解析自定义注解的方式识别目标服务的API接口信息,再根据所述目标服务在开放平台的鉴权方式,为API接口信息添加认证授权方式,并将添加了认证授权方式的API接口信息分别存储于主数据库和多个从数据库。当接收第一用户发送的目标服务的SDK更新指令时,从主数据库解析出API接口信息,并根据API接口信息生成目标API接口信息文件,然后确定该目标API接口信息文件和上一次为第一用户生成目标服务对应的SDK时所用的历史API接口信息文件之间的第一差异内容,之后利用开放平台的SDK模板引擎基于第一差异内容,为第一用户生成目标服务对应的目标SDK。可以看出,生成SDK的过程无需人工操作,可有效降低人工成本,并避免由人工操作导致的错误。
Smart Images

Figure CN116360811B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of computer technology, and in particular to an SDK generation method and apparatus. Background Technology
[0002] With the development of artificial intelligence technology, open platforms have emerged, aiming to provide various Application Programming Interfaces (APIs) for users to access. Developers upload their services to the platform and generate corresponding Software Development Kits (SDKs), typically manually generated or updated by the developers. Users can download the corresponding SDKs and call the APIs through the open platform. However, as API services grow exponentially, manual SDK generation becomes inefficient, repetitive, and prone to errors. Therefore, automating SDK generation within open platforms has become a pressing need. Summary of the Invention
[0003] To address the aforementioned issues, this invention provides an SDK generation method and apparatus that can automatically generate SDKs within an open platform, effectively reducing labor costs and avoiding errors caused by manual operation.
[0004] To achieve the above objectives, in a first aspect, embodiments of the present invention provide an SDK generation method, the method comprising:
[0005] Identify the API interface information of the target service by parsing custom annotations;
[0006] Based on the authentication method of the target service on the open platform, add authentication and authorization methods to the API interface information;
[0007] The API interface information with added authentication and authorization methods is stored in the main database and multiple slave databases respectively;
[0008] Receive the SDK update instruction for the target service sent by the first user;
[0009] The API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information;
[0010] Determine the first difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the first user last time;
[0011] Based on the first difference content, the SDK template engine of the open platform generates a target SDK corresponding to the target service for the first user. The target SDK includes test class call examples.
[0012] Preferably, the step of identifying the API interface information of the target service by parsing custom annotations includes: monitoring whether the API code of the target service has changed; if it has changed, then identifying the API interface information of the target service by parsing custom annotations.
[0013] Preferably, the method further includes: if the SDK of the target service has multiple copies, locking the target SDK before all target SDKs are generated to prevent the target SDK from being modified again; and releasing the lock of the target SDK after all target SDKs are generated.
[0014] Preferably, the method includes: if an SDK update instruction for the target service is received from a second user when generating the target SDK corresponding to the target service for the first user, then after generating the target SDK corresponding to the target service for the first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information; a second difference is determined between the target API interface information file and the historical API interface information file used when generating the SDK corresponding to the target service for the second user; and the target SDK corresponding to the target service for the second user is generated based on the second difference using the SDK template engine of the open platform, wherein the target SDK includes test class call examples.
[0015] Preferably, the method further includes: if the master database fails, setting one of the multiple slave databases as the master database; and when the failed database is repaired, setting it as a slave database of the current master database.
[0016] Preferably, the method further includes: periodically accessing the SDKs of various services in the open platform according to access samples, and outputting a warning message when the number of access anomalies exceeds a preset threshold.
[0017] In a second aspect, embodiments of the present invention provide an SDK generation apparatus, the apparatus comprising:
[0018] The identification unit is used to identify the API interface information of the target service by parsing custom annotations.
[0019] The addition unit is used to add an authentication and authorization method to the API interface information according to the authentication method of the target service on the open platform;
[0020] A storage unit is used to store the API interface information with added authentication and authorization methods in the main database and multiple slave databases respectively;
[0021] A receiving unit is configured to receive an SDK update instruction for the target service sent by the first user;
[0022] The parsing unit is used to parse the API interface information from the main database and generate a target API interface information file based on the API interface information;
[0023] The determining unit determines the first difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the first user last time.
[0024] The generation unit is used to generate a target SDK corresponding to the target service for the first user based on the first difference content using the SDK template engine of the open platform. The target SDK includes test class call examples.
[0025] Preferably, the parsing unit is specifically used to: monitor whether the API code of the target service has changed; if it has changed, identify the API interface information of the target service by parsing custom annotations.
[0026] Preferably, the apparatus further includes: a locking unit, configured to lock the target SDK before all target SDKs are generated if the target service SDK has multiple copies, so as to prevent the target SDK from being modified again; and release the lock on the target SDK after all target SDKs are generated.
[0027] Preferably, the parsing unit is further configured to: if, when generating the target SDK corresponding to the target service for the first user, a target service update instruction for the target service is received from the second user, then after generating the target SDK corresponding to the target service for the first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information; the determining unit is further configured to determine a second difference between the target API interface information file and the historical API interface information file used when generating the target service corresponding to the second user last time; the generating unit is further configured to use the SDK template engine of the open platform to generate the target SDK corresponding to the target service for the second user based on the second difference, wherein the target SDK includes test class call examples.
[0028] Preferably, the device further includes: a setting unit, configured to set one of the multiple slave databases as the master database if the master database fails; and to set the failed database as a slave database of the current master database after the failed database is repaired.
[0029] Preferably, the device further includes: an early warning unit, used to periodically access the SDKs of various services in the open platform according to access samples, and to output early warning information when the number of access anomalies exceeds a preset threshold of SDKs.
[0030] The SDK generation method and apparatus provided by this invention identify the API interface information of the target service by parsing custom annotations. Then, based on the authentication method of the target service on the open platform, an authentication and authorization method is added to the API interface information. The API interface information with the added authentication and authorization method is stored in a main database and multiple slave databases. When an SDK update command for the target service is received from a first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information. Then, the first difference between this target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was previously generated for the first user is determined. Finally, based on the first difference, the SDK template engine of the open platform generates the target SDK corresponding to the target service for the first user. It can be seen that the SDK generation process requires no manual operation, effectively reducing labor costs and avoiding errors caused by manual operation. Attached Figure Description
[0031] The above and other objects, features, and advantages of this application will become more apparent from the more detailed description of the embodiments of this application in conjunction with the accompanying drawings. The drawings are provided to further illustrate the embodiments of this application and form part of the specification. They are used together with the embodiments of this application to explain this application and do not constitute a limitation thereof. In the drawings, the same reference numerals generally represent the same components or steps.
[0032] Figure 1 A flowchart illustrating an SDK generation method provided for an exemplary embodiment of this application;
[0033] Figure 2 A structural diagram of an SDK generation apparatus provided as an exemplary embodiment of this application;
[0034] Figure 3 A structural diagram of an electronic device provided as an exemplary embodiment of this application. Detailed Implementation
[0035] Hereinafter, exemplary embodiments according to this application will be described in detail with reference to the accompanying drawings. Obviously, the described embodiments are merely some embodiments of this application, and not all embodiments of this application. It should be understood that this application is not limited to the exemplary embodiments described herein.
[0036] Figure 1 This is a flowchart illustrating an SDK generation method according to an embodiment of this application. This SDK generation method can be applied to electronic devices. Figure 1 As shown, the SDK generation method provided in this embodiment includes:
[0037] Step 101: Identify the API interface information of the target service by parsing custom annotations.
[0038] Specifically, this can be achieved by installing a custom annotation parsing component in the target service's source code and enabling the component through a configuration file. This way, as long as developers add custom annotations according to predetermined rules when writing the source code, they can identify the target service's API interface information based on these custom annotations.
[0039] Preferably, the custom annotation parsing component is not limited by development language or interface type.
[0040] In one example, API interface information includes, but is not limited to, parameter types and default values.
[0041] In one example, step 101 specifically includes:
[0042] The system monitors whether the API code of the target service has changed. If changes occur, it identifies the API interface information of the target service by parsing custom annotations. This allows for automatic and timely identification of new API interface information without the need for manual checks.
[0043] Step 102: Add authentication and authorization methods to the API interface information according to the authentication method of the target service on the open platform.
[0044] Step 103: Store the API interface information with added authentication and authorization methods in the main database and multiple slave databases respectively.
[0045] In one example, if the primary database fails, one of the multiple secondary databases is set as the primary database; once the failed database is repaired, it is set as a secondary database of the current primary database.
[0046] In a specific example, a high-availability solution with a master-slave architecture and read / write separation can be provided. Since the database stores API interface information files, and SDK generation requires reading these files from the database, and API version iterations necessitate modifying these files by writing them back to the database, a large number of user requests for SDK generation and modification can easily exceed the database's capacity. Given that this business type is characterized by high read / low write operations and low data volume, a database deployment strategy can be configured as a master-slave architecture with read / write separation. For example, a master write database A and multiple slave write databases B, C, and D can be set up. When master write database A fails, slave write database B is promoted to master, and slave write databases C and D are made slaves of B. After A recovers, it becomes a slave of B, significantly improving database high availability and ensuring that SDK generation and download services continue even after a single node failure.
[0047] Understandably, an API interface information file can also be generated based on the API interface information, and this API interface information file can be backed up to the server for users to use when updating the SDK through other means.
[0048] Step 104: Receive the SDK update command for the target service sent by the first user.
[0049] Step 105: Parse the API interface information from the main database and generate the target API interface information file based on the API interface information.
[0050] Step 106: Determine the first difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the first user last time.
[0051] Understandably, if there are no differences, the process ends.
[0052] Step 107: Based on the first difference content, use the SDK template engine of the open platform to generate the target SDK corresponding to the target service for the first user.
[0053] The target SDK includes sample test class calls.
[0054] In one example, where there are multiple copies of the SDK for the target service and multiple users are updating simultaneously, the method in this embodiment may further include:
[0055] If the target service SDK has multiple replicas, lock the target SDK before all target SDKs are generated to prevent the target SDK from being modified again; release the lock on the target SDK after all target SDKs are generated to ensure the consistency of multiple replicas.
[0056] Understandably, if there is no copy of the target service's SDK, the SDK needs to be locked during the long SDK generation process to prevent users from updating the SDK through other means and causing conflicts.
[0057] If an SDK update instruction for the target service sent by the second user is received while generating the target SDK for the target service for the first user, then after generating the target SDK for the target service for the first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information; the second difference between the target API interface information file and the historical API interface information file used when generating the target SDK for the target service for the second user is determined.
[0058] By leveraging the SDK template engine of the open platform, a target SDK corresponding to the target service is generated for the second user based on the second difference content. This target SDK includes test class call examples, which ensures data consistency in scenarios where multiple users update simultaneously.
[0059] In one example, for situations such as SDK file errors, incomplete files, or access errors, the method in this embodiment may further include:
[0060] The system periodically accesses the SDKs of various services in the open platform according to the access examples. When the number of access anomalies exceeds a preset threshold, an early warning message is output.
[0061] In a specific example, the SDK in the open platform's storage space is polled daily, and the interfaces provided in the SDK are accessed according to the access examples. The returned response codes are then analyzed. The number of consecutive abnormal service accesses is recorded, and an alert is issued when the number exceeds a certain threshold. This enables rapid detection and monitoring of SDK anomalies.
[0062] By utilizing the SDK generation method provided in this embodiment of the invention, the API interface information of the target service is identified by parsing custom annotations. Then, based on the authentication method of the target service on the open platform, an authentication and authorization method is added to the API interface information, and the API interface information with the added authentication and authorization method is stored in a main database and multiple slave databases. When an SDK update instruction for the target service is received from a first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information. Then, the first difference between this target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was previously generated for the first user is determined. Finally, based on the first difference, the target SDK corresponding to the target service is generated for the first user using the SDK template engine of the open platform. It can be seen that the SDK generation process does not require manual operation, effectively reducing labor costs and avoiding errors caused by manual operation.
[0063] This invention provides an SDK generation device. Figure 2 This is a structural diagram of the SDK generation device. The device may include:
[0064] Identification unit 201 is used to identify the API interface information of the target service by parsing custom annotations;
[0065] Adding unit 202 is used to add an authentication and authorization method to the API interface information according to the authentication method of the target service on the open platform;
[0066] Storage unit 203 is used to store the API interface information with added authentication and authorization methods in the main database and multiple slave databases respectively;
[0067] The receiving unit 204 is configured to receive the SDK update instruction for the target service sent by the first user;
[0068] The parsing unit 205 is used to parse the API interface information from the main database and generate a target API interface information file based on the API interface information;
[0069] Determining unit 206 determines the first difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the first user last time;
[0070] The generation unit 207 is used to generate a target SDK corresponding to the target service for the first user based on the first difference content using the SDK template engine of the open platform. The target SDK includes test class call examples.
[0071] Preferably, the parsing unit 201 is specifically used to: monitor whether the API code of the target service has changed; if it has changed, identify the API interface information of the target service by parsing custom annotations.
[0072] Preferably, the apparatus further includes: a locking unit (not shown in the figure), used to lock the target SDK before all target SDKs are generated if the target service SDK has multiple copies, so as to prevent the target SDK from being modified again; and to release the lock of the target SDK after all target SDKs are generated.
[0073] Preferably, the parsing unit 205 is further configured to: if, when generating the target SDK corresponding to the target service for the first user, a target service update instruction for the target service is received from the second user, then after generating the target SDK corresponding to the target service for the first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information; the determining unit 206 is further configured to determine the second difference content between the target API interface information file and the historical API interface information file used when generating the target service corresponding to the second user last time; the generating unit 207 is further configured to use the SDK template engine of the open platform to generate the target SDK corresponding to the target service for the second user based on the second difference content, wherein the target SDK includes test class call examples.
[0074] Preferably, the device further includes: a setting unit (not shown in the figure), used to set one of the multiple slave databases as the master database if the master database fails; and to set the failed database as a slave database of the current master database after the failed database is repaired.
[0075] Preferably, the device further includes: an early warning unit (not shown in the figure), used to periodically access the SDKs of various services in the open platform according to access samples, and output early warning information when the number of access anomalies exceeds a preset threshold of SDKs.
[0076] By utilizing the SDK generation device provided in this embodiment of the invention, the API interface information of the target service is identified by parsing custom annotations. Then, based on the authentication method of the target service on the open platform, an authentication and authorization method is added to the API interface information, and the API interface information with the added authentication and authorization method is stored in a main database and multiple slave databases. When an SDK update instruction for the target service is received from a first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information. Then, the first difference between this target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was previously generated for the first user is determined. Finally, based on the first difference, the SDK template engine of the open platform generates the target SDK corresponding to the target service for the first user. It can be seen that the SDK generation process does not require manual operation, effectively reducing labor costs and avoiding errors caused by manual operation.
[0077] Below, for reference Figure 3 To describe the electronic device 11 according to an embodiment of this application.
[0078] like Figure 3 As shown, the electronic device 11 includes one or more processors 111 and memory 112.
[0079] The processor 111 may be a central processing unit (CPU) or other form of processing unit with data processing capabilities and / or instruction execution capabilities, and may control other components in the electronic device 11 to perform desired functions.
[0080] The memory 112 may include one or more computer program products, which may include various forms of computer-readable storage media, such as volatile memory and / or non-volatile memory. The volatile memory may include, for example, random access memory (RAM) and / or cache memory. The non-volatile memory may include, for example, read-only memory (ROM), hard disk, flash memory, etc. One or more computer program instructions may be stored on the computer-readable storage medium, and the processor 111 may execute the program instructions to implement the SDK generation methods of the various embodiments of this application described above and / or other desired functions. Various contents such as input signals, signal components, and noise components may also be stored in the computer-readable storage medium.
[0081] In one example, the electronic device 11 may also include an input device 113 and an output device 114, which are interconnected via a bus system and / or other forms of connection mechanism (not shown).
[0082] The input device 113 may include, for example, a keyboard, a mouse, etc.
[0083] The output device 114 can output various information to the outside, including determined distance information, direction information, etc. The output device 114 may include, for example, a display, a speaker, a printer, and a communication network and its connected remote output devices, etc.
[0084] Of course, for the sake of simplicity, Figure 3 Only some of the components of the electronic device 11 relevant to this application are shown in this illustration; components such as buses, input / output interfaces, etc., are omitted. In addition, the electronic device 11 may include any other suitable components depending on the specific application.
[0085] In addition to the methods and apparatus described above, embodiments of this application may also be computer program products, which include computer program instructions that, when executed by a processor, cause the processor to perform the steps in the SDK generation methods according to various embodiments of this application described in the "Exemplary Methods" section of this specification.
[0086] The computer program product can be written in any combination of one or more programming languages to perform the operations of the embodiments of this application. The programming languages include object-oriented programming languages such as Java and C++, as well as conventional procedural programming languages such as C or similar languages. The program code can be executed entirely on the user's computing device, partially on the user's computing device, as a standalone software package, partially on the user's computing device and partially on a remote computing device, or entirely on a remote computing device or server.
[0087] Furthermore, embodiments of this application may also be computer-readable storage media storing computer program instructions thereon, which, when executed by a processor, cause the processor to perform the steps in the SDK generation methods according to various embodiments of this application described in the "Exemplary Methods" section of this specification.
[0088] The computer-readable storage medium may be any combination of one or more readable media. A readable medium may be a readable signal medium or a readable storage medium. A readable storage medium may, for example, include, but is not limited to, electrical, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatuses, or devices, or any combination thereof. More specific examples of readable storage media (a non-exhaustive list) include: electrical connections having one or more wires, portable disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fibers, portable compact disk read-only memory (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination thereof.
[0089] The basic principles of this application have been described above with reference to specific embodiments. However, it should be noted that the advantages, benefits, and effects mentioned in this application are merely examples and not limitations, and should not be considered as essential features of each embodiment of this application. Furthermore, the specific details disclosed above are for illustrative and facilitative purposes only, and are not limitations. These details do not limit the application to the necessity of employing the aforementioned specific details for implementation.
[0090] The block diagrams of devices, apparatuses, devices, and systems involved in this application are merely illustrative examples and are not intended to require or imply that they must be connected, arranged, or configured in the manner shown in the block diagrams. As those skilled in the art will recognize, these devices, apparatuses, devices, and systems can be connected, arranged, and configured in any manner. Words such as “comprising,” “including,” “having,” etc., are open-ended terms meaning “including but not limited to,” and are used interchangeably with them. The terms “or” and “and” as used herein refer to the terms “and / or,” and are used interchangeably with them unless the context clearly indicates otherwise. The term “such as” as used herein refers to the phrase “such as but not limited to,” and is used interchangeably with it.
[0091] It should also be noted that in the apparatus, equipment, and methods of this application, the components or steps can be disassembled and / or recombined. These disassemblies and / or recombinations should be considered as equivalent solutions of this application.
[0092] The above description of the disclosed aspects is provided to enable any person skilled in the art to make or use this application. Various modifications to these aspects will be readily apparent to those skilled in the art, and the general principles defined herein can be applied to other aspects without departing from the scope of this application. Therefore, this application is not intended to be limited to the aspects shown herein, but rather to be accorded the widest scope consistent with the principles and novel features disclosed herein.
[0093] The above description has been given for purposes of illustration and description. Furthermore, this description is not intended to limit the embodiments of this application to the forms disclosed herein. Although numerous exemplary aspects and embodiments have been discussed above, those skilled in the art will recognize certain variations, modifications, alterations, additions, and sub-combinations thereof.
Claims
1. An SDK generation method, characterized in that, The method includes: Identify the API interface information of the target service by parsing custom annotations; Based on the authentication method of the target service on the open platform, add authentication and authorization methods to the API interface information; The API interface information with added authentication and authorization methods is stored in the main database and multiple slave databases respectively; Receive the SDK update instruction for the target service sent by the first user; The API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information; Determine the first difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the first user last time; Based on the first difference content, the SDK template engine of the open platform generates a target SDK corresponding to the target service for the first user. The target SDK includes test class call examples. The method further includes: if the SDK of the target service has multiple copies, locking the target SDK before all target SDKs are generated to prevent the target SDK from being modified again; and releasing the lock on the target SDK after all target SDKs are generated. If, while generating the target SDK corresponding to the target service for the first user, an SDK update instruction for the target service sent by the second user is received, then after generating the target SDK corresponding to the target service for the first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information. Determine the second difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the second user last time; Based on the second difference content, the SDK template engine of the open platform generates a target SDK corresponding to the target service for the second user. The target SDK includes test class call examples.
2. The method according to claim 1, characterized in that, The method of identifying the API interface information of the target service by parsing custom annotations includes: Monitor whether the API code of the target service has changed; If changes occur, the API interface information of the target service will be identified by parsing custom annotations.
3. The method according to claim 1, characterized in that, The method further includes: If the primary database fails, one of the multiple secondary databases will be set as the primary database. Once the faulty database is repaired, it will be set as a slave database of the current master database.
4. The method according to claim 1, characterized in that, The method further includes: The system periodically accesses the SDKs of various services in the open platform according to the access examples. When the number of access anomalies exceeds a preset threshold, an early warning message is output.
5. An SDK generation apparatus, characterized in that, The device includes: The identification unit is used to identify the API interface information of the target service by parsing custom annotations. The addition unit is used to add an authentication and authorization method to the API interface information according to the authentication method of the target service on the open platform; A storage unit is used to store the API interface information with added authentication and authorization methods in the main database and multiple slave databases respectively; A receiving unit is configured to receive an SDK update instruction for the target service sent by the first user; The parsing unit is used to parse the API interface information from the main database and generate a target API interface information file based on the API interface information; The determining unit is used to determine the first difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the first user last time. The generation unit is used to generate a target SDK corresponding to the target service for the first user based on the first difference content using the SDK template engine of the open platform. The target SDK includes test class call examples. The locking unit is used to lock the target SDK before all target SDKs are generated if the target service SDK has multiple copies, so as to prevent the target SDK from being modified again; and to release the lock of the target SDK after all target SDKs are generated. The parsing unit is further configured to: if, when generating the target SDK corresponding to the target service for the first user, a target service SDK update instruction for the target service is received from the second user, then after generating the target SDK corresponding to the target service for the first user, the API interface information is parsed from the main database, and a target API interface information file is generated based on the API interface information; The determining unit is further configured to determine the second difference between the target API interface information file and the historical API interface information file used when the SDK corresponding to the target service was generated for the second user last time; The generation unit is further configured to use the SDK template engine of the open platform to generate a target SDK corresponding to the target service for the second user based on the second difference content, wherein the target SDK includes test class call examples.
6. The apparatus according to claim 5, characterized in that, The parsing unit is specifically used for: Monitor whether the API code of the target service has changed; If changes occur, the API interface information of the target service will be identified by parsing custom annotations.
Citation Information
Patent Citations
Software development kit generation method and device used for accessing server
CN103713896A
Version compatibility test method and apparatus
CN104932973A