Distributed systems comprise processing nodes and communication channels. Various distributed system architectures exist including client/server, N-tiered, and peer-to-peer, amongst others. In order to enable a variety of processing nodes to operate within such a system, standard communication channels and protocols are employed. In the context of web applications, for example, one of the processing nodes represents the browser and other processing nodes are web servers. Further, communication channels in the web application context typically employ Transmission Control Protocol (TCP), using HyperText Transfer Protocol (HTTP) or a secured version thereof (HTTPS).
Distributed systems employ transformations to adapt to the characteristics of communication channels and/or achieve desired characteristics. For example, serialization/deserialization transforms data exchanged between participants in a manner that makes it compatible with a communication channel. Similarly, other transformations such as compression or encryption can be employed to transform data such that it requires fewer symbols, or make it hard for a third party to extract confidential information. Yet other transformations add error-correcting codes to increase resilience to channel noise, and so forth.
Channel and other transformations require a direct transformation “F” on the sending side, and an inverse transformation “F−1” on the receiving side. Math dictates that composing these transformations yields the identity function. Consequently, after applying these transformations in sequence, the original message sent from the sender over a communication channel becomes available to the receiver.
The requirement that the sender and receiver host direct transformations and inverse transformations couples them tightly. In particular, such transformation pairs typically require hardcoded installation on each of the sender and receiver and/or require outside intervention. Accordingly, should one desire to change a transformation both the sender and receiver need to install new code to capture respective portions of the transformation. For example, if employment of a new serializer is desired, serialization code needs to be installed on the sending side and matching deserialization code should be installed on the receiving side. In other words, changing a transformation impacts both ends of a channel.
The following presents a simplified summary in order to provide a basic understanding of some aspects of the disclosed subject matter. This summary is not an extensive overview. It is not intended to identify key/critical elements or to delineate the scope of the claimed subject matter. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
Briefly described, the subject disclosure pertains to data transformations amongst communication nodes. More specifically, rather than requiring hardcoded installation of a direct transformation and inverse transformation on a sender and receiver, respectively and/or outside intervention, the inverse transformation can be provided to the receiver by the sender for recovering a message sent by the sender over a communication channel(s). In this case, the receiver need only be able to apply an inverse transformation to incoming data. Furthermore and in accordance with an aspect of the disclosure, transformation and inverse transformation pairs can be changed dynamically as a function of context. Accordingly, communication protocol between a sender and receiver can automatically adapt to changing circumstances in furtherance of some goal, for instance.
To the accomplishment of the foregoing and related ends, certain illustrative aspects of the claimed subject matter are described herein in connection with the following description and the annexed drawings. These aspects are indicative of various ways in which the subject matter may be practiced, all of which are intended to be within the scope of the claimed subject matter. Other advantages and novel features may become apparent from the following detailed description when considered in conjunction with the drawings.
a is a block diagram of a compositional transformation process according to an aspect of the disclosed subject matter.
b is a block diagram of a compositional inverse transformation according to a disclosed aspect.
c is a block diagram of application of a compositional inverse transformation to removed data transformations.
Systems and methods pertaining to inverse transformation loading are disclosed in detail hereinafter. Conventionally, transformation code associated with distributed systems is programmed into a sender and receiver prior to data transmission. Here, however, the sender transforms data and affords an inverse transformation associated with the data to the receiver, which applies the inverse to the data to remove the transformation and make the data available. Additionally or alternatively, the sender can identify a common transformation/inverse for employment. Further, transformation can comprise a series of transformations (e.g., serialization/deserialization, encryption/decryption, compression/decompression . . . ). Furthermore, one or more transformations are selected and employed dynamically as a function of context information. Accordingly, transformations can vary with changing circumstances. In a similar manner, a receiver-side interpreter or firmware can be replaced with an alternate implementation provisioned by a sender.
Various aspects of the subject disclosure are now described with reference to the annexed drawings, wherein like numerals refer to like or corresponding elements throughout. It should be understood, however, that the drawings and detailed description relating thereto are not intended to limit the claimed subject matter to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the claimed subject matter.
Referring initially to
Conventionally, a requirement that senders and receivers host transformations and inverse transformations, respectively, couples the components tightly. For example, where a new serializer is desired to be employed, serialization code needs to be loaded on the sender and deserialization code needs to be installed on the receiver. In other words, changing a transformation affects both ends of a channel. It is to be noted that in a distributed system, both sides are not typically under control of the same organization, entity or the like. Consequently, it is extremely difficult if even possible to plug in new transformations. The problem is further compounded when there is a many-to-one or one-to-many relationship between the sender and receiver since the many end needs to be updated.
System 100 reduces the tight coupling conventionally associated with senders 110 and receivers 120. In particular, the system allows the sender component 110 to provision an inverse transformation to a receiver component 120. The receiver component 120 can then apply the loaded inverse transformation to data to remove a transformation. Consequently, the sender component 110 and receiver component 120 can be independent and/or isolated components. For example, the receiver component 120 need only be able to apply inverse transformations provided by a sender to received data, thereby making it available for use by the receiver component 120.
As shown, the sender component 110 includes a transformation component 112 and an inverse generation component 114. The transformation applies one or more transformations or functions to data for transmission such as but not limited to those related to serialization, encryption, and/or compression. The inverse generation component produces or identifies an inverse transformation component 130, which at least reverses a related transformation. For example, the transformation can correspond to a function “F” and the inverse transformation component 130 can correspond to the inverse of “F” or “F−1”, composed they yield the identity function. More specifically, the inverse transformation component 130 can represent instructions for implementing “F−1”. However, where the sender component 110 and receiver component 120 operate in different execution environments or contexts, the inverse transformation function can be a semantically equivalent implementation thereof.
The receiver component 120 acquires data 150 and an inverse transformation component 130 from the communication channel 115. The receiver component 120 includes an inverse acquisition component 124 and an interpreter component 122 The inverse acquisition component 124 acquires, identifies, and/or otherwise detects the presence of the inverse transformation component 130 afforded by the sender component 110. By way of example and not limitation, the component 124 can identify instructions or code embodying the inverse transformation component 130 from a stream of data. In one instance, the acquisition can also reconstruct the inverse transformation, for example by deserializing a serialized form.
The interpreter component 122 provides an execution environment that applies an inverse transformation or function 130 to a data acquired by the receiver component 120 and more specifically the inverse acquisition component 124. Stated differently, the interpreter component 122 can implement instructions representing an inverse function to recover a message sent by the sender component 110 encoded with a corresponding direct transformation function. In accordance with one embodiment, the inverse transformation component 130 itself can be represented and transmitted as data. Additionally, upon receipt of an inverse transformation component 130, the interpreter component 122 is essentially reprogrammed. For example, a data stream can be interpreted in accordance with a first function until a second function is acquired at which time the second function is employed.
The channel component 130 (also known as a communication channel) includes any medium, mechanism or means for communicatively coupling a sender component 110 to a receiver component or vice versa. The channel 130 enables both wired and wireless communication among other things. Further, the actual embodiment or implementation can be dependent upon particular embodiments or implementations of the sender component 110 and/or receiver component 120.
In accordance with one embodiment, the system 100 can pertain to server-browser interaction. In particular, the sender component 110 can correspond to a server and the receiver component 120 can correspond to a client network or web browser. Accordingly, the channel component 130 can support network communication amongst the sender and receiver by way of a HTTP or HTTPS. However, the sender component 110 and the receiver component 120 can operate with respect to particular object implementation such as but not limited to JSON (JavaScript Object Notation) encoded objects. Accordingly, a serialization/deserializaiton transformation can be utilized to send JSON over HTTP at one end, and receive JSON over HTTP at the other end, for instance.
It is to be appreciated that while the sender component 110 can transmit an inverse transformation component 130 or representation thereof (e.g., instructions, code . . . ), it need not. In some situations, it may be desirous to employ a common or standard transformation (e.g., base64, ECMA-222 . . . ) that is known by a receiver. Rather than transmitting the entire transformation component 130 or representation, the sender can simply transmit identification of a transformation. The inverse acquisition component 124 could also detect identification of a transformation and facilitated execution of a corresponding inverse by the interpreter component 122. For example, the inverse acquisition component 124 could provide a pointer to local code that performs the inverse. In this manner, transformations can still be employed dynamically yet without incurring the expense of transmission of an entire inverse transformation across the channel component 115 when not necessary.
a-c are block diagrams illustrating compositional transformations in accordance with an aspect of the claimed subject matter. A significant concept with respect to transformation is function application. A function can be applied at a sending side and the inverse of that function applied at the receiver side. Function application is composable. Therefore, transformations are composable. For example, data can be encrypted, compressed, and then serialized on one side and, and then inversely deserialized, decompressed, and decrypted on the other side.
a depicts a transformation process 310 that can be performed by a sender-side transformation component. Here, a function F is first applied to data, “F(x)”, where “x” is a data element. Subsequently, a function “G” is applied to “F(x)” forming “G(F(x))”. Finally, function “H” is applied to “G(F(x))” to produce “H(G(F(x))”. The inverse transformation or function 320 is composed similarly except utilizing inverse functions resulting in “H−1(G−1(F−1(x)))”. On the receiver-side, the transformation 330 of
The system 110 also includes a transform selection component 410 communicatively coupled to a context component 420. The transform selection component 410 facilitates selection of one or more transform (also referred to as transformations) or function components 430 for application by the transformation component 112. While the transform components 420 can correspond to different types of transforms or functions such as serialization, decryption, and compression, the components 420 can also include different implementations of each type of transform. For example, there can be different compression transforms that compress data to more or less degrees. The transform selection component 410 can select an appropriate transformation based on a plurality of factors. In one instance, the transform selection component 410 can solicit context information from the context component 420 such as channel context (e.g., current bandwidth, channel properties (e.g., lossy, lossless) . . . ), receiver context (e.g., type, capabilities, operation mode (e.g., power conservation), load . . . ), data sensitivity, potential security threats, and/or user credentials, among other things. For example, the context component 420 and/or the transform selection component 410 can communicate with one or more receivers and corresponding communication channels to acquire information about the type of receiver, process capabilities, current state, etc., as well as the channel capabilities. Based on this and other information, the transform selection component 410 can determine or infer the best transform or transforms for a given situation. For example, certain parameters might be desired to be maximized or minimized. Furthermore, mismatch between a channel's capabilities and communication requirements represents one reason for employing transformations.
It should be noted and appreciated that while transform(s) can be selected initially, they can also be re-evaluated dynamically and adjusted based on changed circumstances. By way of example, consider a situation in which an encryption transformation or function is selected initially as a function of current state and then it is determined that receiver load is high and processing is slowing. In this case, if the data is within a threshold of sensitivity and potential for security threats are low, the sender can automatically switch to a less CPU-intensive encryption algorithm in an attempt expedite or otherwise facilitate receiver processing. Similarly, if it is determined or inferred that bandwidth is in high demand at particular times of the day, then a compression transformation can be applied when it might not be utilized at other times. In this way, communication protocol between a sender and receiver can be automatically adaptive to circumstances.
Furthermore, it should be appreciated that the transform selected via the transform selection component 410 can be affected by and/or interact with monetization and/or incentive scheme or system (not shown). For example, receivers or users of receivers can purchase rights or credentials to one or more transformations. In one instance, a user can purchase the right to use a more secure encryption transformation than a freely available default transformation. Subsequently, that transformation is available for selection and application. Of course, cash payment need to be required. Functionality can similarly be offered as an incentive to try a program or participate in a survey, among things.
Here, the sender component 110 includes an interpreter generation system 610 that produces or identifies a specific implementation of interpreter component 122 or like execution environment. Subsequently, the interpreter component 122 or a representation thereof (e.g., instructions, code . . . ) can be transmitted to the receiver component 120 via the communication channel 115. This new interpreter component 122 can be installed on the receiver replacing or updating the currently installed component 122. This can correspond to or resemble upgrading receiver component firmware. Similar to transmission of inverse transforms, the interpreter component 122 can be transmitted to the receiver component 120 as data.
The claimed subject matter is not limited to two parties: senders, and receivers. Turning to
This scenario employs transformation or function composition. Communication between the third-party component 710 and the sender component 110 utilizes application of function “F” and its inverse “F−1”. Communication between the sender component 110 and the receiver component 120 includes the function “G” and its inverse “G−1”. The communication of third-party component 710 and receiver component 120 through sender component 110 can be represented as “H” and an inverse “H−1”. Here, however, “H” is the composition of “F” and “G” (“G(F(x)”), and the inverse is the composition of “G−1” and “F−1” (“G−1(F−1(y))”) together producing the identity function.
The aforementioned systems, architectures, and the like have been described with respect to interaction between several components. It should be appreciated that such systems and components can include those components or sub-components specified therein, some of the specified components or sub-components, and/or additional components. Sub-components could also be implemented as components communicatively coupled to other components rather than included within parent components. Further yet, one or more components and/or sub-components may be combined into a single component to provide aggregate functionality. Communication between systems, components and/or sub-components can be accomplished in accordance with either a push and/or pull model. The components may also interact with one or more other components not specifically described herein for the sake of brevity, but known by those of skill in the art.
Furthermore, as will be appreciated, various portions of the disclosed systems above and methods below can include or consist of artificial intelligence, machine learning, or knowledge or rule based components, sub-components, processes, means, methodologies, or mechanisms (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, classifiers . . . ). Such components, inter alia, can automate certain mechanisms or processes performed thereby to make portions of the systems and methods more adaptive as well as efficient and intelligent. By way of example and not limitation, transform selection component 410 can employ such mechanisms to infer an appropriate function or transform for application give a particular context.
In view of the exemplary systems described supra, methodologies that may be implemented in accordance with the disclosed subject matter will be better appreciated with reference to the flow charts of
Referring to
At numeral 920, an inverse transformation component can be constructed. The inverse transformation eliminates or undoes the transformation thereby making data available for processing by a receiver. Where more than one transformation is employed, more than one inverse will need to be constructed to reverse the transformation. For example, where the transformation includes two transformations encryption (“E”) and serialization (“S”), namely “S(E(x))”, the inverse would correspond to “S−1(E−1(x))”.
At reference 930, the one or more selected transformations can applied to data to produce transformed data (e.g., encrypted data, compressed data . . . ) Subsequently, the inverse and the transformed data can be sent or transmitted across a communication channel at reference numerals, 940 and 950 respectively.
Not only can method 900 function initially upon a first communication, it can also operate at any time throughout communication duration. In particular, applied transformation pairs can be changed upon a change in context. In one implementation, context can be evaluated at predetermined time periods to detect change. Additionally or alternatively, contextual information can be continuously monitored and transformation configuration altered upon occurrence of an event and/or a change that exceeds a threshold. For example, where bandwidth is detected or determined to be limited a different compression transformation can be employed in an attempt to counter the limited bandwidth.
It is to be appreciated that although transformed data and related inverse transformation as described as being separate this is not a requirement. In fact in accordance with one embodiment, a single code unit (e.g., represented as data) can capture both the inverse and the transformed data. Upon transmission to and execution by a receiver, the code unit produces untransformed data available for processing by a receiver or other associated components. In other words, execution of a function transmitted by the sender to the receiver applies the inverse transformation to the transformed data captured by the function.
Furthermore, it should be noted that in accordance with one embodiment, the inverse transformation or function provided to a receiver for utilizing need not be installed and/or hardcoded into the receiver. In fact, it can simply be utilized until it completes application to all associated transformed data. This facilitates rapid change of transformation and further provides a degree of security since a transformation such as that associated with encryption is not persisted on a store and available for continuous hacking or cracking.
The word “exemplary” or various forms thereof are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Furthermore, examples are provided solely for purposes of clarity and understanding and are not meant to limit or restrict the claimed subject matter or relevant portions of this disclosure in any manner. It is to be appreciated that a myriad of additional or alternate examples of varying scope could have been presented, but have been omitted for purposes of brevity.
As used herein, the term “inference” or “infer” refers generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the subject innovation.
Furthermore, all or portions of the subject innovation may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed innovation. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device or media. For example, computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ), smart cards, and flash memory devices (e.g., card, stick, key drive . . . ). Additionally it should be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
In order to provide a context for the various aspects of the disclosed subject matter,
With reference to
The system memory 1216 includes volatile and nonvolatile memory. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 1212, such as during start-up, is stored in nonvolatile memory. By way of illustration, and not limitation, nonvolatile memory can include read only memory (ROM). Volatile memory includes random access memory (RAM), which can act as external cache memory to facilitate processing.
Computer 1212 also includes removable/non-removable, volatile/non-volatile computer storage media.
The computer 1212 also includes one or more interface components 1226 that are communicatively coupled to the bus 1218 and facilitate interaction with the computer 1212. By way of example, the interface component 1226 can be a port (e.g., serial, parallel, PCMCIA, USB, FireWire . . . ) or an interface card (e.g., sound, video, network . . . ) or the like. The interface component 1226 can receive input and provide output (wired or wirelessly). For instance, input can be received from devices including but not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, camera, other computer and the like. Output can also be supplied by the computer 1212 to output device(s) via interface component 1226. Output devices can include displays (e.g., CRT, LCD, plasma . . . ), speakers, printers and other computers, among other things.
The system 1300 includes a communication framework 1350 that can be employed to facilitate communications between the client(s) 1310 and the server(s) 1330. The client(s) 1310 are operatively connected to one or more client data store(s) 1360 that can be employed to store information local to the client(s) 1310. Similarly, the server(s) 1330 are operatively connected to one or more server data store(s) 1340 that can be employed to store information local to the servers 1330.
Client/server interactions can be utilized with respect with respect to various aspects of the claimed subject matter. By way of example but not limitation the sender component 110 can correspond to the server 1330, the receiver component 120 can correspond to the client 1310, and the communication framework 1350 can correspond to the communication channel 115. Of course, this is not the only supported configuration. The reverse is also true, namely the server 1330 can be the receiver and the client 1310 the sender. Moreover, the claimed subject matter is not limited to client/server interactions. Peer-to-peer and other distributed architectures are also employable and intended to fall with the scope of the appended claims.
What has been described above includes examples of aspects of the claimed subject matter. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the claimed subject matter, but one of ordinary skill in the art may recognize that many further combinations and permutations of the disclosed subject matter are possible. Accordingly, the disclosed subject matter is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the terms “includes,” “contains,” “has,” “having” or variations in form thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.