Upload
noel-solis
View
31
Download
5
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
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
httpd
s
mod_xxx
HTTP-request
{response{statuscode,Body}}
HTTP-Response
Creation of dynamic Web Pages
CGI Eval Scheme
– Ex: http://server:port/EvalSchemAlias/mod:func(AnyArg)
Erl SchemeEx: 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– Ex: {version,1.2},
[{config_func,{webappmon,configData,[]}}] Start WebTool.
– 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.
logic ModuleModule that generates the
User Interface
HTTP-Request
WebPage