Gizmox - Guy Peled's Blog

Guy Peled's thoughts on development, and what ever...

  Home  |   Contact  |   Syndication    |   Login
  37 Posts | 1 Stories | 4 Comments | 43 Trackbacks

News

This is a testing of mashup....

Article Categories

Archives

Post Categories

Blogs I Read

Favorites

Resources

Visual WebGUI Related

Monday, July 02, 2007 #

Wiktor Zychla has assembled a tiny AJAX framework contest between Visaul WebGui, ASP.NET AJAX and Ajaxium. Comparing a givven scenario he checked bandwidth consumption, requests per second, etc. The results as Wiktor wrote them are: "The VWG is an undoubt winner. It did a great job of serving the highest number of requests per second, 422, and is also a clear winner regarding the amount of data sent to and from the server."

Contest context

More than two years ago we've built a small web application used to collect and print documents required to participate in secondary school final examinations in Poland. The application is used quite extensively by people from all over the country.

The application, maturzysta.vulcan.pl, is located here.

From the web developer's point of view there is one interesting aspect of the main form of the application: there are about 30 dropdown lists with complicated logic between their selections: when you change the selection in one list, few others should be cleared or repopulated with context-bound data. There is also quite a lot of validation of various dependencies between user's selections.

The first version of the application was built as a server-side application: all SelectedIndexChanged events were auto-postbacked and processed on the application server. This caused a lot of trouble since the heavy form had to be sent to and fro the server.

The year later we've completely redesigned the application, moving the interface logic to the javascript. The web traffic problem has been solved but two other appear. First of all - no one likes javascript, it's clumsy and error-prone. Then - we had to disable ASP.NET page validation mechanism because otherwise the page content modified on the client-side would be rejected on the server-side as potentially dangerous.

In the meantime, few promising AJAX frameworks appeared and we thought that it would be possible to go back to the initial version of the application but instead of expensive postbacks we could take the AJAX approach and replace postbacks with callbacks. This could solve all problems: reduce the traffic and still keep the application logic on the server-side.

Read more...


Monday, May 14, 2007 #

There is a new .NET2.0 open source package that comes with an installation that enables to work with the open sources as you work with the normal SDK. Working with the installed open source provides a quick way to fix your own bugs and to contribute to the VWG community. You can see in this web cast exactly what it means to start working with the open source version instead of using the normal SDK.

The new installation will provide developers a real easy way to better understand the VWG framework. You can even debug your project and enter into VWG code which provides a great insight into the framework bits and bites.

As always the sources can be found with in the projects section (quick link).


Sunday, May 06, 2007 #

A new version has been released and it includes many bug fixes and lots missing functionality implementation mainly with in the DataGridView control. There are also lots of new features that had been requested by developers including redirecting, clipboard support, Invoking client side scripts, Calendar first day support, ListView auto resize and more.

The DataGridView control has been added many missing implementations including selection management and events, deleting rows, resizing columns and rows, changing captions and visibility, alternative row style and more. You should be aware that previous versions of VWG had added the DataGridView control with lots of unnecessary definitions. While not harmful in the previous version, in the new one those different properties are working and could cause unwanted behaviors. You should clean up the InitializeComponent code from the different DataGridView definitions keeping only the positioning,dimensioning and data source attributes.

We are currently also working on a Vista theme that will be released soon. The site demo has already updated to work with the new theme.

For a more detailed change see the issue tracker here.

As always you can download the latest version from here.



Sunday, April 29, 2007 #

AJAX has been breaking new grounds almost every day, with over 150 AJAX frameworks, there are plenty of options to choose from and one might say too many. Most of the AJAX frameworks provide you with browser extension libraries that will help you utilize the browser and interact with the server in a more productive way. What they are trying to do in most cases is to provide larger building blocks to achieve your goals by abstracting the calls to the browser API and to the server.
 
The last is a significant improvement over the plain vanilla browser coding but you are still writing your application in a very poor environment with very poor developer tools and your end result is a JavaScript application vulnerable in terms of security, manageability and your IP protection.
 
