The main difference between a WinForms application and a Visual WebGui application is the execution context. Visual WebGui being a platform for building web applications, is a multi-threaded environment that needs to serve many users. While a WinForms application serves a single user on a dedicated machine.
A major built in difference between WinForms and Visual WebGui is the ShowModal method of the form object which in WinForms halts the execution of the code until the window is closed. In Visual WebGui the ShowModal method returns immediately and the developer must attach to the closed event to continue execution after the window is closed. This actually means that in Visual WebGui a modal dialog is only modal on the client side.
A side from the ShowModal method, designing a Visual WebGui application is pretty much the same as designing a WinForms application. Never the less Visual WebGui multi-threaded execution context comes with some best practices. Static members should be thread safe as multiple threads can access those members. Resources such as memory and database connections should be released as soon as possible. Server round-trips can be optimized by using Visual WebGui best practices in event handling. Visual WebGui update commands that are sent to the client to reflect changes made on the server can be optimized by using best practices.
Visual WebGui eliminates the request/response nature of web applications by exposing to the developer a fully event driven environment. Web developers usually create resources like connections at the page level knowing that when the request processing is done the resources will be released. As Visual WebGui does not have a concept of pages and requests, developers should treat an event handler method as a page. Meaning that if you have a button that has an event handler that should populate a ListView from the database. A connection should be opened at the beginning of the event handler method and closed at the end. Local method variables will automatically be released at the end of the method execution and this can be a great way of managing resource lifetime.
Another difference between Visual WebGui and WinForms is Gateways. Gateways are actually normal request processors that are processed in the context of the application. If for example you have a list that you like to open as a ready for a print HTML page, you use gateways in order to do so. Controls that need to support gateways implement the IGatewayControl that has one method that returns a IGatewayHandler that is responsible for processing the gateway request. This concept is equivalent to the IHTTPFactory and IHTTPHandler of the ASP.NET pipe line.
I will soon write a post about Visual WebGui best practices and a sample code for implementing a gateway.