|
Jul
Sun
1st
Bits'bout Play2 Architecture
Play2 Simple HTTP APIEssential blueprint of Play2 architecture is pretty simple and it should be easy to explain in a fairly short blog post. The framework can be understood progressively at different levels; each time having better exposure to some aspects of its design. The core of Play2 is really small, surrounded by a fair amount of useful APIs, services and structure to make Web Programming tasks easier. Basically, Play2 is an API that abstractly have the folllowing type
Which is a computation that takes the request header Now this type presumes putting request body entirely into memory (or disk), even if you only want to compute a value out of it, or better forward it to a storage service like Amazon S3. We rather want to receive request body chunks as a stream and be able to process them progressively if necessary. What we need to change is the second arrow to make it receive its input in chunks and eventually produce a result. There is a type that does exactly this, it is called Iteratee and takes two type parameters.
For the first arrow, we are simply using the Function[From,To] type aliased with
The Result type, on the other hand, can be abstractly thought of as the response headers and the body of the response
Such type exists and is called
It is a bit more practical to be able to stream and write to the socket anything that is convertible to an
Bottom LineThe essential Play2 HTTP API is quite simple:
Which reads as the following: Take the From this point we can explore how does this simple API behave in the runtime management of Play2 (Threads), what opportunities it opens (NIO, Reactive, Streams, File Upload …) and how can we easily extend it to model different architectural patterns (Classical MVC, Resource Oriented, …) |