Patent application number | Description | Published |
20090133036 | COORDINATING RESOURCES USING A VOLATILE NETWORK INTERMEDIARY - The present invention extends to methods, systems, and computer program products for coordinating resources using a volatile network intermediary. Embodiments provide a mechanism for an network intermediary to facilitate a state coordination pattern between an application and a communication medium when the communication medium does not support the state coordination pattern. In some embodiments, receiving applications can make use of this network intermediary by changing the receive location. However, the receiving application may not be able to distinguish the network intermediary from a native implementation of the state coordination pattern. Further, the network intermediary does not require deployment of a persistent or durable store to coordinate state between receiving applications and the original communication medium. | 05-21-2009 |
20090133037 | COORDINATING APPLICATION STATE AND COMMUNICATION MEDIUM STATE - The present invention extends to methods, systems, and computer program products for coordinating application sate and communication mediums state. Embodiments of present invention provide a mechanism for a communication medium to provide a view of message content for a message (a peek) to an application along with the communication medium preventing further access to the message (a lock) until the application signals back how to handle the message. Thus, the communication medium indicates that the message is locked for the duration of processing at the application. Indicating that the message is locked significantly reduces the chance of the message being provided to another application (or another consumer of the same application) during the time the application is processing the view of message content. | 05-21-2009 |
20100057707 | QUERY-ORIENTED MESSAGE CHARACTERIZATION - Processing messages. Messages are processed based on a characteristic derived from information in messages, metadata about messages, or other information external to messages. Values for one or more pieces of information are received. At least one of the values for one or more pieces of information is associated with a first message. Queries are received. The queries specify one or more of the pieces of information. At least a portion of the plurality of values for the one or more pieces of information is processed in conjunction with the one or more queries to create one or more normalized characteristics for the first message. The one or more normalized characteristics for the first message are in a same format irrespective of the format of the pieces of information. The first message, and/or other messages, is processed based on at least one of the one or more normalized characteristics. | 03-04-2010 |
20100057863 | COMPOSING MESSAGE PROCESSING PIPELINES - The present invention extends to methods, systems, and computer program products for composing message processing pipelines. Embodiments utilize intra-pipeline communication links to physically and/or temporally decouple pipeline stages, configure branching message flows, and bridge protocols. The use of intra-pipeline communication links permits composition of a message processing pipeline without having to alter the pipeline components or application. Each communication link is itself an application with incoming and outgoing message processing pipelines that bridge messages across time and/or space and application logic for satisfying message processing requirements. | 03-04-2010 |
20100057933 | PROBABILISTIC MESH ROUTING - Routing messages using unreliable routing data. A method includes receiving a message from a computer readable communication medium. Characteristic properties of the message are calculated so as to determine state requirements for a service instance at a service for processing of the message. An attempt is made to acquire an appropriate service instance that satisfies the state requirements for processing the message. A determination is made that attempting to acquire an appropriate service instance that satisfies the state requirements for processing the message is not successful at acquiring an appropriate service instance. As a result, the message is redirected using an unreliable local cache of routing information and without coordination between processing nodes. | 03-04-2010 |
20100107177 | DISPATCH MECHANISM FOR COORDINATING APPLICATION AND COMMUNICATION MEDIUM STATE - The present invention extends to methods, systems, and computer program products for coordinating application state and communication medium state. Embodiments of the invention provide mechanisms by which a dispatcher can enable application code to coordinate changes in application state with the consumption of messages from a communication medium. The coordination can be automatic where the dispatcher performs the coordination, or manual, where the coordination is performed more expressly by application code. Embodiments also include mechanisms by which applications targeting an execution (e.g., continuation based) runtime may compose alternative state transitions in the application with a peek lock protocol. | 04-29-2010 |
20100150031 | MULTIPLEXED COMMUNICATION FOR DUPLEX APPLICATIONS - The present invention extends to methods, systems, and computer program products for multiplexed communication for duplex applications. Embodiments of the invention facilitate a multiplexed variant of long polling over a request/reply communication medium that (potentially significantly) reduces the resources utilized when exchanging messages. The lightweight address generation mechanism facilitates polling and routing for a pool of many clients and many services while minimizing allocated resources to each established session. Further, the benefits of a lower latency bidirectional communication medium between clients and services can be utilized. | 06-17-2010 |
20100153570 | ENVELOPE ATTACHMENT FOR MESSAGE CONTEXT - A system for aggregating context information for messages. The system includes a context container. The context container associates names with context values and metadata for context entries. The system further includes a network protocol component configured to read messages from a network transport, an encoder component configured translate messages from a raw format into a canonical message format. The canonical message format is an enveloped message containing an application payload and message metadata. The context container is associated with a message in the canonical format. The system further includes an extraction component configured to retrieve context from a native network transport protocol and insert the context values and metadata into the context container, a plurality of additional protocol components configured to add, remove, or modify entries in the context container, and one or more higher level application components configured to operate on the canonical message using the context entries. | 06-17-2010 |
20100319006 | PERSISTING APPLICATION STATE - The present invention extends to methods, systems, and computer program products for persisting application state. Through decoupling an application host from an instance store, the application host can be used with many different persistence stores and persistence administration tools. Further, a given persistence store can be used with many different application hosts and application host extensions. Accordingly, applications can benefit from periodically persisting work to any of a variety of instance stores even if the applications are changed or are not natively configured for use with a particular instance store. Using persistence providers an application host can also more easily coordinate the persisted state with runtime state to ensure that a consistent checkpoint is created. Persistence providers can also be used to compensate for application host extensions and persistence administration tools that add coordination requirements that cannot be predicted at the time that the application is originally developed. | 12-16-2010 |
20100325262 | USING TRANSPORT-INDEPENDENT RESOURCE STATUS - The present invention extends to methods, systems, and computer program products for using transport-independent resource status. Embodiments of the invention provide a mechanism for implementing a new protocol for performing resource request status updates that maintains the benefits of existing protocol (e.g., HTTP) conventions while being usable with arbitrary transport protocols. Additionally, the new protocol works with a variety of different message exchange patterns. The use of the protocol can be hidden behind a programming model that normalizes transport-specific resource status protocols, such as, for example, HTTP, with transport-independent resource status protocols, such as, for example, with a SOAP binding of the described protocol. As such, embodiments of the invention provide resource status updates over an arbitrary network transport protocol whose format and message exchange pattern is decoupled from the definition of the application. | 12-23-2010 |
20110032847 | MULTIPLEXED COMMUNICATION FOR DUPLEX APPLICATIONS - The present invention extends to methods, systems, and computer program products for multiplexed communication for duplex applications. Embodiments of the invention facilitate a multiplexed variant of long polling over a request/reply communication medium that (potentially significantly) reduces the resources utilized when exchanging messages. The lightweight address generation mechanism facilitates polling and routing for a pool of many clients and many services while minimizing allocated resources to each established session. Further, the benefits of a lower latency bidirectional communication medium between clients and services can be utilized. | 02-10-2011 |
20110138398 | LOCK RESOLUTION FOR DISTRIBUTED DURABLE INSTANCES - The present invention extends to methods, systems, and computer program products for resolving lock conflicts. For a state persistence system, embodiments of the invention can employ a logical lock clock for each persisted state storage location. Lock times can be incorporated into bookkeeping performed by a command processor to distinguish cases where the instance is locked by the application host at a previous logical time from cases where the instance is concurrently locked by the application host through a different name. A logical command clock is also maintained for commands issued by the application host to a state persistence system, with introspection to determine which issued commands may potentially take a lock. The command processor can resolve conflicts by pausing command execution until the effects of potentially conflicting locking commands become visible and examining the lock time to distinguish among copies of a persisted state storage location. | 06-09-2011 |
20110138399 | COMPOSING MESSAGE PROCESSING PIPELINES - The present invention extends to methods, systems, and computer program products for composing message processing pipelines. Embodiments utilize intra-pipeline communication links to physically and/or temporally decouple pipeline stages, configure branching message flows, and bridge protocols. The use of intra-pipeline communication links permits composition of a message processing pipeline without having to alter the pipeline components or application. Each communication link is itself an application with incoming and outgoing message processing pipelines that bridge messages across time and/or space and application logic for satisfying message processing requirements. | 06-09-2011 |
20110179303 | PERSISTENT APPLICATION ACTIVATION AND TIMER NOTIFICATIONS - The present invention extends to methods, systems, and computer program products for persistent application activation and timer notifications. A durable instance manager, instance execution hosts, and an instance store interoperate to transition instances between executing and persisted states. System properties are associated with an instance. System properties can define re-activation conditions, that when satisfied, indicate that an instance is to be re-activated for execution. System properties can define timers as well as indications that instances are in a persisted but ready to run state. | 07-21-2011 |
20110222442 | ROUTING REQUESTS FOR DUPLEX APPLICATIONS - The present invention extends to methods, systems, and computer program products for routing requests for duplex applications. Embodiments of the invention provide a multi-machine scalability mechanism for duplex messages patterns based on a polling mechanism. Client requests and polls can be distributed to service instances running within a cluster of machines by a session-unaware load balancer. Messages to and from a given client can be accessed by any service instance in the cluster service instance, which allows capacity scale-out and seamless failover between service instances. A coordinated inbound message store is used to affinitize application requests to a particular service instance. A coordinated outbound message store is used to route application responses from the machine running the application to the machine where a polling request arrived. Further, the lifetime of the service instance is decoupled from the inbound or outbound message stores, allowing the client-server conversation to potentially span many instances of the service. | 09-15-2011 |
20110231702 | COORDINATING COMMUNICATION MEDIUM STATE FOR SUBTASKS - The present invention extends to methods, systems, and computer program products for coordinating communication medium state for subtasks. Embodiments of the invention use a received view of the contents of a message to produce a stream of subtask messages. Subtask message properties are each connected to the mechanism for performing the state coordination pattern on the original message. Subtask messages may each have the same message contents as the original message or may have message contents that vary according to the subtask. A message processor may then consume subtask messages from the subtask message stream and perform the state coordination pattern on each subtask message to reflect partial forward progress executing the original message. The outcome of the state coordination pattern for the original message is responsive to the collective outcomes of the state coordination patterns for the subtask messages. | 09-22-2011 |
20110239230 | REDUCING PERSISTENCE COMMANDS - The present invention extends to methods, systems, and computer program products for reducing persistence commands. An application host sends a persistence command to a persistence provider for processing. If the persistence provider recognizes and is able to carry out the persistence command, the persistence provider incorporates the semantics of the persistence command into the command implementation strategy; otherwise, the persistence provider employs a command reduction processor. The process of executing or reducing persistence commands is repeated until the persistence provider has produced and completed execution of a command implementation strategy equivalent to the original persistence command or until an unprocessable persistence command is reached for which no further reductions are possible. A command reduction processor can provide alternative persistence commands or an algorithm of persistence commands with semantics equivalent to an originally received persistence command. | 09-29-2011 |
20110258334 | USING TRANSPORT-INDEPENDENT RESOURCE STATUS - The present invention extends to methods, systems, and computer program products for using transport-independent resource status. Embodiments of the invention provide a mechanism for implementing a new protocol for performing resource request status updates that maintains the benefits of existing protocol (e.g., HTTP) conventions while being usable with arbitrary transport protocols. Additionally, the new protocol works with a variety of different message exchange patterns. The use of the protocol can be hidden behind a programming model that normalizes transport-specific resource status protocols, such as, for example, HTTP, with transport-independent resource status protocols, such as, for example, with a SOAP binding of the described protocol. As such, embodiments of the invention provide resource status updates over an arbitrary network transport protocol whose format and message exchange pattern is decoupled from the definition of the application. | 10-20-2011 |
20110264738 | HIERARCHICALLY DISASSEMBLING MESSAGES - The present invention extends to methods, systems, and computer program products for hierarchically disassembling messages. The functionality of disassemblers and framers is decoupled such that framers for different types of messages can be utilized at the same level in a hierarchy without having to also change disassemblers. Virtually any level of disassembly is possible to address any corresponding level of message nesting. Disassembly can be performed on a per message or per session basis. | 10-27-2011 |
20120030169 | APPLICATION INSTANCE AND QUERY STORES - An instance persistence command for an update to a state of an instance of an application can be issued. In response to the persistence command, a transaction with an instance store can be initiated. As part of the transaction, a first representation of the update can be stored in the instance store and a second representation of the update can be stored in a queue. The transaction can be committed after storing the first and second representations. After the transaction is committed, the second representation can be processed to store a third representation of the update in a query store. Application instance state information in the query store can be updated and queried without locking the instance store so that such operations in the query store can be performed asynchronously with operations in the instance store. | 02-02-2012 |
20120066538 | USING PULSES TO CONTROL WORK INGRESS - The present invention extends to methods, systems, and computer program products for using pulses to control work ingress. Generally, embodiments of the invention use a variable-speed clock for accepting work for lower-priority services. A clock rate is controlled by a load monitor. The load monitor periodically collects sensor measurements of resources available after allocations by higher-priority services. Based on the sensor measurements, the load monitor adjusts the clock speed up or down (i.e., depending on the amount of resources available after allocations by higher-priority services). At the boundary of the lower-priority service (e.g., where work enters the system), work requests are enqueued to be associated with a future pulse of the clock. Work is accepted or rejected based on a determination of whether the work request can be allocated a clock pulse within a defined period of time. | 03-15-2012 |
20120078577 | REMOTELY COLLECTING AND MANAGING DIAGNOSTIC INFORMATION - The present invention extends to methods, systems, and computer program products for remote collection and management of diagnostic information. Embodiments of the invention facilitate remote configuration, management, and collection of diagnostic results. A remote diagnostic system connects to the local diagnostics of a service or computer system in a non-invasive way to collect diagnostic information. Filter and subscription requests are used to guide the collection and retention of diagnostic information. A diagnostic user connects to the remote diagnostic system to dynamically change the filter and subscription requests as part of a diagnostic process. The collected diagnostic information can then be transmitted to interested system operators using either syndication subscriptions or push subscriptions. | 03-29-2012 |
20120102493 | ORDERED SCHEDULING OF SUSPENDED PROCESSES BASED ON RESUMPTION EVENTS - A method includes receiving a plurality of resumption events associated with a plurality of suspended processes. Each resumption event is associated with a suspended process. Each resumption event also includes an execution time and a resumption time window. The method includes determining resumption deadlines for the suspended processes and determining a resumption order based on the resumption deadlines. The resumption deadline for a suspended process is based on the execution time and the resumption time window of the corresponding resumption event. The suspended processes are scheduled for execution in accordance with the resumption order. | 04-26-2012 |
20120110204 | ENVELOPE ATTACHMENT FOR MESSAGE CONTEXT - A system for aggregating context information for messages includes a context container that associates names with context values and metadata for context entries. The system further includes a network protocol component configured to read messages from a network transport, an encoder component configured translate messages from a raw format into a canonical message format. The canonical message format is an enveloped message containing an application payload and message metadata. The context container is associated with a message in the canonical format. The system further includes an extraction component configured to retrieve context from a native network transport protocol and insert the context values and metadata into the context container, a plurality of additional protocol components configured to add, remove, or modify entries in the context container, and one or more higher level application components configured to operate on the canonical message using the context entries. | 05-03-2012 |
20120240133 | PERSISTING APPLICATION STATE - The present invention extends to methods, systems, and computer program products for persisting application state. Through decoupling an application host from an instance store, the application host can be used with many different persistence stores and persistence administration tools. Further, a given persistence store can be used with many different application hosts and application host extensions. Accordingly, applications can benefit from periodically persisting work to any of a variety of instance stores even if the applications are changed or are not natively configured for use with a particular instance store. Using persistence providers an application host can also more easily coordinate the persisted state with runtime state to ensure that a consistent checkpoint is created. Persistence providers can also be used to compensate for application host extensions and persistence administration tools that add coordination requirements that cannot be predicted at the time that the application is originally developed. | 09-20-2012 |
20120246663 | HIERARCHICALLY DISASSEMBLING MESSAGES - The present invention extends to methods, systems, and computer program products for hierarchically disassembling messages. The functionality of disassemblers and framers is decoupled such that framers for different types of messages can be utilized at the same level in a hierarchy without having to also change disassemblers. Virtually any level of disassembly is possible to address any corresponding level of message nesting. Disassembly can be performed on a per message or per session basis. | 09-27-2012 |
20130160027 | COMPOSING MESSAGE PROCESSING PIPELINES - The present invention extends to methods, systems, and computer program products for composing message processing pipelines. Embodiments utilize intra-pipeline communication links to physically and/or temporally decouple pipeline stages, configure branching message flows, and bridge protocols. The use of intra-pipeline communication links permits composition of a message processing pipeline without having to alter the pipeline components or application. Each communication link is itself an application with incoming and outgoing message processing pipelines that bridge messages across time and/or space and application logic for satisfying message processing requirements. | 06-20-2013 |
20130179721 | USING PULSES TO CONTROL WORK INGRESS - The present invention extends to methods, systems, and computer program products for using pulses to control work ingress. Generally, embodiments of the invention use a variable-speed clock for accepting work for lower-priority services. A clock rate is controlled by a load monitor. The load monitor periodically collects sensor measurements of resources available after allocations by higher-priority services. Based on the sensor measurements, the load monitor adjusts the clock speed up or down (i.e., depending on the amount of resources available after allocations by higher-priority services). At the boundary of the lower-priority service (e.g., where work enters the system), work requests are enqueued to be associated with a future pulse of the clock. Work is accepted or rejected based on a determination of whether the work request can be allocated a clock pulse within a defined period of time. | 07-11-2013 |
20130212421 | USING PULSES TO CONTROL WORK INGRESS - Clock pulses of a variable speed clock are adjusted relative to system utilization. A load monitor periodically collects sensor measurements of resources and based on the sensor measurements, the load monitor adjusts the clock speed up or down. | 08-15-2013 |
20130212590 | LOCK RESOLUTION FOR DISTRIBUTED DURABLE INSTANCES - A command log selectively logs commands that have the potential to create conflicts based on instance locks. Lock times can be used to distinguish cases where the instance is locked by the application host at a previous logical time from cases where the instance is concurrently locked by the application host through a different name. A logical command clock is also maintained for commands issued by the application host to a state persistence system, with introspection to determine which issued commands may potentially take a lock. The command processor can resolve conflicts by pausing command execution until the effects of potentially conflicting locking commands become visible and examining the lock time to distinguish among copies of a persisted state storage location. | 08-15-2013 |
20130282655 | QUERY-ORIENTED MESSAGE CHARACTERIZATION - Processing messages. Messages are processed based on a characteristic derived from information in messages, metadata about messages, or other information external to messages. Values for one or more pieces of information are received. At least one of the values for one or more pieces of information is associated with a first message. Queries are received. The queries specify one or more of the pieces of information. At least a portion of the plurality of values for the one or more pieces of information is processed in conjunction with the one or more queries to create one or more normalized characteristics for the first message. The one or more normalized characteristics for the first message are in a same format irrespective of the format of the pieces of information. The first message, and/or other messages, is processed based on at least one of the one or more normalized characteristics. | 10-24-2013 |