|
Comments
|
Today's Top SOA Links
From the Editor PowerBuilder 12 and .NET
PowerBuilder Editorial: The State of the State
By: Bruce Armstrong
Aug. 19, 2009 09:00 AM
(July 25, 2008) - Back in 2002, Sybase announced their four-phase approach toward adding .NET support to PowerBuilder. Phase 1 was the implementation of web services in PB9 and Phase 2 was the release of DataWindow.NET, which was packaged with PB 10. Phases 3 and 4 were the more significant phases. In Phase 3, Sybase added a number of .NET target types to PowerBuilder 11 and added support for calling non-visual .NET assemblies from PowerScript. The 4th phase will be completed in PowerBuilder 12 and involves “...support for Windows Presentation Foundation (WPF) ... as well as full support for visual controls and drag-and-drop programming with .NET within the IDE”.1 We’re at the mid-point between the release of PowerBuilder 11 (phase III) and the release of PowerBuilder 12 (phase IV, which should complete .NET support). I thought it might be beneficial to review the progress so far and reassess what the future looks like.
DataWindow.NET There are still some impediments to acceptance of DataWindow.NET into traditional .NET shops though. The first is the requirement to keep the DataWindow source in a PBL. A PBL makes sense to PowerBuilder developers because the compiled version of objects is kept there. It makes absolutely no sense in a VS.NET environment, particularly because a DataWindow isn’t compiled. It makes it confusing for new developers to get started and hinders proper source code management. Perhaps a bigger issue is the amount of work it takes to deploy an application that uses DataWindow.NET. The developer has to remember to include the PBD that contains the DataWindow, four or more unmanaged code runtime files, and (if PDF is used) download and install GhostScript. WinForm Targets In the future, this particular target may become more useful as Win32 is phased out in future versions of Windows. However, at the moment, the primary advantage of this particular target is that you can include conditional code blocks within PowerScript that reference non-visual .NET assemblies (either .NET system assemblies or third-party assemblies) and that code becomes active when compiled in a WinForm target. Unfortunately, the syntax that you need to use within the conditional code block is neither C# or PowerScript, but a morph of the two that is poorly documented and does not yet provide full support for all .NET language features. That, and the limitation of such usage to non-visual assemblies, has restricted the traction this particular feature has obtained. Because there are some Win32 features that are not supported in a WinForm target, a lot of testing that has to be done to ensure that a WinForm target works the same as the Win32 version and it has limited advantages. Perhaps a bigger question surrounds the future of WinForms, regardless of the tool used to create them. Microsoft added WPF (Windows Presentation Foundation) to .NET as of version 3.0. There is a great deal of emphasis on it as the future for doing graphical interfaces. This has resulted in a great deal of debate within the .NET community about whether WPF is currently robust enough to handle LOB (line of business) applications.2 Sybase has already demoed the WPF DataWindow, so they are working toward supporting WPF. SmartClient Targets WebForm Targets One of the significant improvements Sybase added in PowerBuilder 11.2 was AJAX support for WebForms, so that only portions of a page are refreshed on a postback, rather than the entire page. A typical PowerBuilder application (e.g., one based on PFC) will still likely generate a lot of unnecessary postbacks because it was not originally designed to avoid them. This might mean that significant refactoring of the code is required in order to support both Win32 or WinForm deployment and WebForm deployment. There are currently two major technical obstacles to widespread adoption of WebForm targets as a means of deploying PowerBuilder applications. The first is browser support. The current implementation is pretty much limited to Internet Explorer. In some companies where a particular browser is deemed a company standard and is the only one supported, this might not be such a barrier. In many cases, however, developers are not in a position to require end users to only use one particular browser. The other major issue is the unmanaged code that the current version of PowerBuilder still relies on, particularly for the DataWindow control. Many web server administrators will balk at the idea of deploying unmanaged code to a shared web server, because unmanaged code could cause errors that could take down all of the web sites running on the server. Even if they were comfortable with the use of unmanaged code, the current requirement to deploy it into a directory that is referenced in a system environmental variable is a bit much to ask. The typical deployment scenario should only involve copying the files into the root or bin directory for the application. Another issue I have with WebForms is that they do look very similar to the Win32 application. Some folks might like this (saves retraining), but I *expect* a web application to look different from a Win32 application. What I would like to see (though I have no idea how they might implement it) would be something along the lines of PocketBuilder’s MOP view manager, except on steroids. For those of you not familiar with PockerBuilder, one issue with deploying to mobile devices is the wide variety of screen sizes available. To deal with this, the PocketBuilder folks added a Multiple Orientation Painter (MOP) view feature. You take the same window, indicate what particular screen size (and orientation) you are supporting, and then arrange the controls on the window to suit that particular size and orientation. Then you switch to a different size and/or orientation and adjust the layout for that new selection. The key is that PocketBuilder remembers the different settings for the different sizes and orientations and adjusts automatically at runtime based on the device. My “super MOP” approach would allow for the same adjustments between different target types (Win32, WinForm, WebForm and, down the road, various end targets for WPF). You indicate which particular target type you want to customize the window for, and then adjust it for that target type. The kind of control that you would need to have would be much more extensive than what the PocketBuilder MOP view handles though. For example, it’s fine in a Win32 application to have an MDI frame and sheets, but in a WinForm (and down the road WebForm) I might want that rendered as tabbed MDI instead, and in WebForm I might want the “sheets” to result in movement between entirely separate web pages (which modern browsers would end up rendering as tabs within the browser). ASP.NET Web Services .NET Assemblies What the Future Holds However, I’m left wondering if we don’t need yet another incremental release (11 3⁄4?) between 11.5 and the final .NET release. I could use the web services enhancements that would come with WCF support (WS-Security and non-SOAP protocols) today. I’d also be interested in being able to deploy the existing target types in such a way that didn’t require unmanaged code, perhaps through embedding the WPF DataWindow rather than the standard DataWindow (assuming that buys me completely managed code). On the other hand, while I’d like to be able to generate full WPF targets and gain more .NET functionality (e.g., visual controls), I can live without those for a while longer. References
Reader Feedback: Page 1 of 1
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
|||||||||||||||||||||||||||