We are using Progress 10.2B. The company where I work manage the inventory of some of their customers. Two major customers ask if we can set some query over the web so they can integrate this remote inventory to their ERP.
We currently using IIS for other web site with ODBC OpenEdge drivers. So we could do some query like:
The architecture would look like:
IIS -> ODBC -> Progress Database
We are planning to implement other stuff like web order and heavier sales reports for the customers and the partners.
Q1) I am concerned about the ODBC performance. Does someone one experience some performance issue with ODBC? We made some test and we get 100,000 records in 1 second. That seem good. But the performance seem to degrade when we did some joins table even if we respect the table index.
Q2) Also, we hit sa show stopper like it is not possible to insert a value or update a field that his name contains a dash. In sum, the query with "Customer-No" will fail but "CustomerNo" will succeed. Is there are any other things like this?
Q3) Is there are any tool available in Progress that can accomplish a better performance or will be more "Progress Compatible" like: Webspeed/Appserver -> Progress Database?
I am not sure to fully understand the difference between WebSpeed and Appserver. I read that some technologies need to generate Proxy DLL so you can distribute them to other programmer so their can call the request. If it is possible, we would like to rely on a technology that the programmers from our customer and partner will have more independance. In our ideal, we will give the documentation to them like all the URL with the parameters and the detailed result. The result of the query could be XML, Json, whatever. So on their side, their will use theirs tools: Java, C#, any others and their will be able to comsume the web service and feed their ERP.
Is there are any progress tools that can do this? If yes, was there reliable? Did your project ended well?
Q4) Do you have any tips or personals experiences that will allow us to jump over some pitfall?
Thank you for your time. Really appreciated!
Have a great day!
What you described is exactly what REST adapter in OE 11.2 and later does. With it, you have ability to expose the business logic in an REST API way. As you are on 10.2B you could either connect OE 11.2/11.3 AppServer with the OE RDBMS/DataServer, or perform call to the OE 10.2B AppServer.
It would probably be best to consider upgrading to 11.3 as there are lot of new features available there, but only presence of the REST adapter makes it worthwhile.
The problem with dashes in fields can be avoided by quoting field names.
SELECT "my-dashed-field" FROM PUB."my-dashed-table" WHERE TRUE;
Thank you Sasha! We will check to upgrade from 10.3 to 11.
Thank you Andrew, we tried it before with the quote and it was not working. After checking again the Progress KB at
knowledgebase.progress.com/.../P138294, I noticed it was specified LinkedServer. I will try in a ADO.NET application soon to see if the bug can be replicated. Thanks.
We have extensive experience in the development of web apps and other related technologies. The ODBC route is perfectly fine if you understand it and deal with it appropriately. IIS cannot connect to a database, it is strictly a web server so there must be some other application to do the programming. Even when some deal with the 4GL, what the indexing is and how it works is often misunderstood. Too often outside technologies try to use the indexing based on their outside technology, or forget to update the statistics and it doesn't seem like its as good as it can be.
When it comes to distribution of DLL's etc, that's only for Java or .Net based applications using direct AppServer calls. There are several other alternatives. There is WebSpeed which is a native 4GL based system of writing programs called directly by the web server. That can generate HTML or it can be API calls over your own methods. That's a good choice if you want to continue all 4GL solutions and still give standardized outside access.
Web services adapter calls AppServer, not a web server. There is a small component that translates the web server call to the AppServer. This is good if you want universal outside access and aren't really worried about the HTML. Your app today should definitely be composed of many Procedures which means this is very easy to expose those to others in a standard way. Good if you're mostly interested in API based development.