<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: HydraSDO for XML with FpML Example</title>
	<link>http://www.roguewave.com/blog/hydrasdo-for-xml-with-fpml-example/</link>
	<description>Rogue Wave's C++ blog community shares thoughts on enterprise C++ development, Rogue Wave's products, and application development challenges.</description>
	<pubDate>Sat, 22 Nov 2008 12:23:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
		<item>
		<title>By: David Haney</title>
		<link>http://www.roguewave.com/blog/hydrasdo-for-xml-with-fpml-example/#comment-286</link>
		<dc:creator>David Haney</dc:creator>
		<pubDate>Wed, 09 Jul 2008 15:37:25 +0000</pubDate>
		<guid>http://www.roguewave.com/blog/hydrasdo-for-xml-with-fpml-example/#comment-286</guid>
		<description>SDO does provide support for native C/C++ types, it just wasn't demonstrated in the example above.  For the scenario Boris described (increasing the coupon rate by 0.01), you can write code like the following:

bond-&#62;setDouble("couponRate", body-&#62;getDouble("couponRate") + 0.01);</description>
		<content:encoded><![CDATA[<p>SDO does provide support for native C/C++ types, it just wasn&#8217;t demonstrated in the example above.  For the scenario Boris described (increasing the coupon rate by 0.01), you can write code like the following:</p>
<p>bond-&gt;setDouble(&#8221;couponRate&#8221;, body-&gt;getDouble(&#8221;couponRate&#8221;) + 0.01);</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dean Stewart</title>
		<link>http://www.roguewave.com/blog/hydrasdo-for-xml-with-fpml-example/#comment-282</link>
		<dc:creator>Dean Stewart</dc:creator>
		<pubDate>Tue, 08 Jul 2008 21:15:30 +0000</pubDate>
		<guid>http://www.roguewave.com/blog/hydrasdo-for-xml-with-fpml-example/#comment-282</guid>
		<description>Hi Boris,

I completely agree with your comments about the benefits of data binding in terms of compile time error checking, and this is what our HydraExpress product provides, an easy to use XML to C++ data binding tool with a high performance C++ parser http://www.roguewave.com/products/hydra/hydraexpress.php

To answer your question about the advantages of SDO, it provides a single API to access any data source, so allowing access not just to XML files but also relational database data, flat text files, comma separated files, etc. It is also extremely easy to learn and use, as it is based on XPath notation.

Applications built with SDO can be easily integrated into a SOA architecture, due to the support for disconnected transactions - changes can be stored and applied to the data source at the appropriate time. Also HydraSDO binary objects can be streamed from one machine to another, without the added performance overhead of serializing XML.

In terms of performance, we found in testing that HydraSDO for XML (C++) uses a considerably smaller memory footprint than other C++ XML parsers (50% of that required by Xerces C++ even with SAX) and has comparable performance for the number of transactions per second (reading an element from an XML file).

I'm not suggesting that SDO is appropriate in all instances, but where there are multiple data formats, or the application is part of a larger SOA architecture, or where memory resources are limited, it can form part of a solution.


----

Any comments or suggestions much appreciated. 

Regards

Dean</description>
		<content:encoded><![CDATA[<p>Hi Boris,</p>
<p>I completely agree with your comments about the benefits of data binding in terms of compile time error checking, and this is what our HydraExpress product provides, an easy to use XML to C++ data binding tool with a high performance C++ parser <a href="http://www.roguewave.com/products/hydra/hydraexpress.php" rel="nofollow">http://www.roguewave.com/products/hydra/hydraexpress.php</a></p>
<p>To answer your question about the advantages of SDO, it provides a single API to access any data source, so allowing access not just to XML files but also relational database data, flat text files, comma separated files, etc. It is also extremely easy to learn and use, as it is based on XPath notation.</p>
<p>Applications built with SDO can be easily integrated into a SOA architecture, due to the support for disconnected transactions - changes can be stored and applied to the data source at the appropriate time. Also HydraSDO binary objects can be streamed from one machine to another, without the added performance overhead of serializing XML.</p>
<p>In terms of performance, we found in testing that HydraSDO for XML (C++) uses a considerably smaller memory footprint than other C++ XML parsers (50% of that required by Xerces C++ even with SAX) and has comparable performance for the number of transactions per second (reading an element from an XML file).</p>
<p>I&#8217;m not suggesting that SDO is appropriate in all instances, but where there are multiple data formats, or the application is part of a larger SOA architecture, or where memory resources are limited, it can form part of a solution.</p>
<p>&#8212;-</p>
<p>Any comments or suggestions much appreciated. </p>
<p>Regards</p>
<p>Dean</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Boris Kolpackov</title>
		<link>http://www.roguewave.com/blog/hydrasdo-for-xml-with-fpml-example/#comment-269</link>
		<dc:creator>Boris Kolpackov</dc:creator>
		<pubDate>Fri, 04 Jul 2008 19:55:27 +0000</pubDate>
		<guid>http://www.roguewave.com/blog/hydrasdo-for-xml-with-fpml-example/#comment-269</guid>
		<description>I wonder what are the advantages of this new SDO approach compared to XML data binding? With data binding you get statically typed object model that does not require manual text to C++ types conversion or string-based flow control. For example, in the above code it is quite easy to make a mistake and misspell an element name:

cout &#60;&#60; “Maturity = ” &#60;getCString(”mturity”);

This kind of error will only be detected at runtime. With data binding if you misspell a function you will get a compiler error:

cout &#60;&#60; “Maturity = ” &#60;mturity(); // error: mturity: no such function

Also with data binding you get values automatically converted to C++ types (e.g., int, double, etc.) that can be manipulated directly. For example, if we need to increase couponRate by 0.01 we can simply do:

bond-&#62;couponRate (bond-&#62;couponRate () + 0.01);

With the SDO approach you have to manually convert the string representation of the couponRate element to double, add the increment, and then convert it back to string.

It looks to me that SDO is nothing more than a DOM with XPath support.</description>
		<content:encoded><![CDATA[<p>I wonder what are the advantages of this new SDO approach compared to XML data binding? With data binding you get statically typed object model that does not require manual text to C++ types conversion or string-based flow control. For example, in the above code it is quite easy to make a mistake and misspell an element name:</p>
<p>cout &lt;&lt; “Maturity = ” &lt;getCString(”mturity”);</p>
<p>This kind of error will only be detected at runtime. With data binding if you misspell a function you will get a compiler error:</p>
<p>cout &lt;&lt; “Maturity = ” &lt;mturity(); // error: mturity: no such function</p>
<p>Also with data binding you get values automatically converted to C++ types (e.g., int, double, etc.) that can be manipulated directly. For example, if we need to increase couponRate by 0.01 we can simply do:</p>
<p>bond-&gt;couponRate (bond-&gt;couponRate () + 0.01);</p>
<p>With the SDO approach you have to manually convert the string representation of the couponRate element to double, add the increment, and then convert it back to string.</p>
<p>It looks to me that SDO is nothing more than a DOM with XPath support.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