When you are writing enterprise applications which are actually business apps, the security, productivity, manageability and IP issues of AJAX development are becoming a real turn off. Applying SSL to your application can only bring you so far, as you are still exposing server services for the client to consume through plain old JavaScript and running business logic which can easily be hijacked using a simple script debugger. Also the different AJAX frameworks still in most cases force you to write your application mainly in client side JavaScript code which has its limits and productivity issues. The most obvious issue regarding JavaScript UI programming is lack of design time capabilities but that is only the tip of the iceberg.
 
Server based AJAX is a recent addition to the AJAX frameworks arena and it basically changes the way we think about AJAX applications. It introduces a concept of server based computing for web applications where your code runs entirely on the server and reflecting changes to the client. This concept is used widely in remote desktop or application streaming software, but has not been until now available for web developers.
 
The server based AJAX concept provides great benefits for developers in terms of productivity, manageability and usability. Currently the only available framework implementing full server based AJAX is Visual WebGui (http://www.visualwebgui.com ) which provides full WinForms like API and design time capabilities for developing web applications. While it sounds very much like Google's GWT it is not, as it does not serialize the application code to JavaScript but rather uses it in runtime on the server and reflecting the UI to the client. This means that you have what can be called an "empty client" that is managed entirely by the server. Client events are sent to the server that in turn, return its update commands to the client reflecting changes made to the UI on the server. This process can be optimized in various scenarios explicitly to reduce the amount of server callbacks and bandwidth consumption, making the end result as responsive as standard AJAX applications.
 
There are some down sides to the server based AJAX concept, mainly in terms of scalability, as you are utilizing a server session to run your application but when applied to enterprise applications, rather then Amazon sized sites, you get a very nice ROI that you would not get in any other architecture. In terms of responsiveness and performance one would think that this concept lacks, but the opposite is the case, as the server uses fewer resources in terms of CPU and IO as it does not have to receive/return large blobs and most important does not need to construct and deconstruct the application classes on every request.  Also as said before there are many optimizations that can be applied to reduce server callbacks and bandwidth consumption.
 
The server based AJAX concepts may just be the solution for enterprise AJAX applications as it provides these applications with the best of both worlds. Having a responsive, rich AJAX UI that behaves pretty much like desktop UI, but still maintaining the productivity, IP protection, and security of running the application on server side provides a compelling offering for enterprises.

Tuesday, April 10, 2007 #

Visual WebGui is....
 
User-Friendly – Visual WebGui was designed to be the next VB6 for the web. Simple to program, simple to deploy. With a full WinForms API and design time support you can start developing complex AJAX applications in seconds with no web know-how.
 
Secured – Visual WebGui was designed to provide for military grade secured AJAX applications by eliminating client side service consumption and business logic processing using an empty client concept. The browser is used as a looking glass to the server that runs the application.
 
Productive – With full WinForms API and design time support, Visual WebGui is almost as productive as R.A.D. platforms without limiting your options. Debug your application the same way you would debug any .NET application free of script debugging nightmares.
 
Powerful – Visual WebGui was designed to support enterprise class applications with unlimited complexity supported by full object oriented programming. Using our unique AJAX transport, Visual WebGui applications consume 1% of bandwidth compared to any alternative AJAX framework.
 
Feature-Rich – Visual WebGui contains most of WinForm's components including non trivial implementations of controls such as the PropertyGrid that provides a simple way to edit live objects. 
 
Supported - Visual WebGui is supported by its Core Team of developers and a dedicated international community. Through online forums and our support@visualwebgui.com mail box support is always close at hand (commercial support will be available soon).
 
Easily Installed – Visual WebGui comes with a simple installation that will get you started on developing your AJAX application in no time. Visual WebGui's toolbox and templates are integrated into Visual Studio so they are always available.
 
Localized – Visual WebGui includes full .NET and WinForms multi-language localization support which allows you to localize your application in the designer the same way you localize a WinForms application.
 
Open Source – Visual WebGui SDK is provided free, as open-source software, and licensed under a standard GPL agreement. It allows individuals to do whatever they wish with the application framework, both commercially and non-commercially.
 
Cutting-Edge – Visual WebGui provides the developer with full object oriented .NET support allowing utilization of all the .NET capabilities including reflection, generics and more. This is enabled by a unique architecture that provides an alternative HTTP processing pipeline that does not include serializing JavaScript.
 
Extensible – Visual WebGui is provided with many customization and extensibility features including custom control creation, theme creation and gateways.
 
Interopable – As an extension to ASP.NET, Visual WebGui can also interact with standard ASP.NET pages hosting them within your Visual WebGui application or calling Visual WebGui dialogs and forms from your ASP.NET code.
 
Visual WebGui's roadmap includes…
 
Mono deployment - Allowing your Visual WebGui application to run on non Microsoft servers (Visual WebGui for .NET 1.1 is already compatible with mono).
 
Legacy to web – Migrating WinForms or VB6 applications to web with out rewriting your application.
 
Dual mode deployment – Deploy your Visual WebGui application as a desktop application or a web application enjoying the best of both worlds.
 
 
Visual WebGui is built on top of Microsoft ASP.NET (C#) platform and extends it by providing WinForms like development for web applications. The most recently released version is 5.81.3.74.4b.

Thursday, March 15, 2007 #

Version 5.81.3.74.4b is available and contains lots of bug fixes and some new exciting features that had been requested by many developers. This is a partial list of the changes (See change log to a more detailed list):

Localizing Visual WebGui internal resources support - All of Visual WebGui internal resources where gathered into one resx file that will be available for download and translation. The compiled localized assembly resources will be available from the download area titled "language pack". The compiled resources assembly should be added to the Visual WebGui bin directory under a directory matching the culture code (.NET standard). The language pack will contain the resx file so developers can localize them to there own language. Localized files should be sent to support@visualwebgui.com with the related language culture code in this format xx-XX (example en-US). The language pack will be updated in a every time a new resx file or updates to an existing one will be available.

Custom date formating - The DateTimePicker control now supports the CustomFormat property which enables to define the date format as your users are used to. The date format also include the ability to edit time and to use enumeration instead of integers (Month,Day and AM/PM enumerations). To preserve compatibility with existing applications we added configuration keys which enables to define the default DateTimePicker format as it was before this enhancement (It does not prevent you from using the custom format attribute but provides you a way to define the Long,Short and Time built in formats). By default a DateTimePicker is initialized with the Long format.

These are the configuration keys (values are formated in the WinForms DateTimePicker custom format syntax):

<LongDateFormat Value="MM/dd/yyyy"/> 

<ShortDateFormat Value="MM/dd/yyyy"/>

<TimeFormat Value="hh/mm/ss tt"/>

Support None anchoring - This feature which is a WinForms feature provides you the ability to position controls relative to the center. This means that if you position a control and remove both its left anchoring and right anchoring it will stay in the horizontal position relative to the center you assigned. This means that you can center controls with out doing complex layouts. If you remove all anchoring definitions the control will be position relatively to its original distance from the design time container center.

Added support for Application.ThreadException - This is a static event that provides you with a mechanism to catch unhandled errors. By handling this event you prevent unhandled errors sent you your user. Instead you can catch this error and display a friendly error or you can choose to email this error automatically to the system administrator.

ASP compatible mode - Visual WebGui now supports working in ASP compatible mode which provide your application the same threading model (Single Threaded Apartment) as classic ASP applications. This enables you to use single threaded apartment components from your old ASP application. This feature is an implementation of the ASPCompat mode of the ASPX pages so you can read about it in the ASP.NET documentation.

ErrorProvider design time and run time support - The new ErrorProvider provides the same capabilities as the WinForms component meaning that you can attach an error icon to any control which is anchored or positioned in a table layout. This feature is demonstrated here in a video tutorial.

Full ToolBar support - The new ToolBar allows to add text aligned to the right or to the bottom and to change the button size using larger icons. To implement a large icon layouted ToolBar you have to use the ImageList control (the same way you would have done it in WinForms). This feature is demonstrated here in a video tutorial.

Embedding Visual WebGui in an ASPX page - This is enabled thanks to a new control that was added to the library called FormBox. The FormBox control is an ASP.NET control that can be used from an ASPX page to embed Visual WebGui forms. The FormBox comes with an Arguments and Results collections to enable to interaction between the Visual WebGui application and the container ASPX page. You can see a demonstration of this feature at the end of this video tutorial. 

Enhanced designer support - Many critical bugs where fixed and lots of improvements to control's design time support such as the StatusBar control and the ErrorProvider control. There are still known bugs regarding working with menus in VS2003 and some missing design time features such as Copy/Paste that will be added and fixed in the next versions.

For a more detailed change see the issue tracker here.

As always you can download the latest version from here.


Saturday, November 11, 2006 #

Yes I know I have not written for a long time.  I was kind of thinking about blogging and all and I did not get my self to start writing. Any way there is a new Visual WebGui version with extensibility features and we are working on supplying at last documentation. God knows way but documentation seems to be the hardest part of the development process and yes we all know its a very important part of any product.  Documentation is on the way....

As always you can find the new version here: http://sourceforge.net/projects/visualwebgui.

 


Sunday, August 20, 2006 #

The new version contains many bug fixes and performance enhancements and the change log can be viewed at http://support.visualwebgui.com.

As always you can find the new version here: http://sourceforge.net/projects/visualwebgui.


Tuesday, August 08, 2006 #

There is a new version fixing a critical bug found in the last version regarding a new capability for boosting performance by caching resources in run time. The bug caused an error to be thrown when the application was executed which detailed a permission denied error on writing a file to the “C:\windows\system32“. Just to clear things up, Visual WebGui does not require these permissions and normally it does not attempt to write the disk. 

In order to test the new performance boosting capability a definition should be added to the WebGUI section:

<StaticResources Mode="On" />

There could be some permission issues with this feature as it uses a physical directory to store cache. You should add a "Route" directory under the site root and give it write permissions to avoid permission issues.

There is also a new Timer component that basically works just as the WinForms timer works. It is new feature that is still under QA. It is critical that you call Timer.Stop() or Timer.Enabled=false before the containing component dies as currently timers are not destroyed automaticly. Timers don't work currently by default and should be enabled by adding a definition to the WebGUI section:

<TimersEnabled Mode="On"/>

When this feature is released this definition will not be nacecery.

There is also a new configuration key called PrivateVersion that allows developers to add custom cache version dependency. The private version is concated to the public version cache key and enables invalidation of cache in cases like theme development or custom controls. The cache key is used both client side and server side so by changing the private version you actually are invalidating also all client cache. The private cache is used as following in the WebGUI section:

<PrivateVersion Value="2"/>

If the current public cache version is "1.24" the cache key will be "1.24.1".

As always you can find the new version here: http://sourceforge.net/projects/visualwebgui.


Thursday, August 03, 2006 #

In my opinion the last two versions of Visual WebGui including this one shows why it's a killer environment. When building super complex apps comes to dragging three components to a design surface and writing a few lines of code to bind them together this sounds like a RAD product. But Visual WebGui does not assume what you want to do. It just takes care of the “how” and leaves you only with the “what”. You see I have recently learned that modeless dialogs in IE are working as a separate thread and therefore you can not work properly with an XMLHTTP object that was not created by the modeless window. How much time would you burn figuring this out. Well who gives a dam it is already part of the internals of Visual WebGui.

Any way take for example this app here (You can click the image to enlarge):

You have a ScheduleBox control which is a new Visual WebGui control working with a DataGridView which is also a new addition to the Visual WebGui environment and you have a PropertyGrid that enables you to change the current displayed date and view and so on.... Definitely not something you would normally encounter when browsing to a URL that does not install anything. You have a fully working DataGridView binded to the events collection of the ScheduleBox control. Every change you do in the DataGridView will automatically reflect in the ScheduleBox in the middle. Say you change the subject of an event or the duration it will automatically update in a friction of a second sending no more then 1KB and receiving no more the 1KB updating the view to reflect exactly your change.

You have the PropertyGrid which is binded to editing the ScheduleBox control just by assigning the SelectedObject property of the PropertyGrid the reference to the ScheduleBox control. Immediately you get full control over the ScheduleBox you can apply border you can change its current displayed date and you can change its view.

Would you believe that all this can be done with this code:

Well I love it, no scripts, no HTML, no pages, no requests, no XML just plain old read it and execute OOP code. I guess I sound kind of excited, drunk on my own alcohol, but for me it is a dream come true. I remember days when I was coding tones of JavaScript lines thinking that there most be another way.

Well mark my words, these days are over.

Any way as always you can find the new version here: http://sourceforge.net/projects/visualwebgui.

 


Tuesday, July 18, 2006 #

The new version is available at source forge (http://sourceforge.net/projects/visualwebgui) and includes some new exciting features such as enhanced design time capabilities, data binding, colorlistbox control, and a new full blown property grid control.

Design time architecture was re engineered to comply to WinForms standards and now enables to create and consume custom controls and user controls as simple as the built in controls.

Data binding capabilities enables binding list boxes and combo boxes to collections and data sets enabling auto initialization and updating when the binded data updates.

The new property grid enables developers to created design oriented applications or use it for rapid data editing applications such as admin applications.


Thursday, July 13, 2006 #

The next release of Visual WebGui will include some exciting new features that considering the amount of developers that requested these features will defiantly be some thing to look for.

We have added data binding support enabling binding of collections and datasets to list boxes and combo boxes and binding controls to a currency manager that provides synchronization between controls just as WinForms does. All the features of the data binding mechanism are available more and more controls will support data binding interactions in the next versions including the new DataGridView controls that is in work as these words are written.

Another new existing feature the next version will include is PropertyGrid support that has all the capabilities of the WinForms PropertyGrid. Most of the declarative attributes remained the same except for UI related attributes (UITypeEditor, IUIEditorService). These attributes map types to editors that can interact with the PropertyGrid through the IUIEditorService. To avoid conflict between the WinForms attributes and the Visual WebGui attributes a new attribute is introduced called WebUITypeEditor that defines how a property is edited when displayed via web while the UITypeEditor keeps on working the same way it did. From with in the WebUITypeEditor you can call GetService to retrieve the IWebUIEditorService and display a form as a dialog of a specific property or as a dropdown of a specific property. Other from these UI related issues all other attributes are applied to the Visual WebGui PropertyGrid including the type converter and all other design related attributes that developers are familiar with in WinForms. The Visual WebGui next release contains two built-in PropertyGrid editors for editing Color types and Font types the same way WinForms does while all other types are currently text based editing.

Here are some screen shots showing the new PropertyGrid:

Category sorted PropertyGrid:


Alphabetic sorted PropertyGrid:


Color type PropertyGrid editor:

This control uses a new ColorListBox control added in the new Visual WebGui release. This control has the same interface like the standard ListBox but expects its items to be typed Color. It displays its items with a color preview icon.



Font type PropertyGrid editor:

This editor uses a new dialog introduced in the next version that implements the WinForms FontDialog via Viasual WebGui. The only difference the Visual WebGui dialog has is that user response should be retrieved from a callback event handler as Visual WebGui dialogs are only modal on the client. Attaching to the closed event allows developers to check an IsCompleted property to find out if the user has completed the dialog using the OK button.


Wednesday, June 21, 2006 #

View the change log here.
Download the new version here.


Tuesday, June 06, 2006 #

Visual WebGui Enterprise Manager is available at SourceForge. The a new database administration tool was developed with Visual WebGui and is based on Microsoft's “Enterprise Manager”. Presenting a familiar interface for administrators and developers the application brings the power of the enterprise manger to the web. The application has extended the “Enterprise Manager” with a provider mechanism which will enable managing multi database types in a unified UI. The application is actually a natural evolution of the popular “ASP.NET enterprise manager” and provides the same capabilities and more but with a fully AJAX enabled UI and multiple database type capabilities. 

The application can be downloaded with full source code here: http://sourceforge.net/projects/vwg-ent-man.

Current feature set:
Views: Design / Create / Rename / Delete / Query
Tables: Design / Create / Rename / Delete / Query
Stored Procedures: View / Rename / Delete / Create / Edit
Roles: View
Logins: View
Processes: View
Logs: View
Databases: MS-SQL

Screen Shots:

Screen 1: Table properties dialog.
Screenshot

Screen 2: Table designer
Screenshot

Screen 3: Process view
Screenshot

Screen 4: View designer
Screenshot


Sunday, May 28, 2006 #

We are currently working on the Visual WebGui support for non IE browsers and we were striving for a good site that will help us summarize it all up. I came across this great site named “Index DOT Html“. Which is definitely the most productive comparison there is on the web. Supplying a very smart navigation system you get what you need quickly and accurately.

Two thumbs up for Brian Wilson which created this site.
http://www.blooberry.com/indexdot/html/index.html