locked
Remote Action Interface - RAI RRS feed

  • Question

  • User1565471425 posted
    My own ideas any comments on this article welcome.

    Thanks, Bira Rai

    birarai

    As the Internet expands due to the addition of new systems, applications and users the need for efficient communication between all these entities increases.  The Remote Action Interface Architecture (RAI) achieves loose coupling among internet entities.  Any system which is network addressable is considered an entity.  In order to simplify entity to entity communication there is a need to abstract away the complexity of the network.  By eliminating the knowledge of the network from the implementation layer the RAI architecture is able to move data from one entity to another seamlessly.  Implementing a solution built on the principles of Remote Action Interface (RAI) provides the ability for entities to self manage their own data without human intervention.  

    Within the RAI Architecture there are three classifications actions, entity and containers.  The classifications are organized in a hierarchical tree structure.  All leaf nodes are entities while all paths starting from the tree root (domain) are containers.

    Actions:
    The four basic actions which can be preformed on an entity are view, delete, update, and add.  From these four actions additional actions can be derived.  Data sent to entity is contained within xml tags.
    Syntax: action@

    Entity:
        The entity defines what time of actions it will perform.  The entity must reside within a container.
    Syntax: action@entity

    Container:
    Containers hold zero or more entities.  The classification changes between entity and container depending on the manner in which the entity or container is being referenced.
    Syntax: action@entity.container

    RAI Definition
    A request is sent to discovery@entity.container the response is a RAI definition, which lists all entities and actions.

    <RAI Definition> ::= <entity>
    {
    [public | private] <entity>”;”                                  
    [public | private] <action>”;”
    }”;”
    <entity> ::= entity <entity declaration>
    <action> ::= action <action declaration>
    <entity declaration> ::= {letter | digit}*.{letter | digit}*
    <action declaration> ::= {letter | digit}*.{letter | digit}*

    RAI Architecture Implementation

    RAI Server
    Today the communication and programming are two distinct layers.  The RAI server functions as a mail and web server, which allows fusion of the network and the implementation layers.  The RAI server is not able to hold the requester’s state information; therefore security access verification is done on each request.
     
    RAI Language Extension
    In order to support the paradigm shift in computing architecture, programming languages must support embedded communication.  Data within the application is passed to method using either the RAI request or conventional memory stack.

    The first interaction directed at an entity is the RAI discovery request sent to discovery@entity.com.  The response will contain the entity’s RAI Definition.  The RAI definition is simple and universally available to all requesters.  The requester is free to invoke any discovered action.  The requester invokes an action by sending a request to action@entity.container.  Data is sent to the RAI action in the format specified by the RAI definition.  The RAI response is the result of a RAI request made by a remote entity.  The format of the RAI response is outlined in the RAI action definition.

    Implementation Example

    Wal-Mart purchases products from hundreds of vendor world wide.  Many of Wal-Mart’s suppliers’ change mailing addresses frequently.  Every time a supplier changes its mailing address Wal-Mart must locate the supplier in their supplier database and manually update the address information.  Having to manually find and update information costs Wal-Mart time and money.  Costs are reduced by implementing a RAI solution.  In the following example Wal-Mart initials are request to fedex ever week requesting FedEx to update their mailing address.

    Sample RAI Definition
    entity FedEx.com
    {
    Entity address.FedEx.com; // entity declaration
    public view;                        // action declaration
    // input: none
    // returns: website
    };

    entity address.FedEx.com
    {
    public view;
    // input: none
    // returns: company address information
    // <street number>43</street number>
    // <street>wall street</street>
    };

    Fedex Source Code

    Public view@address.Fedex.com
    {
    String streetNumber = “7”;
    String streetName; = “Long Tail Drive”;

    // load data in to entity
    update@streetNumber.address.Fedex.com = streetNumber;
    update@streetName.address.Fedex.com = streetName;

    // from is global variable
    // from variable can contains update@fedex.address.accounting.walmart.com
    return from = address.Fedex.com;
    }

    Wal-Mart Source Code

    Public update@fedex.address.account.walmart.com
    {
    // from is global variable
    // from variable can contains view@address.fedex.com

    String Number = streetNumber.from;
    String Name = streetName.from;
    Return;
    }

    Wednesday, November 30, 2005 12:48 AM

All replies

  • User296760538 posted
    Its an interesting proposal. I see a lot of what reminds me of MOA. I guess if the syntax makes it easier to implement, it's worth it. With SQL 2005 and HTTP endpoints however, this kind of stuff in my opinion might be unnecssary.
    Wednesday, November 30, 2005 4:57 AM
  • User1565471425 posted
    Hi Singh,

    what is MOA?

    Thanks
    Bira Rai

    birarai


    Thursday, December 1, 2005 4:04 PM
  • User296760538 posted
    MOA is Message Oriented Architecture.
    Friday, December 2, 2005 3:22 PM