Presentation is loading. Please wait.

Presentation is loading. Please wait.

THttpServer for ROOT Bertrand Bellenot, CERN Sergey Linev, GSI Darmstadt 28.02.2014.

Similar presentations


Presentation on theme: "THttpServer for ROOT Bertrand Bellenot, CERN Sergey Linev, GSI Darmstadt 28.02.2014."— Presentation transcript:

1 THttpServer for ROOT Bertrand Bellenot, CERN Sergey Linev, GSI Darmstadt 28.02.2014

2 B.Bellenot, S.Linev, THttpServer for ROOT2 JSRootIO  Written on JavaScript, works in all major browsers IE, Firefox, Opera, Safari, Android, …  Allows to draw many kinds of ROOT objects TH1, TH2, TH3, TProfile, TGraph, THStack, TCanvas  Demonstrator: http://web-docs.gsi.de/~linev/JSRootIO/index_local.htm  Interactive graphics directly in the browser: changing of draw style, zooming, bins info update of statistic in stat box different context menu commands  Main aim – display objects from ROOT files PRO - no need for special code on the web server CONTRA – not possible to update data dynamically

3 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT3 JSRootIO for online?  JSRootIO is file-based difficult to use for online tasks not really scales for big systems  Much more benefits if will run online one would see live results from running experiment from any place of the world  One need special web application, which can provide online data to JSRootIO

4 Web server for ROOT  THttpServer class provides web server for arbitrary ROOT application  In any place of ROOT macro: root [0].x $ROOTSYS/tutorials/hsimple.C root [1] new THttpServer();  No any changes in ROOT framework are required  No any changes in user code are required 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT4

5 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT5 hsimple.C in web browser

6 Main classes  TRootSniffer - `sniffer`for objects hierarchies in TFolder, TFile/TDirectory, TTree, TCollection  THttpEngine – abstract class for implementing http protocol TMongoose – embeddable web server, based on  https://github.com/valenok/mongoose https://github.com/valenok/mongoose TFastCgi – FastCGI protocol implementation  supported by all major web servers like Apache, MS IIS, lighttpd,...  THttpServer – central class receive http requests from engine(s) http requests processed by sniffer takes care about threads safety 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT6

7 THttpServer  Any object can be registered in TFolder structure: root [5] h1 = new TH1I(“h1”, “title”, 5, 0, 5); root [6] serv->Register(“folder”, h1);  Following http requests are processed: http://host:654/ROOT/h.xml  xml file with objects hierarchy, used to build tree structures in browser http://host:654/ROOT/h1/get.bin  binary zipped data, produced by object streaming http://host:654/ROOT/StreamerInfo/get.bin  binary zipped data of current streamer infos http://host:654/ROOT/h1/get.png?w=100&h=100  png image, produced from TCanvas http://host:654/ROOT/  returns generic (or user-defined) html page, shown before 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT7

8 FastCGI support  Protocol for interfacing interactive programs with web servers  Supported by all major web servers Apache, lighttpd, MS IIS, Cherokee, Hiawatha, LiteSpeed, Kerio, Nginx, Resin, Roxen, Zeus...  One benefits from common infrastructure user access, security, encryption, balancing,...  Can run in parallel to HTTP server 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT8 ROOT http FastCGI Apache http

9 Project state  Developed since mid 2013  Works with ROOT 5.14 and 6.00  Tested on Linux and Windows  No external dependencies mongoose is just two source files mongoose is GPL2, can be replaced by civetweb with MIT license FastCGI is optional, provided by all Linux distributions  For the moment available on: https://subversion.gsi.de/dabc/http/ 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT9

10 Current applications  Integrated into DABC DABC is DAQ framework, used in different experiments now also provides generic web interface for online software  DAQ – DABC, MBS (GSI standard DAQ)  slow control – FESA (CERN/GSI accelerator control), EPICS, DIM  online analysis – Go4, ROOT  Integrated with Go4 Go4 is analysis framework with QtRoot online monitoring interface now also web interface without changing user-code  Evaluated by different groups in GSI: HADES, SuperFRS, R3B  Could be used in AMORE framework of ALICE 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT10

11 Possible developments  Replace mongoose by ROOT TThread/TSocket classes many parts of original mongoose code can be reused, ~1 month of work  Implement caching on the server preventing application from overload, ~1 week of work  Implement more http requests http://host:654/ROOT/h1/get.xml  convert object into xml with TBufferXML, ~1 hour of work http://host:654/ROOT/h1/get.json  stream object into JSON representation directly  no need for ROOT I/O in JavaScript  one need TBufferJSON class, ~2 weeks of work http://host:654/ROOT/h1/fTitle/get.txt  access to object members in simple text form  mostly implemented, ~3 days of work http://host:654/ROOT/Cmd/Reset/exe.cmd?par1=10  provide command interface via http protocol  any user-defined commands with extra parameters  user authentication with standard http methods 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT11

12 More than web interface  One can use http protocol to communicate with any running ROOT application  From any script: wget http://host:654/ROOT/obj/fPar/get.txthttp://host:654/ROOT/obj/fPar/get.txt wget http://host:654/ROOT/obj/fPar/set.txt?value=1http://host:654/ROOT/obj/fPar/set.txt?value=1  For many cases no need for extra sockets and special protocols 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT12

13 Backup slides 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT13

14 Use case – HADES 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT14 TRB Event builder hld files hld DABC stream HYDRA2 web browser go4 gui EvBld

15 Use case – HADES  DABC as DAQ system collects data from TRBs store HLD files deliver data to online analysis  Stream event source to connect DAQ HYDRA2 analysis gets data directly via socket instead of temporary hld files  THttpServer for analysis monitoring no any change in HYDRA2 itself  Monitor DAQ and analysis via same interface 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT15

16 Use case – HADES  Online analysis  Many processes in parallel doing same events or different events  Histograms collector (to be done) 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT16 Event builder DABC stream EvBld hld files HYDRA2 Histograms collector

17 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT17 Go4ExampleSimple in web browser

18 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT18 Use case – DAQ and slow-control middleware DABC MBS EPICS slow-control variables ROOT online analysis http go4 online analysis FESA beam profiles DABC DAQ status and log information

19 Use case – several DABC nodes 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT19 MBS FESA MBS go4 online analysis EPICS ROOT analysis DABC http DABC Master http socket http socket FastCGI Apache http Preferable Optional

20 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT20 Alternatives to web browser DABC http socket web browser go4 gui with native ROOT graphics SOAP, JSON console-based tools DABC API

21 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT21 How it works – hierarchy request wget http://lxg0538:8090/FESA/h.xml

22 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT22 How it works – item request wget http://lxg0538:8090/FESA/Test/TestRate/get.xml serveritemrequest

23 28.02.2014B.Bellenot, S.Linev, THttpServer for ROOT23 How it works – history request wget http://lxg0538:8090/FESA/Test/TestRate/get.xml?history=20


Download ppt "THttpServer for ROOT Bertrand Bellenot, CERN Sergey Linev, GSI Darmstadt 28.02.2014."

Similar presentations


Ads by Google