On 02/24/2012 05:44 PM, Chris Travers wrote:


    Ideally web services, like reporting, would happen after the main
    transactional functionality is stable enough for early beta testing.

    I think the first step is getting a framework in place that
    defines the endpoints, the formatting of the data, etc. Something
    that converts a web service payload into some sort of Perl object
    that can be populated based on LSMB data.


So maybe a script which:
1)  Converts XML and JSON into a $request object
2)  Converts a $request object to XML or JSON
3)  Hands off to web service modules for URL parsing and work

I am thinking those web service modules would all accept three arguments: $request, $url, $method

When I've done this before I've set it up slightly differently:

1. Deserialize request into some standard data structure ($request object) with headers, hash of data passed/deserialized request body, path 2. Main controller parses URL and uses conventions to load controller for a specific request, creates an appropriate response object based on request 3. Main controller calls standard method (determined by HTTP method/specific parameters) on the controller object with $request and $response object 4. Specific controllers load up native DB objects, populate with incoming data, call methods appropriate to actions, and populates $response object
5. Main controller returns serialized $response object

I'd say the main difference is taking the standard centralized stuff one step further than you've outlined, doing the URL parsing and establishing conventions before handing off to individual web service controllers.

I've also found it useful to have separate request and response objects, though at the moment I don't recall why. And of course have a different class for each type of response and request -- XML, JSON, HTML, etc. -- that implement standard methods that the framework can call regardless of type.


I am also thinking the stuff we are doing with Moose will make this better in the long-run. We can use the defined data structures there as both the documented API and the basis for XML and JSON formats.

Excellent. Is this going to be available in 1.4?

Cheers,
John Locke
http://www.freelock.com

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Ledger-smb-devel mailing list
Ledger-smb-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ledger-smb-devel

Reply via email to