aboutsummaryrefslogtreecommitdiffstats
path: root/actionservice/HACKING
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-02-18 10:35:25 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-02-18 10:35:25 +0000
commite7a29380292902eae4799b2658507b3cfffb9cec (patch)
tree99a7cd3c7d720ef73f998c2756be1fef77ff0ee1 /actionservice/HACKING
parente39bf105941133d3d6699c52c18dbd3b9aa0bf5c (diff)
downloadrails-e7a29380292902eae4799b2658507b3cfffb9cec.tar.gz
rails-e7a29380292902eae4799b2658507b3cfffb9cec.tar.bz2
rails-e7a29380292902eae4799b2658507b3cfffb9cec.zip
Added Action Service to the repository
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@658 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionservice/HACKING')
-rw-r--r--actionservice/HACKING44
1 files changed, 44 insertions, 0 deletions
diff --git a/actionservice/HACKING b/actionservice/HACKING
new file mode 100644
index 0000000000..9c0cde6313
--- /dev/null
+++ b/actionservice/HACKING
@@ -0,0 +1,44 @@
+== Coding Style
+
+Please try to follow Rails conventions and idioms.
+
+
+== Concepts
+
+ * Service
+ A service has an associated API definition, and
+ implements the methods defined in the API definition
+
+ * Container
+ A container contains zero or more services
+
+ * API
+ An API definition defines a list of methods implemented by
+ a service
+
+ * Router
+ A router takes raw wire requests, decodes them, performs the invocation on
+ the service, and generates raw wire responses from the invocation result.
+ A router is mixed into a container class.
+
+ * Protocol
+ A protocol implementation implements the unmarshaling and marshaling of
+ raw wire requests and responses. Registers with router.
+
+
+== Action Pack Integration
+
+For Action Pack, the ActionController is both container and router, and also contains
+the protocol implementations.
+
+
+== Adding support for a new protocol
+
+ 1. Add an ActionService::Protocol::YourProtocol module and any classes you need to
+ perform unmarshaling/marshaling of protocol requests. See the SOAP implementation
+ for an example of a complex mapping, and also see
+ ActionService::Protocol::AbstractProtocol for the methods you need to implement.
+
+ 2. Add unit tests for your new protocol. Be sure to test using a Action Pack test request
+ duplicating how the real requests will arrive and verify that mapping to and from Ruby
+ types works correctly.