Embed
Email

PB11 Windows Forms

Document Sample
PB11 Windows Forms
Shared by: HC111110183919
Categories
Tags
Stats
views:
5
posted:
11/10/2011
language:
English
pages:
39
PowerBuilder 11: Windows Forms and .NET

Interoperability

Jim O‟Neil

Principal Systems Consultant

Sybase, Inc.

joneil@sybase.com

PowerBuilder 11

.NET Assemblies Overview .NET Windows Forms

(presented Nov. 20, 2007) And Interoperability

(presented Nov. 13, 2007)



Jim O‟Neil Dec. 4, 2007

Jim O‟Neil

Systems Consultant

Systems Consultant

Jim O‟Neil

Systems Consultant



Web Service

DataWindow PowerBuilder 11

.NET Web Forms

.NET Deployment

Feb. 5, 2008 Web Casts Dec. 11, 2007

David Avera David Fish

Staff Software Engineer Engineering Evangelist

.NET Web Services .NET Smart Client



Jan. 29, 2008 Jan. 15, 2008



David Fish John Strano

Engineering Evangelist Technology Evangelist

Agenda



• PowerBuilder roadmap

• Windows Forms overview

• Deploying Windows Forms applications

• Distributing Windows Forms applications

• .NET interoperability

PowerBuilder Roadmap



• Version 11 released in June 2007

• 11.1 Maintenance Release in November 2007

• Delivers on third-phase of PowerBuilder‟s .NET initiative

2008 2008 2009

PowerBuilder 11.2 PowerBuilder 11.5 PowerBuilder 12



• AJAX support for Web • Core .NET • .NET in IDE

Forms Applications enhancements • WPF/WCF support at

• EAServer .NET Client • Native DataWindow design and run-time

Support updates • Fully managed code

• Miscellaneous fixes • Updated database at deployment

support • Complete .NET

• Miscellaneous fixes interoperability









Multiple Power

Language Application

Platform And

Independence Connectivity

Support Performance

Windows Forms Overview









10

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 System.Windows.Forms System.ComponentModel

GDI32.DLL System.Windows.

KERNEL32.DLL USER32.DLL

GDIPLUS.DLL

System.Drawing

Forms.VisualStyles



MSCOREE.DLL (CLR)

KERNEL32.DLL USER32.DLL GDIPLUS.DLL

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

Deploying Windows Forms Applications









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 leveraging

same code base

Windows Forms Project Object









11.1

PowerBuilder .NET Deployment





deploy CSC

PowerScript C# .NET EXE or

Source translation Assembly





save/build PB2CS



Unsupported PowerBuilder System Library

Syntax errors For .NET

features

(managed code)



DataWindow Engine

PBDs Database Interfaces

(DataWindow objects, (unmanaged code)

Pipelines, Queries)

Windows Forms Deployment



• Executable files and resources written to “Output path”

• Intermediate files written to .pbt_build directory



source code directory





.exe directory (Output path)





files supporting incremental rebuild

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

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!)

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



w_1

IF y = 7 THEN GOTO a

IF x = 10 THEN

y = 5 w_2

a: z = 2

ELSE w_3

y = 8 Win32 .NET

z = 3

END IF w_1::EVENT foo()

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

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

Distributing Windows Forms Applications









10

Distributing Windows Forms Applications



• Required files

• Runtime packager

• Smart Client

Required Files



• .NET Framework 2.0

• Microsoft Runtime Files

• PowerBuilder System Library for .NET

• PowerBuilder Runtime Dynamic Link Libraries

• Application files

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

Required Files



• Microsoft Runtime Files

– msvcr71.dll

– msvcp71.dll

– atl71.dll

Required Files



• PowerBuilder System Library for .NET

– Sybase.PowerBuilder assemblies

– Strongly-named so installable to Global Assembly Cache (GAC)



All Windows Forms applications

Sybase.PowerBuilder.Common.dll Applications using graphs

Sybase.PowerBuilder.Core.dll Sybase.PowerBuilder.Graph.Win.dll

Sybase.PowerBuilder.Interop.dll Sybase.PowerBuilder.Graph.Core.dll

Sybase.PowerBuilder.Win.dll Sybase.PowerBuilder.Graph.Interop.dll





Applications using DataWindows/DataStores …using EditMasks

Sybase.PowerBuilder.DataWindow.Win.dll

Sybase.PowerBuilder.DataWindow.Interop.dll

…using RichText



…using Web Services

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

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.)

Runtime Packager

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

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!!

.NET Interoperability









10

.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

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

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

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

Adding .NET References



• Add references to .NET

assemblies via Target

Properties

.NET Assemblies in System Tree









Enumeration







Class and methods

.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

Upcoming PowerBuilder Events



• ISUG “Leveraging PowerBuilder in the .NET World”

– Day-long, hands-on training event Final Week of Tour!

– Multiple cities in North America through December Dec. 11 – Orlando

– Visit http://www.isug.com/pb11tour for details Dec. 12 – DC (Dulles)

Dec. 13 – Atlanta

• 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!!

Q&A


Related docs
Other docs by HC111110183919
resume_espaillat
Views: 0  |  Downloads: 0
Asim_Pandey_TTC
Views: 0  |  Downloads: 0
Resume_Andrzej_Markowski
Views: 0  |  Downloads: 0
CH3 4 20PPs
Views: 0  |  Downloads: 0
Fruit 20v 20Schreiner 20Leadership
Views: 0  |  Downloads: 0
Worksheet_Blanks
Views: 0  |  Downloads: 0
102708_Non_Covered_Procedure_Code_Listing xls
Views: 0  |  Downloads: 0
ASP NET
Views: 1  |  Downloads: 0
lesson35practicesheet
Views: 0  |  Downloads: 0
film_library
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!