From f254b599c080178eb809c218d898f6ed46323d25 Mon Sep 17 00:00:00 2001 From: jvelilla Date: Mon, 29 Jun 2015 16:17:43 -0300 Subject: [PATCH] Update basic document to the new EWF concurrent design --- doc/workbook/basics/APPLICATION_EXECUTION.png | Bin 0 -> 5971 bytes doc/workbook/basics/Launcher Hierarchy.png | Bin 0 -> 16595 bytes doc/workbook/basics/basics.md | 84 ++++++++++-------- 3 files changed, 45 insertions(+), 39 deletions(-) create mode 100644 doc/workbook/basics/APPLICATION_EXECUTION.png create mode 100644 doc/workbook/basics/Launcher Hierarchy.png diff --git a/doc/workbook/basics/APPLICATION_EXECUTION.png b/doc/workbook/basics/APPLICATION_EXECUTION.png new file mode 100644 index 0000000000000000000000000000000000000000..270c78aa571825451c5620c5d424292dd348f7ac GIT binary patch literal 5971 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 literal 0 HcmV?d00001 diff --git a/doc/workbook/basics/Launcher Hierarchy.png b/doc/workbook/basics/Launcher Hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c047237a1a71b690c29fd31dea6d7f93f77991 GIT binary patch literal 16595 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 ONa2;LY=!ijkpBh`q`oQu literal 0 HcmV?d00001 diff --git a/doc/workbook/basics/basics.md b/doc/workbook/basics/basics.md index e425620a..c26867f2 100644 --- a/doc/workbook/basics/basics.md +++ b/doc/workbook/basics/basics.md @@ -14,83 +14,89 @@ Nav: [Workbook](../workbook.md) | [Handling Requests: Form/Query Parameter](/wor ## EWF service structure -The following code describes the basic structure of an EWF basic service that handles HTTP requests. +The following code describes the basic structure of an EWF basic service that handles HTTP requests. We will need to define a Service Launcher and a Request Execution implementation. ```eiffel class - SERVICE_TEMPLATE + APPLICACTION inherit - WSF_DEFAULT_SERVICE -- Todo explain this, and the concept of launchers and connectors () + WSF_DEFAULT_SERVICE [APPLICATION_EXECUTION] create - make_and_launch + make_and_launch -feature -- Basic operations - - execute (req: WSF_REQUEST; res: WSF_RESPONSE) - do - -- To read incoming HTTP request, we need to use `req' - - -- May require talking to databases or other services. - - -- To send a response we need to setup, the status code and - -- the response headers and the content we want to send out our client - end end ``` -When using the "nino" connector, by default the service listens on port 80, but often this port is already used by other applications, so it is recommended to use another port. -To define another port, redefine the feature `initialize' and set up a new port number using the service options (see below). +The class ```APPLICATION``` inherit from +```WSF_DEFAULT_SERVICE [G ->WSF_EXECUTION create make end]``` it will be responsible to launch the service an set optional options. + +The class ```APPLICATION_EXECUTION``` is an implementation ```WSF_EXECUTION``` interface, which is instantiated for each incoming request. ```eiffel class - SERVICE_TEMPLATE + APPLICATION_EXECUTION + inherit - WSF_DEFAULT_SERVICE - redefine + WSF_EXECUTION + +create + make + +feature -- Basic operations + + execute (req: WSF_REQUEST; res: WSF_RESPONSE) + do + -- To read incoming HTTP request, we need to use `req' + + -- May require talking to databases or other services. + + -- To send a response we need to setup, the status code and + -- the response headers and the content we want to send out our client + end +end +``` + +When using the "nino" connector or the new "standalone" connector, by default the service listens on port 80, but often this port is already used by other applications, so it is recommended to use another port. +To define another port, redefine the feature `initialize' and set up a new port number using the service options (see below). + + +```eiffel +class + APPLICATION + +inherit + WSF_DEFAULT_SERVICE [APPLICATION_EXECUTION] + redefine initialize end create - make_and_launch + make_and_launch feature {NONE} -- Initialization initialize -- Initialize current service. - -- on port 9090 do set_service_option ("port", 9090) end - -feature -- Basic operations - - execute (req: WSF_REQUEST; res: WSF_RESPONSE) - -- Execute the incoming request. - do - -- To read incoming HTTP requires, we need to use `req' - - -- May require talking to databases or other services. - - -- To send a response we need to setup, the status code and - -- the response headers and the content we want to send out client - end end ``` The **WSF_REQUEST** gives access to the incoming data; the class provides features to get information such as request method, form data, query parameters, uploaded files, HTTP request headers, and hostname of the client among others. The **WSF_RESPONSE** provides features to define the response with information such as HTTP status codes (10x,20x, 30x, 40x, and 50x), response headers (Content-Type, Content-Length, etc.) and obviously the body of the message itself. -**SERVICE_TEMPLATE** is the root class of our example, it launches the application, using the corresponding connector, Which connector? this depends how you want to run it cgi, fcgi or nino. For development is recommended to use Nino, a standalone web server written in Eiffel, and run the execution within the EiffelStudio debugger. For production fcgi (or cgi) using Apache or another popular web server. +**APPLICATION** is the root class of our example, it launches the application, using the corresponding connector, Which connector? this depends how you want to run it cgi, fcgi, or standalone. For development is recommended to use a standalone web server written in Eiffel, and run the execution within the EiffelStudio debugger. For production fcgi (or cgi) using Apache or another popular web server. -The **SERVICE_TEMPLATE** class inherits from _WSF_DEFAULT_SERVICE_ class, and this one also inherits from other interfaces. Let’s describe them in a few words. +The **APPLICATION_EXECUTION** class inherits from _WSF_EXECUTION_ interface, which is instantiated for each incoming request. Let’s describe them in a few words. -![Service Template Hierarchy](/workbook/SERVICE_TEMPLATE.png "Service Template") +![Execution Hierarchy](/workbook/APPLICATION_EXECUTION.png "Application ExecUtion ") **WS_LAUNCHABLE_SERVICE** inherit from **WS_SERVICE** class, which is the low level entry point in EWF, handling each incoming request with a single procedure ```execute (req: WSF_REQUEST; res: WSF_RESPONSE) ...```. And also provides a way to launch our application using different kind of connectors. Below a [BON diagram] (http://www.bon-method.com/index_normal.htm) showing the different kind of connectors. -![Launcher Hierarchy](/app/doc/WSF_SERVICE_LAUNCHER.png "Launcher") +![Launcher Hierarchy](./basic/Launcher Hierarchy.png "Launcher Hierarchy") A basic EWF service inherits from **WSF_DEFAULT_SERVICE** (for other options see [?]). And then you only need to implement the **execute** feature, get data from the request *req* and write the response in *res*.