blob: 536aac7a24a10fe8d47933c3c3bfe830d6cd424e (
plain) (
tree)
|
|
== 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 ActionWebService::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
ActionWebService::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.
|