How to Integrate .NET Web Service Client with ABL

Posted by Admin on 01-Feb-2010 14:13

Hello Folks,

I am working on a project involving Web Services. I have worked on a few Web Services projects in .NET but I am a beginner in Progress Web Services. In my scenario the Web Service is written in C# (.NET). Some of the operations involve very complex data types. For example: Object A composes Object B, Object B composes Object C which is an array. After spending some time with OpenEdge® Development: Web Services tutorial I have learned:

  • We have to Serialize/Deserialize SOAP Response/Request to get/send the data
  • Since we don't have a reference to the Web Service (as in .NET) we cannot make calls to functions and instantiate objects.

So after reading the tutorial I believe I have two solutions towards the implementation of this project:

  1. Implement functionality to Deserialize/Serialize SOAP response/request
  2. Write a Web Service client in .NET and provide some sort of integration mechanism between ABL and .NET to read data.

Here's the concrete scenario for solution #2:

  1. User requests for the list of images uploaded between Jan/01/2009 and Jan/01/2010. (ABL)
  2. The request is then sent to a .NET method which is responsible for executing the Web Service operation. (C# .NET)
  3. The Web Service sends back the list of image names that have been uploaded during the specified duration. (C# .NET)
  4. Now the data collected in step 3 (.NET) is passed on to ABL procedure which is responsible for spitting it out on a browser (ABL).

In the above example C# (.NET) is actually making calls to Web Service operations. The data collected after executing the operation in .NET is passed to ABL which then spits it out on a browser.

From my point-of-view solution #2 is a better approach since I could instantiate objects and call functions directly and use real data types. I don’t have to worry about Serialize/Deserialize SOAP messages.

My question here is: What is the best approach towards using Web Services in Progress?

Some of the technologies I am using: ABL, WebSpeed for Presentation, IIS.

Your help is much appreciated.

Thanks,

Jatinder Singh

All Replies

Posted by Thomas Mercer-Hursh on 01-Feb-2010 14:29

You don't mention your version, which might be important.

My first thought is to wonder why you are planning on all this server-side .NET stuff when you could do the whole thing in ABL.

If the actual web service is being presented by .NET, then your issue with Progress is not actually a web service.  The sensible solutions would seem to be to either have the .NET components access AppServer using OpenClient or to create a bus-oriented solution with Sonic or FUSE.

Posted by Admin on 01-Feb-2010 14:44

Hi,

Thank you for your reply. I am using Progress version 10.2A at the moment. But we also have access to 10.2B. Since I am fairly new to Progress could you please elaborate on your solution?

Thanks,

Jatinder

Posted by Thomas Mercer-Hursh on 01-Feb-2010 15:04

We really ought to get an expert in here ... which isn't me on this topic, but it is quite easy to expose that recent a version of ABL as a web service directly.

Posted by Admin on 02-Feb-2010 07:47

You can find there a "quick deploy" - Step-by-step procedure to expose a 4GL WebService

and a lot of examples (client side: .Net, Java, perl, PHP, ruby .. etc) and some server-side

examples. Take a tour. With Progress 10.2 A you have to install Tomcat 5.5.x and JDK 1.5.0. It is mandatory

to respect these versions.  You find there a lot of 4GL client examples tst_4gl. In Progress 4GL you just

have to use the tool: bprowsdldoc [URL To .Net WSDL] and consumming a .Net WebService is a joke.

You can have problemes if the .Net WebService do not respect the standard WSDL 1.1 SOAP 1.1 and HTTP 1.0

and the character set UTF-8. Anyway, if the Progress tool "bprowsdldoc" can not document your WebService ...

don't loose your time ... doesent works (you have to develop the web-service access over 4GL sockets, but this is very tricky).

Dont forget , the 4GL Client for consumming web-Services  do not implement any standard type: WS-security,

WS-authorisation, WS-Interoperability, etc. Forget all WS-* standards. Good-luck

Posted by Admin on 02-Feb-2010 09:33

Thank you very much for uploading those documents. They'll come handy.

Posted by Admin on 02-Feb-2010 13:36

I was to fast to translate from french to english

and I have a mistake ...

Here is an update of index in my quick-doc.

Open the file $DLC/properties/ubroker.properties, and search the [WSA] section.

Modify all variables contains "Auth" (authorisation) and give all the value =0.

All variables contains "Enabled" have to be a modified to =1.

This thread is closed