Design-Level Considerations

Although stricter compiler enforcement for the .NET environment can catch coding errors typically tolerated by the PowerScript compiler, the .NET environment might also require changes in application design that are not necessarily caught by the compiler.

Use PowerBuilder system functions

For a .NET Web Forms application, use PowerBuilder system functions instead of external functions whenever possible. Some system functions, such as the functions for file operations, are implemented differently for Windows Forms and Web Forms. If you always use PowerBuilder system functions, you do not need to worry about these differences.
  • Use GetCurrentDirectory — some applications use external DLL functions to get the current directory. For PowerBuilder Web Forms applications, you must use the GetCurrentDirectory standard system function instead.

    PowerBuilder Web Forms use a virtual file system to emulate a file system on the server for each client. The virtual file system is actually a folder on the server computer to which the ASPNET user (IIS 5), the IIS_WPG user group (IIS 6), or the IIS_IUSRS user group (IIS 7 and 7.5) has write permission. Calling an external function to get the current directory from the virtual file system fails.

Use the DESTROY statement

The .NET garbage collection service does not trigger the Destructor event for PowerBuilder objects. If you need to trigger the Destructor event for a nonvisual object, you must explicitly call the PowerScript DESTROY statement for that object.

Use regional formats based on client or server settings

The PBCultureSource global property determines whether a .NET Web Forms application uses client or server regional settings. Client regional settings are specified by the first language listed in the Language Preference dialog box of the Internet Explorer browser. However, if you set PBCultureSource to “client” and no language is listed in the Language Preference dialog box, server-side regional settings are used instead.

Server regional settings are those set for the ASP.NET user or user group on the server computer. You can use the IIS Manager to change the default regional settings in the Globalization section of the Web.config files for your Web Forms applications, or you can modify the Web.config files manually after you deploy your applications.

The regional settings specify formats for the following items:
  • numeric separators (decimals or commas)

  • number of digits per group to the left of a separator

  • currency symbol location when a specific EditMask is not used

  • date and time values

The regional settings apply to DataWindow columns of relevant datatypes and to the following PowerScript controls and functions:
  • DatePicker control using the DtfLongDate!, DtfShortDate! or DtfTime! format

  • EditMask control when the mask contains a [DATE], [TIME], or [CURRENCY [{digit number}] format

  • MonthCalendar control

  • System String (v) function when the data argument datatype is Date, Time, or DateTime (the formats for these datatypes are [SHORTDATE], [TIME], or [SHORTDATE][TIME], respectively)

  • System String (v, f) function when the format argument is [SHORTDATE], [LONGDATE], [DATE], [TIME], or [DATETIME]

The regional settings selection can also apply to objects you include in .NET conditional compilation blocks. It does not apply to button labels in message boxes or other system dialog boxes.

You can set the PBCultureSource global property on the Configurations tab in the Web Forms Project painter before you deploy a project. By default, applications use the regional settings specified by the Web Forms server.

Use multiple text patterns for string matching

If you want to test whether a string’s value contains any of a multiple set of matching text patterns, you can use the pipe character ( | ) in your .NET applications or components. The pipe character is a metacharacter in the .NET environment that functions as an OR operator, although it is not a metacharacter in the standard PowerBuilder client-server environment.

Therefore, when you call the Match function in the .NET environment, you can use pipe characters to determine if either of two (or one of many) text patterns match a string you are evaluating. In standard client-server applications, you can use the Match function to evaluate only one text pattern at a time.

Work around unsupported features

Avoid hindrances to application performance

Some functions and features that are fully supported can hinder application performance. Use these functions and features sparingly and avoid them where possible.
  • Response windows and message boxes — although response windows and message boxes are supported in Web Forms, use them only when absolutely necessary. Response windows and message boxes require more server-side resources than other kinds of windows.

    Hiding a response window in a Web Forms application does not work properly and can cause the application to fail. Instead of hiding a response window, always close it when the user has finished with it.

  • Yield — although the Yield function works in a Web Forms application, avoid it whenever possible, because it requires additional server-side resources.
  • Timers — timers are supported in Web Forms applications, but they periodically generate postbacks and can impede data entry. Use them sparingly and avoid including them on forms that require data entry. When you use them, delay the postbacks by appropriate scripting of client-side events.
  • PFC — the DataWindow service in PFC handles many DataWindow events. Each event causes a postback for each mouse-click, which adversely affects application performance. Delay postbacks by scripting client-side events or cache DataWindow data in the client browser by setting the paging method property for the DataWindow object to XMLClient!.