# US 2018/0321996 A1 · Micro- service framework derived from third-party apps

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0321996 A1
- Document ID: US20180321996A1
- Status: Published application
- Kind: A1
- Application number: 15/587,311
- Filed: 2017-05-04
- Published: 2018-11-08
- Earliest claimed: 2017-05-04
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Oriana RIVA; Suman K. NATH; Douglas C. BURGER; Yongjian HU
- Web page: https://patentgrep.com/patent/US20180321996A1

## CPC

- G06F 9/547: {Remote procedure calls [RPC]; Web services}
- G06F 8/75: Structural analysis for program understanding
- G06F 9/45545: {Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox}
- H04L 67/53: using third party service providers
- H04W 4/50: Service provisioning or reconfiguring
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Computer systems and methods for generating and interacting with a micro-service framework are provided. A micro-service corresponds to one or more deep link/API calls that carry out some particular function. A static analysis of an app is conducted, from one or more starting sources of the app to identify one or more valid and feasible execution paths, as well as corresponding input parameters within the app. Each valid execution path with corresponding input parameters represent a “deep link” or “API” for that app. The information regarding the deep link is collected and stored as a micro-service in a micro-service catalog. A micro-service framework is implemented that receives a micro-service request (i.e., a request that the micro-service be carried out on behalf of a computer user) from a UX client and executes that micro-service request via execution of the deep link.

## Claims

### Claim 1

A computer-implemented method for identifying one or more micro-services of an app, the method comprising:
identifying a first starting source of a target app, where the first starting source comprises a starting execution point of the target app;
conducting an analysis of the target app with regard to the identified first starting source;
identifying a first execution path within the target app as a result of the analysis of the target app with regard to the identified first starting source;
capturing details regarding execution of the first execution path as a micro-service; and
storing the captured details of the micro-service in a micro-service catalog.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1 further comprising:
identifying a plurality of execution paths as a result of the analysis of the target app with regard to the identified first starting source, including the first execution path; and
for each of the identified execution paths:
capturing details regarding execution of an execution path as a micro-service; and
storing the captured details of the micro-service in a micro-service catalog.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2 further comprising:
identifying a plurality of starting sources of the target app, including the first starting source of the target app; and
for each of the identified starting sources:
conducting an analysis of the target app with regard to an identified starting source;
identifying one or more execution paths within the target app as a result of the analysis of the target app with regard to the identified starting source;
capturing details regarding execution of each of the one or more execution paths as a corresponding one or more micro-services; and
storing the captured details of each of the one or more micro-services in a micro-service catalog.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3 further comprising:
for each of the identified starting sources, identifying one or more input parameters corresponding to each of the one or more execution paths;
wherein capturing details regarding execution of each of the one or more execution paths as a corresponding one or more micro-services comprises capturing details regarding execution of each of the one or more execution paths and the one or more input parameters corresponding to each of the one or more execution paths.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein identifying one or more execution paths within the target app as a result of the analysis of the target app with regard to the identified starting source comprises executing a path-selective taint analysis to filter out an infeasible or invalid execution path.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein identifying one or more input parameters corresponding to each of the one or more execution paths comprises executing a taint analysis of complex data structures to identify the one or more primitive-typed input parameters of the one or more execution paths.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the analysis comprises a static analysis of the target app, irrespective of dynamic execution of the target app.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein the static analysis is augemented by a satisfiability modulo theory (SMT) solver.

### Claim 9

A computer-implemented method for processing micro-service requests, the method comprising:
providing a micro-service catalog, the micro-service catalog identifying a plurality of micro-services available for execution, where each of the micro-services of the micro-service catalog corresponds to one or more application programming interface (API) calls to an online service;
receiving a request for a first micro-service of a computer user;
identifying the one or more API calls of the first micro-service to an online service; and
for each of the one or more API calls of the first micro-service:
issuing the API call to the online service; and
processing the return results of the API call for the computer user.

### Claim 10 (depends on 9)

The computer-implemented method of claim 9 further comprising:
preparing input parameters according to data associated with the first micro-service;
wherein issuing the API call to the online service comprises issuing the API call to the online service with the prepared input parameters.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10 further comprising:
providing a micro-service framework, the micro-service framework being configured to:
receive an execution request regarding a micro-service of the computer user; and
execute the micro-service in response to the received execution request;
wherein issuing the API call to the online service comprises issuing the API call to the online service by way of the micro-service framework.

### Claim 12 (depends on 11)

The computer-implemented method of claim 11, wherein the micro-service framework implements one or more virtual machines upon which executable code may be executed.

### Claim 13 (depends on 12)

The computer-implemented method of claim 12, wherein the micro-service framework hosts a plurality of operating systems executing on a virtual machine of the one or more virtual machines.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, wherein each of the plurality of operating systems hosts at least one app executing on a virtual machine within the hosting operating system.

### Claim 15 (depends on 14)

The computer-implemented method of claim 14, wherein issuing the API call to the online service by way of the micro-service framework comprises identifying an app corresponding to the requested micro-service and issuing the API call to the online service by way of the identified app executing in the micro-service framework.

### Claim 16 (depends on 15)

The computer-implemented method of claim 15, wherein the micro-service request is received from an executing processes operating in a first operating environment that is distinct from the operating environment of the identified app.

### Claim 17

A computer system for processing micro-service requests, the computer system comprising a processor and a memory, wherein the processor executes instructions stored in the memory as part of or in conjunction with additional components, the additional components comprising:
a micro-service request component that, in execution on the computer system, is configure to:
receive a micro-service request of a computer user;
identify an application programming interface (API) call of an online service corresponding to the requested micro-service according to a micro-service catalog; and
execute the identified API call of the online service by way of a micro-service framework; and
a micro-service framework hosted by the computer system, the micro-service framework being configured to:
receive an execution request regarding a micro-service of a computer user from the micro-service request component; and
execute the identified API call of the online service in response to the received execution request.

### Claim 18 (depends on 17)

The computer system of claim 17:
wherein the micro-service framework provides one or more virtual machines by which an API call is executed; and
wherein the micro-service framework hosts a plurality of operating systems executing on a virtual machine of the one or more virtual machines.

### Claim 19 (depends on 18)

The computer system of claim 18, wherein each of the plurality of operating systems hosts at least one app executing on a virtual machine of the one or more virtual machines within the hosting operating system.

### Claim 20 (depends on 19)

The computer system of claim 19, wherein executing the identified API call of the online service in response to the received execution request comprises:
identifying an app corresponding to the requested micro-service by way of the micro-service catalog; and
issuing the API call to the online service by way of the identified app executing in the micro-service framework.
