Design pattern to control embedded windows user control painting from hosted web application - part 2.
In the previous post I wrote about the client and how by using painting commands the server side controls what will be paint on the client side. If we look for metaphor the client side (user control) is like CNC lathe, the server send set of instructions (commands) and the lath (user control) perform them on the iron (Graphics).
I also want to clarify that this solution should enable end users to add custom data on images generated by ESRI SDI engine and programmer to add new functionality and GIS entities to the GIS viewer.
The server side needs to receive request from client and generate painting commands to be sent to the client side (user control). Beside this basic functionality the server side need to be written in such a way that new request could be add by programmers (as new buttons in the toolbar or new menu items that could be added by editing XML file). To fulfill this requirement we also choose Commands to represent client request. The client might send one or several request that will be translate on server side to stuck of commands that will be execute sequentially. Server side command might use any GIS engine, as long there is a proxy for given GIS engine that follow given interface.
All server side commands derived from one base command. This inheritance enable programmer to add their own commands that derived from given command or and change given command execution. To enable programmers to reach hosted application state from their server side commands the GIS server side is implement as IhttpHandler that use Parser and Factory classes to get request command, create them and execute them.