Notes on rapache

This place is a catch-all for rapache notes and documents. The rest of this page is devoted to miscellaneous notes, while the documents are in the following list:

Motivation For Creating rapache

Not having any statistical training and needing to learn the R language, I decided to get underneath the hood and poke around. Also at that time, there were no strong options for hooking R to the web, save Rserve, so I decided to embed it into apache.

rapache succeeds based on the following:

  • R is easily embedded into other applications via the R embedded API
  • R is a capable scripting language
  • Apache has a robust module API

Flexible, use R as a web service or as a web application platform like PHP.

Projects for Utilizing R in a Network/Web Application

http://www.rforge.net/Rserve

Rserve

An R package that implements a fork-on-demand server over TCP/IP. Client systems communicate with Rserve by implementing the Rserve client API, a custom binary protocol. Java, C++, and a simple R client implementations are provided with the package. Popular with Java systems.

Process management issues

Very tight coupling with client system since it must implement Rserve client API (including custom I/O commands).

Custom Authentication system and configuration

No end-to-end encryption?

RSOAP

CGIwithR?

R_PHP_Online

Rho

Rpad

rapache

Biocep

Terms Related to Utilizing R in a Web/Networking Environment

Client/Server Architecture

A software architecture whereby client systems communicate with server systems over a computer network, with the client system innitiating the service request.

Distributed Computing

A system of software and hardware containing multiple resources such as compute unites and storage devices interconnected via a network, whereby a program is split into sub programs that run simultaneously performing parts of an overall computing task.

Cloud Computing

http://en.wikipedia.org/wiki/Cloud_Computing#Components

A term to describe scalable and often virutualized resources over the internet as a service.

Web Server

CGI

A software API that describes how web servers are to send HTTP requet data to CGI enabled programs. When a web server receives a request and it deems the request is for a particular CGI program, the web server starts the program and provides the HTTP request date to the program in environment variables. The CGI program output is then delivered as an HTTP response to the requestor. CGI programs were the first generation of web applications. As the web became more popular, web server authers looked for wasy to make the web server scale with demand. CGI was deemed

Web Application

An application that is accesible via a web browser and communicating via HTTP with a web server. User input is sent to the web server as HTTP requets, outputs of the application are delivered to the browser in HTTP respones and coded in browser technologies such as HTML, CSS, and javascript.

Web Service

http://en.wikipedia.org/wiki/Web_service

A software system utilizing the HTTP protocol to exchange messages between computers. Compare that to messages exchanged between a browser and web server; the human is in control of the browser. Also, web service response messages aren't constrained to data intended for a web browser, that is HTML/CSS,Javascript, images, etc.

Two web service variants exists:

  • those that utilize the SOAP protocol with XML for message passing... very cumbersome.
  • those that don't use XML exclusively for messaging... you can role your own message format or use simpler ones like ATOM, RSS, JSON, YAML. Also, these web services are often misslabeled as RESTful web services.

REST

http://en.wikipedia.org/wiki/REST

A set of network architecture principles that describes how resources are defined and addressed. An example of a RESTful web service is described here:

http://en.wikipedia.org/wiki/REST#RESTful_Web_services

AJAX

http://en.wikipedia.org/wiki/Ajax_(programming)

A term that represents a set of technologies for performing asynchronous requests to a web server and integrating the responses into a web browser page.

Computing Process

http://en.wikipedia.org/wiki/Process_(computing)

Process Forking

http://en.wikipedia.org/wiki/Fork_(computers)

Topic revision: r7 - 13 Mar 2009 - 11:08:35 - JeffreyHorner
 
Register | Log In
Copyright © 2009 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback