<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: OpenEdge Dynamic OpenClient</title>
	<atom:link href="http://www.thesoftwaregorilla.com/2009/07/openedge-dynamic-openclient/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thesoftwaregorilla.com/2009/07/openedge-dynamic-openclient/</link>
	<description>The Software Gorilla</description>
	<lastBuildDate>Tue, 06 Dec 2011 03:33:14 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Bruce Gruenbaum</title>
		<link>http://www.thesoftwaregorilla.com/2009/07/openedge-dynamic-openclient/comment-page-1/#comment-10</link>
		<dc:creator>Bruce Gruenbaum</dc:creator>
		<pubDate>Thu, 17 Sep 2009 05:06:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesoftwaregorilla.com/?p=75#comment-10</guid>
		<description>The dynamic API is documented in the &quot;.NET OpenClient Manual&quot;. I&#039;m not sure what version point release it was actually included, but I know for sure that 10.1B has it.

Section 8 of the manual - &quot;Using the Open Client .NET OpenAPI to Directly Access the AppServer&quot; - is all about dynamic OpenClient.

I have an example written in Java that I am almost ready to release. I am just finishing off some of the documentation on the sample. 

I plan to make the same sample available in .NET within the next month or so.

As far as getting the signature from the rcode file is concerned, there is no way to do it without parsing the rcode file manually. The PGRCodeParser class does not work for any purpose other than generating the proxies. Don&#039;t waste your time chasing that down.

The RCode file structure is actually not that complicated to parse. I have a parser that I wrote myself that I am working to finalize that I plan to make commercially available through my company, Intangere, LLC, in the near future.</description>
		<content:encoded><![CDATA[<p>The dynamic API is documented in the &#8220;.NET OpenClient Manual&#8221;. I&#8217;m not sure what version point release it was actually included, but I know for sure that 10.1B has it.</p>
<p>Section 8 of the manual &#8211; &#8220;Using the Open Client .NET OpenAPI to Directly Access the AppServer&#8221; &#8211; is all about dynamic OpenClient.</p>
<p>I have an example written in Java that I am almost ready to release. I am just finishing off some of the documentation on the sample. </p>
<p>I plan to make the same sample available in .NET within the next month or so.</p>
<p>As far as getting the signature from the rcode file is concerned, there is no way to do it without parsing the rcode file manually. The PGRCodeParser class does not work for any purpose other than generating the proxies. Don&#8217;t waste your time chasing that down.</p>
<p>The RCode file structure is actually not that complicated to parse. I have a parser that I wrote myself that I am working to finalize that I plan to make commercially available through my company, Intangere, LLC, in the near future.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexander</title>
		<link>http://www.thesoftwaregorilla.com/2009/07/openedge-dynamic-openclient/comment-page-1/#comment-9</link>
		<dc:creator>Alexander</dc:creator>
		<pubDate>Wed, 16 Sep 2009 21:09:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesoftwaregorilla.com/?p=75#comment-9</guid>
		<description>You wrote: &quot;In one of the more recent versions of OpenClient, the API that the OpenClient uses is documented so that it is now possible to dynamically construct the proxy calls at run-time.&quot;

The only documentation I can recall seeing is on the use of the proxy generator.  I can and have opened up the generated .dll (.NET proxy) in reflector and looked at the calling code and have on occasion wrote my own as a stop-gap measure, but I don&#039;t remember seeing anything from Progress guaranteeing that this will be supported in the future; nothing to stop them from completely changing the internals in a future release and leaving your code out in the cold.  I&#039;d be delighted if you can show me I&#039;m wrong?

Also how can I dynamically discover the parameters, their types, and their i/o mode of a procedure?  If I have a persistent procedure I can call the GET-SIGNATURE method on it, but obviously it needs to be running first and that doesn&#039;t help you with its main parameters.  Again I can fire up reflector and look in proxygen.exe and notice that there&#039;s a class &quot;PGRCodeParser&quot; which with casual inspection would seem to do what I need, but again, what&#039;s to stop Progress from completely changing it in the future (especially since this is presumably a closed, internal tool)?</description>
		<content:encoded><![CDATA[<p>You wrote: &#8220;In one of the more recent versions of OpenClient, the API that the OpenClient uses is documented so that it is now possible to dynamically construct the proxy calls at run-time.&#8221;</p>
<p>The only documentation I can recall seeing is on the use of the proxy generator.  I can and have opened up the generated .dll (.NET proxy) in reflector and looked at the calling code and have on occasion wrote my own as a stop-gap measure, but I don&#8217;t remember seeing anything from Progress guaranteeing that this will be supported in the future; nothing to stop them from completely changing the internals in a future release and leaving your code out in the cold.  I&#8217;d be delighted if you can show me I&#8217;m wrong?</p>
<p>Also how can I dynamically discover the parameters, their types, and their i/o mode of a procedure?  If I have a persistent procedure I can call the GET-SIGNATURE method on it, but obviously it needs to be running first and that doesn&#8217;t help you with its main parameters.  Again I can fire up reflector and look in proxygen.exe and notice that there&#8217;s a class &#8220;PGRCodeParser&#8221; which with casual inspection would seem to do what I need, but again, what&#8217;s to stop Progress from completely changing it in the future (especially since this is presumably a closed, internal tool)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce Gruenbaum</title>
		<link>http://www.thesoftwaregorilla.com/2009/07/openedge-dynamic-openclient/comment-page-1/#comment-5</link>
		<dc:creator>Bruce Gruenbaum</dc:creator>
		<pubDate>Thu, 30 Jul 2009 02:22:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesoftwaregorilla.com/?p=75#comment-5</guid>
		<description>I&#039;m not sure I agree with you that the issues you see will be seen at compile time. 

First off, the proxies are Java or .NET proxies so there is no testing done until runtime. 

Second, in my experience, the generated proxies are normally just given to the Java/.NET developers to include in their code. There is no real testing of the proxies themselves as the Progress engineers don&#039;t know how to write Java/.NET code and the Java/.NET engineers don&#039;t care much about the Progress back-end code. 

So really, I would venture a guess that in most cases, the problems associated with changes to the back-end procedures will only show up at run-time anyway.

You are right about the heavy lifting in the code, but I would contend that that is code that is written once and built with a strong suite of unit tests. Once it works properly, it is reliably re-usable.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure I agree with you that the issues you see will be seen at compile time. </p>
<p>First off, the proxies are Java or .NET proxies so there is no testing done until runtime. </p>
<p>Second, in my experience, the generated proxies are normally just given to the Java/.NET developers to include in their code. There is no real testing of the proxies themselves as the Progress engineers don&#8217;t know how to write Java/.NET code and the Java/.NET engineers don&#8217;t care much about the Progress back-end code. </p>
<p>So really, I would venture a guess that in most cases, the problems associated with changes to the back-end procedures will only show up at run-time anyway.</p>
<p>You are right about the heavy lifting in the code, but I would contend that that is code that is written once and built with a strong suite of unit tests. Once it works properly, it is reliably re-usable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phillip Molly Malone</title>
		<link>http://www.thesoftwaregorilla.com/2009/07/openedge-dynamic-openclient/comment-page-1/#comment-4</link>
		<dc:creator>Phillip Molly Malone</dc:creator>
		<pubDate>Thu, 30 Jul 2009 02:08:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesoftwaregorilla.com/?p=75#comment-4</guid>
		<description>It is an interesting trade off. Generating Proxies does have the issues you speak of, but any issues with the coding will be seen as compile time.

Using the dynamic interface is a good option if your worried about lots of changes to the data structure or the parameters to pass in and out, but there is a lot more heavy lifting in the coding and (from memory) any coding issues will be seen at run time. The advantage of dynamic calling is of course that you can call any procedure not just the ones that proxies have been generated for.

Good article, look forward to reading more!</description>
		<content:encoded><![CDATA[<p>It is an interesting trade off. Generating Proxies does have the issues you speak of, but any issues with the coding will be seen as compile time.</p>
<p>Using the dynamic interface is a good option if your worried about lots of changes to the data structure or the parameters to pass in and out, but there is a lot more heavy lifting in the coding and (from memory) any coding issues will be seen at run time. The advantage of dynamic calling is of course that you can call any procedure not just the ones that proxies have been generated for.</p>
<p>Good article, look forward to reading more!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

