Tools for Designing Web Based Interfaces for Erlang/OTP

Download Report

Transcript Tools for Designing Web Based Interfaces for Erlang/OTP

Tools for Designing Web Based
Interfaces for Erlang/OTP
Martin Gustafsson
Program
Why Web Based User Interfaces.
 httpd the Webserver in Erlang/OTP.
 How to use and develop with WebTool.
 Best Desing of Web Based Tools, with
Erlang/OTP.

Why Web Based User Interfaces
Easy for the user.
 Fast development,

–
–
Easy to Learn.
Fast Development.
The tool can be used from the network.
 Easy to generate printable reports.

Problems with Web based User
Interfaces
Takes little more time to start than
command-line tools.
 Interaction with the files system.
 Browser incompabilities.
 Security is problem,

–
–
Functionality that can stop the Erlang node.
Data transfer between server and client is not
secure.
httpd -The Webserver in
Erlang/OTP
Support for Basic User Authentication.
 Support for SSL.
 Support for creation of Dynamic Web Pages.
 httpd is a Apache styled Webserver.

The functionality of httpd
HTTP-request
httpd
s
HTTP-Response
mod_xxx
{response{statuscode,Body}}
Creation of dynamic Web Pages
CGI
 Eval Scheme

–

Ex: http://server:port/EvalSchemAlias/mod:func(AnyArg)
Erl Scheme
Ex: http://server:port/ErlSchemeAlias/mod/func
The Webserver will return the result of calling
mod:func(Env,Input).
Example
index(Env,Input) ->
[“\r\n\r\n”,html_head(),htmlbody(),
createMenu(Env),”</HTML>”].
createMenu(Env)->
Ag=httpd_util:key1search(
Env, http_user_agent,other),
case
mod_browser:getBrowser(Ag) of
{{msie,_},_} ->
menu(ie);
{{netscape,_},_} ->
menu(nav)
end.
menu(nav) ->
“<LAYER NAME=\”popup\”
VISIBILITY=\”hidden\”>
<TABLE>
<TR><TD>
<A HREF=./start>
Start tool
</A>
</TD></TR>
….
</TABLE>
</LAYER>”;
Starting WebTool

Create a *.tool file for each tool and save it in
the directory MyTool-vsn/priv/FileName.tool
–

Start WebTool.
–

Ex: {version,1.2},
[{config_func,{webappmon,configData,[]}}]
Ex: webtool:start().
webtool:start(Path,Port).
Point a browser to http://HostName:Port/
Callback function for WebTool
WebTool use the callback function to
receive configuration data for the tool.
 Configuration data is needed for:

–
–
–
Creating links from WebTool to the tool.
Configuration of the Webserver.
Data about how to start and stop the tool.
Developing tools to be used via
WebTool

The tools must export a callback function that
returns the configuration data needed by
WebTool.
–
Example:
configData()->
Application=my_app
RealPath=code:priv_dir(Application),
{mytool,[{web_data,{“URL”,”Linktext”}},
{alias,{erl_alias,”VPath”,[“Module”]}},
{alias,{“VirtualPath2”,RealPath}},
{start{{Mod,Func,Arg},{Mod,Func,Arg}}}]}.
Design principles for Web based
Tools

A N-layered solution has many advantages
–
–
Easier to update the code
If well designed the logic module might be
possible to use as a command-line version.
HTTP-Request
Module that
generates the
User Interface
WebPage
logic Module