1. Daniel Vivier
  2. PowerBuilder
  3. Wednesday, 30 August 2017 12:55 AM UTC

Having encountered a significant amount of difficulty getting Appeon Web configured at all, and done the first deploy and analysis and seeing just how many parts of our existing PB code won't work - often with no suggestions for what to do about them in the Workarounds document - I'm starting to wonder whether another approach would be better.

The other approach would be to just put client DBs on a web server, and have a regular client/server version of our current apps access them directly, through SSL of course for security. (Our current apps are client/server with the DB on the user's PC, or on a computer on the user's LAN, and we will be continuing to offer that version whatever else we do.)

Here are some initial thoughts about pros and cons of each approach - I'd like others' feedback on their thoughts as well!

Pros of Appeon Web:

  • No installation (well, some!).
  • Probably faster data transfer.
  • Looks like it's a web app to the user (though I still think it's only a pseudo web app).

Cons of Appeon Web:

  • Huge effort to mod the app to get rid of all unsupported features, not clear how to do so for many of them (for instance, exception handling with Try/Catch/Finally).
  • Huge amount of documentation to read and understand (way over 1,000 pages).
  • Errors in the docs that lead to needing a lot of support. (For instance, the Appeon Web Server Configuration Guide suggested a bunch of steps for non-cluster setups that aren't necessary and killed everything - someone from Appeon just had me undo all of them to make things work!)
  • Unknown issues in features that are legal but behave differently in the Appeon Web version (like differences in handling of NULLs in arithmetic etc.), extremely hard to detect where that might be an issue, in a large code base.
  • Cost! Have to increase our prices to pay for the Appeon stuff.
  • Cost issues are risky because we don't know what the conversion rate would be from our current installed base (about 9,000 users) to the web version, and how many new users would purchase because of the new offering, won't know how many simultaneous users we will need until we have some experience with it, don't know for sure how soon we would need to move up to a cluster, and then the costs go up a lot. (Our programs are very inexpensive.)
  • Large amount of testing of all varieties of web browser, both 32 and 64 bit.
  • Have to have 64-bit versions of all of the current 32-bit DLLs and COM controls that our app uses, and do coding to abstract away whether we are using the 32-bit or 64-bit versions, depending on the bit-ness of the client browser.
  • Code bloat with all of the work-arounds to have some code run for Appeon Web and different code for our existing client-server version. (Would definitely be keeping only one code base for both!)
  • Not at all clear we can get our apps sufficiently modified and tested within the 30-day evaluation period to know whether it is a viable enough option that we want to purchase it, and the cost is significant for our small business.
  • Not too impressed with the support offering - bug submission, or Community forum that doesn't email you with answers. (I know that is scheduled to be fixed in Q4 sometime, but that will still be after our eval period ends.)

Pros of Client/Server with DB on our web Server:

  • Very little code modification needed. (Do need to migrate to a different DB server - we currently use Firebird and it doesn't even support SSL - but already did that conversion, to MySQL, in preparation for testing Appeon Web.)
  • App will run exactly like it now does, no worries about different functionality except perhaps disconnection issues over the Internet, and removal of features that don't make sense with that setup (like database backups).
  • Can get something working fast.
  • Current app features of converting data from the DBs of various competitors into our DB can be done with our existing code. (Appeon Web can't read client-side DBs natively, though I did come up with a solution using ADO.)

Cons of Client/Server with DB on our web Server:

  • Probably slower for data transfer than Appeon Web. (May not be a big deal, our users tend to have fairly small DBs.)
  • Still has to be installed just like our current apps.
  • Can't advertise it as a web app, maybe as a "Cloud Data" version or something.

Things that are about the same for either:

  • Only works on Windows (no Mac, which we get a fair amount of requests for). (Yes, Appeon can also work on mobile but that introduces even more limitations, and our apps are primarily data entry so not really appealing to use even on decent-sized tables with keyboards.)
  • Need more web server power than we have now (though probably more for Appeon Web than the client/server solution).
  • Need to handle backups ourselves (currently the users are responsible for their own backups).
  • Need to code for increased security, figure out some sort of licensing DB online etc.
  • Users would be able to use the app from anywhere (after some level of install), accessing the same data. (Currently we have several ways for users to access the same DBs from multiple PCs not on the same LAN, but all of those ways have their disadvantages!)

That's all I can think of on a first attempt, but I'm sure there are more issues too. I'd be particularly interested in hearing of major cons that we haven't thought of, for the client/server with DBs on a web server approach.  Thanks.


Responses (4)
  1. Likes
  2. Latest
  3. Oldest
Loading...

Find Questions by Tag

.EXE .NET 6.0 .NET Assembly .NET Core 3.1 .NET Core Framework .NET DataStore .NET Std Framework 32-bit 64-bit ADO.NET AEM AI Algorithm Amazon AWS Android Apache API APK App Store App Store (Apple) Appeon Workspace Appeon Xcelerator Plug-in Architecture Array ASE Asynchronous Methods Authentication AutoBuild AutoCompiler Automated Testing Automation AutoScript Azure Barcode Base64 Batch BigData BLOB Branch & Merge Browser Bug Build Button C# C# Class Importer C# Editor C# Model generator Calendar Camera Certificate Chrome Citrix Class Client Client/Server Cloud Cluster Collection COM Command Line Compiler Compression Computed Field Configuration Controls Cookies Cordova Crash Cross-Platform Crosstab CSharpAssembly CSharpObject CSS CSV Cursor Data Database Database Driver Database Painter Database Profile Database Provider DataObject DataSource DataStore DataStore (C#) DataStore (PS) DataType DataWindow DATE DATETIME DB2 Debug Debugger Debugging Deployment Design DLL DO-WHILE Dockable Docker Documentation DOUBLE Download DragDrop Edge Edit Style Editor Elevate Conference Email Embedded SQL Emulator Encoding Encryption Enhancement Request Entity Entity Framework ERP Error Event Event Handler Event Handling Excel Exception Export Expression External Functions F# Field File File Access Filter Firefox Firewall Font FOR-NEXT Foreground Format Function Garbage Collection GeoLocation Git Graph HANA Hash Header HTML/5 HTTP/S HTTPClient Icon IDE Identity IIS IMAPI Import InfoMaker Inheritance Installation Integer IntelliSense Interface Internet Internet Explorer iOS IPA iPad iPhone IWA J# Java JavaScript JBoss JDBC JOIN JSON JSONGenerator JSONParser Kestrel Label Lambda Large File LDAP Library License LINQ Linux OS Load Balancing Localization Localized PBVM Log In Log Out Logging LONG LONGLONG macOS MAPI Maps MDI Memory Memory Leak Menu Merge MessageBox Messagging Method Migration MIME TYPE Mobile Model ModelStore ModelStore (C#) MSOLEDBSQL Multi Threading MVC MySQL n-Tier Namespace NativePDF NVO OAuth ODATA ODBC Office Offline OLE OLEDB Online Open Source OpenAPI OpenSSL Oracle OrcaScript Other Outlook Output Package Parameter Patch PayPal PB Classic PB Native PB.NET PBC PBD PBDOM PBG PBJVM PBL PBNI PBORCA PBVM PBX PDF Performance Permission PFC Picture Pipeline Play Store (Google) Plugin Popup Port POST PostgreSQL PowerBuilder PowerBuilder (Appeon) PowerBuilder (SAP) PowerBuilder Compiler PowerBuilder Runtime PowerClient PowerScript (PS) PowerScript IDE PowerScript Migrator PowerServer PowerServer Mobile PowerServer Toolkit PowerServer Web PowerServerLabel Print Properties Proxy Publish PULL PUSH Query Regression Release Renew Resize Response REST Retrieve RibbonBar RibbonBar Builder Rich Text Roadmap RPC Runtime Packager SaaS Scaffolding Script SDI SDK Security Server Service Session Single Sign-on Size SMTP SMTPClient SnapDevelop SOAP Sort Source Code Speech Recognition SQL SQL Anywhere SQL Server SqlBuilder SqlExecutor SQLite SqlModelMapper Storage Stored Procedure Subscription SVN Swagger Syntax TabbedBar TabbedView Tablet TabPage Target TE Control Testing Text TFS Theme TIME Timer TLS/SSL Tomcat TortoiseGit TortoiseSVN Transaction Transparency Trial Trigger TRY-CATCH TX Control Type UI ULONG UltraLite Uninstall Unit Test Unit Testing UNIX OS Update Upgrade Upload URL User Center User Object UWP Validation VARCHAR Variable Versioning Visual Studio Visual Studio Code VM Voice Warning WCF Web API Web Extensions Web Service WebBrowser WebForms WebLogic WebSphere WildFly WinAPI Window Windows OS WinForms Wizard Workgroup Workspace WPF XCODE XHTML XML Zoom

Helpful?

If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.