1 / 39

PowerBuilder 11: Windows Forms and .NET Interoperability

PowerBuilder 11: Windows Forms and .NET Interoperability. Jim O’Neil Principal Systems Consultant Sybase, Inc. joneil@sybase.com. PowerBuilder 11 Overview (presented Nov. 20, 2007) Jim O’Neil Systems Consultant. .NET Windows Forms And Interoperability Dec. 4, 2007 Jim O’Neil

tavi
Télécharger la présentation

PowerBuilder 11: Windows Forms and .NET Interoperability

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PowerBuilder 11: Windows Forms and .NET Interoperability Jim O’Neil Principal Systems Consultant Sybase, Inc. joneil@sybase.com

  2. PowerBuilder 11 Overview (presented Nov. 20, 2007) Jim O’Neil Systems Consultant .NET Windows Forms And Interoperability Dec. 4, 2007 Jim O’Neil Systems Consultant .NET Assemblies (presented Nov. 13, 2007) Jim O’NeilSystems Consultant Web ServiceDataWindow Feb. 5, 2008 David Avera Staff Software Engineer PowerBuilder 11 .NET Deployment Web Casts .NET Web Forms Dec. 11, 2007 David Fish Engineering Evangelist .NET Web Services Jan. 29, 2008 David Fish Engineering Evangelist .NET Smart Client Jan. 15, 2008 John Strano Technology Evangelist

  3. Agenda • PowerBuilder roadmap • Windows Forms overview • Deploying Windows Forms applications • Distributing Windows Forms applications • .NET interoperability

  4. PowerBuilder Roadmap • Version 11 released in June 2007 • 11.1 Maintenance Release in November 2007 • Delivers on third-phase of PowerBuilder’s .NET initiative

  5. 2008 PowerBuilder 11.2 2008 PowerBuilder 11.5 2009 PowerBuilder 12 • AJAX support for Web Forms Applications • EAServer .NET Client Support • Miscellaneous fixes • Core .NET enhancements • Native DataWindow updates • Updated database support • Miscellaneous fixes • .NET in IDE • WPF/WCF support at design and run-time • Fully managed code at deployment • Complete .NET interoperability Language Independence Application Connectivity Multiple Platform Support Power And Performance

  6. Windows Forms Overview 10

  7. System.Windows.Forms System.ComponentModel KERNEL32.DLL USER32.DLL GDI32.DLLGDIPLUS.DLL System.Drawing System.Windows.Forms.VisualStyles KERNEL32.DLL USER32.DLL GDIPLUS.DLL Windows Forms Definition (Microsoft) • What is a Windows Forms application? “Windows Forms is for creating Microsoft Windows applications on the .NET Framework. This framework provides a modern, object-oriented, extensible set of classes that enable you to develop rich Windows-based applications. With Windows Forms, you are able to create a rich client application that can access a wide variety of data sources and provide data-display and data-editing facilities using Windows Forms controls.” Windows Forms Application Win32 Application MSCOREE.DLL (CLR)

  8. Windows Forms Definition (English) • What is a Windows Forms application? Windows Forms applications are an evolution of the Win32-based application development you know and love • and, why should you care • Win32 will go away, eventually • For PowerBuilder users, Windows Forms is a prerequisite for • Smart Client capabilities • .NET interoperability

  9. Deploying Windows Forms Applications 10

  10. Developing Windows Forms Applications • Obvious relationship to traditional PowerBuilder applications generally means a smooth transition • Same UI paradigms • Same event model • New Windows Forms wizard quickly creates requisite project and target • New application • Existing application leveragingsame code base

  11. Windows Forms Project Object 11.1

  12. .NET EXE or Assembly deploy CSC save/build PB2CS PowerBuilder System Library For .NET (managed code) Syntax errors Unsupported features PBDs(DataWindow objects,Pipelines, Queries) DataWindow Engine Database Interfaces (unmanaged code) PowerBuilder .NET Deployment PowerScript Source C# translation

  13. source code directory .exe directory (Output path) files supporting incremental rebuild Windows Forms Deployment • Executable files and resources written to “Output path” • Intermediate files written to .pbt_build directory

  14. Unsupported Features • “Native” PowerBuilder constructs unsupported in Windows Forms applications • PBNI extensions (excluding Web Services) • Shared objects • OLE automation server • Tracing and profiling • Dynamic Data Exchange (DDE) • Garbage collection functions • EAServer client support (coming in 11.2 with EAServer 6.1) • Use of .NET visual classes

  15. Partially Supported Features • “Native” PowerBuilder constructs partially supported in Windows Forms applications • Rich Text and OLE DataWindow styles • In-process OLE controls (ActiveX) • Limited event support • Requires wrapper class generated using .NET utility • Non TrueType fonts replaced with TrueType fonts • Font-substitution display impact • Unexpected cursor display (e.g., invisible in EditMask control) • ALL visual controls are supported to varying degrees with exception of • Other event • IMEMode property (Japanese version only!)

  16. w_1 w_2 w_3 w_1::EVENT foo() Language Construct Caveats • Partially supported syntax • GOTO statement – disallowed when target label is out of ‘scope’ • Invoking an indirect ancestor event – results in unexpected behavior IF y = 7THENGOTO a IF x = 10THEN y = 5 a: z = 2 ELSE y = 8 z = 3 ENDIF Win32 .NET

  17. Language Construct Caveats • Questionable practices allowed in “native” PowerBuilder applications but disallowed in .NET deployments • this keyword in global functions • RETURN statement in FINALLY clause • Overloading event signatures • Overriding function access scope • Object casting outside of object hierarchy

  18. Language Construct Caveats (concluded) • External function calls • Generic STRUCTURE argument type unsupported • Requirement to pass structure arguments by reference when argument is a const pointer • Requirement to re-initialize reference string arguments for each invocation

  19. Distributing Windows Forms Applications 10

  20. Distributing Windows Forms Applications • Required files • Runtime packager • Smart Client

  21. Required Files • .NET Framework 2.0 • Microsoft Runtime Files • PowerBuilder System Library for .NET • PowerBuilder Runtime Dynamic Link Libraries • Application files

  22. Required Files • .NET Framework 2.0 • Redistributable package (dotnetfx.exe) • SDK not required • .NET Framework 3.0 extended 2.0 with additional features so fulfills the requirement

  23. Required Files • Microsoft Runtime Files • msvcr71.dll • msvcp71.dll • atl71.dll

  24. All Windows Forms applications Sybase.PowerBuilder.Common.dll Sybase.PowerBuilder.Core.dll Sybase.PowerBuilder.Interop.dll Sybase.PowerBuilder.Win.dll Applications using graphs Sybase.PowerBuilder.Graph.Win.dll Sybase.PowerBuilder.Graph.Core.dll Sybase.PowerBuilder.Graph.Interop.dll Applications using DataWindows/DataStores Sybase.PowerBuilder.DataWindow.Win.dll Sybase.PowerBuilder.DataWindow.Interop.dll Required Files • PowerBuilder System Library for .NET • Sybase.PowerBuilder assemblies • Strongly-named so installable to Global Assembly Cache (GAC) …using EditMasks …using RichText …using Web Services

  25. Required Files • PowerBuilder Runtime Dynamic Link Libraries • Unmanaged code DLLs • PBDWM110.DLL: DataWindow engine • PBSHR110.DLL: Utility and memory management routines • PBXERCES110.DLL: XML DataWindow import/export • PBxxx110.DLL: Database drivers • … • Must reside on system path

  26. Required Files • Application files • Application executable assembly (.exe) • Configuration file (.config) • Manifest file (.manifest) • DataWindow libraries (.pbd) • Resource files (images, INI files, etc.) • Referenced external libraries (DLLs, OCXs, etc.)

  27. Runtime Packager

  28. Runtime Packager • Creates MSI file containing system files relating to selected functionality • Registers self-registering DLLs • Sets PATH variable • Adds destination path to registry • Adds PowerBuilder System assemblies to GAC What’s missing? 1. .NET Framework 2.0 2. Application specific files

  29. Smart Client “Publish” application to a central location Access application from that location Application installs and runs locally Details from John Strano on Jan. 15th!!

  30. .NET Interoperability 10

  31. .NET Interoperability • Support for invocation of .NET non-visual classes in PowerBuilder .NET applications • Windows Forms • Web Forms • .NET Assemblies • Web Services String netVersion System.Reflection.Assembly assembly assembly = System.Reflection.Assembly.GetCallingAssembly() netVersion = assembly.ImageRuntimeVersion

  32. Conditional Compilation Code Blocks • New construct used to delineate .NET invocations • #IF DEFINED PBDOTNET… • #IF DEFINED PBWEBFORM… • #IF DEFINED PBWINFORM… • #IF DEFINED PBWEBSERVICE… • Code blocks can contain… • “Classic” PowerScript • PowerScript extensions • Code block contents examined only at deployment time • No syntax checking when saving object • Non-applicable code blocks not compiled into target image

  33. PowerScript Enhancements Supporting Interoperability • Parameterized constructor syntax • Static method invocation • Bitwise operators (viz., AND, OR, NOT, XOR) • Non-integral array indexers (e.g., population[“Argentina”] = 40500000) • Capability to reference .NET constructs • Namespaces • Interfaces • Enumerations

  34. Current .NET Interoperability Restrictions • Only non-visual classes are supported • Generic and nullable types not supported • Method calls allowed only on classes • .NET types converted to equivalent PowerBuilder base types, for example, following code will not compile in PowerBuilder System.Int32 x x = 5 MessageBox(“Value”, x.ToString()) • Array basis is 1 in PowerBuilder, 0 in .NET • Limited IDE support

  35. Adding .NET References • Add references to .NET assemblies via Target Properties

  36. .NET Assemblies in System Tree Enumeration Class and methods

  37. .NET Interoperability Code Snippet #if defined PBDOTNET then String netVersion System.Reflection.Assembly assembly assembly = System.Reflection.Assembly.GetCallingAssembly() netVersion = assembly.ImageRuntimeVersion st_netVersion.text = ".NET Version: " + Right(netVersion, Len(netVersion) - 1) #if defined PBWEBFORM then String browserVersion System.Web.HttpRequest request request = System.Web.HttpContext.Current.Request browserVersion = request.Browser.Browser + " " + & String(request.Browser.MajorVersion) + "." + & String(request.Browser.MinorVersion) st_browserVersion.text = "Client Browser: " + browserVersion #end if #end if

  38. Upcoming PowerBuilder Events • ISUG “Leveraging PowerBuilder in the .NET World” • Day-long, hands-on training event • Multiple cities in North America through December • Visit http://www.isug.com/pb11tour for details • Sybase web casts • Web Forms (Dec 11th) • Smart Client (Jan 15th) • Web Services Deployment (Jan 29th) • Web Services DataWindow (Feb 5th) • Visit http://response.sybase.com/forms/pbregistration to sign-up!! Final Week of Tour! Dec. 11 – Orlando Dec. 12 – DC (Dulles) Dec. 13 – Atlanta

  39. Q&A

More Related