<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
<channel>
    <title>Sune Trudslev's WebLog - DotNet</title>
    <link>http://www.tanis.dk/blog/</link>
    <description>Advanced concepts -- Easy explainations</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.4 - http://www.s9y.org/</generator>
    <pubDate>Fri, 05 Nov 2004 14:51:05 GMT</pubDate>

    <image>
        <url>http://www.tanis.dk/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Sune Trudslev's WebLog - DotNet - Advanced concepts -- Easy explainations</title>
        <link>http://www.tanis.dk/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Web Service Interoperability Testing</title>
    <link>http://www.tanis.dk/blog/archives/7-Web-Service-Interoperability-Testing.html</link>
            <category>DotNet</category>
    
    <comments>http://www.tanis.dk/blog/archives/7-Web-Service-Interoperability-Testing.html#comments</comments>
    <wfw:comment>http://www.tanis.dk/blog/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.tanis.dk/blog/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>nospam@example.com (Sune Trudslev)</author>
    <content:encoded>
    &lt;h3&gt;The Background&lt;/h3&gt;&lt;p&gt;When creating web service today, Web Service Interoperability is getting to be a bigger and bigger issue. There are a number of choices for the server platform, but the it is definately best if the client platform is not restricted in any way. We want everybody to be able to use our web service.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=39&amp;amp;entry_id=7&quot; title=&quot;http://www.ws-i.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.ws-i.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;WS-I&lt;/a&gt; is an organization working towards Web Service Interoperability &amp;quot;across platforms, operating systems, and programming languages&amp;quot;. They have created some profiles that define a number of rules, that should ensure that your web service is interoperable. Ensuring that your web service complies to all these rules would, of course, be a monumental task, so there are ways to automate the actual testing, and that is what I am going to talk about today.&lt;/p&gt;&lt;h3&gt;Getting Started&lt;/h3&gt;&lt;p&gt;First you need to download the WS-I&#039;s Testing Tools which can be found on this &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=40&amp;amp;entry_id=7&quot; title=&quot;http://www.ws-i.org/implementation.aspx&quot;  onmouseover=&quot;window.status=&#039;http://www.ws-i.org/implementation.aspx&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;page&lt;/a&gt;. Since I am talking about Web Service Interoperability in the context of .NET you should get the C# version of the testing tools.&lt;/p&gt;&lt;p&gt;Extract the zip file in the directory where you have your web WSDL file or files of your web service. It should be extracted to a subdirectory called &lt;font face=&quot;courier new,courier,monospace&quot;&gt;wsi-test-tools&lt;/font&gt;.&lt;/p&gt;&lt;h3&gt;Configuration&lt;/h3&gt;&lt;p&gt;Now we need to create a configuration file for the testing tools, here is an example:&lt;/p&gt;&lt;p&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt; &amp;lt;configuration xmlns=&amp;quot;http://www.ws-i.org/testing/2003/03/analyzerConfig/&amp;quot;&lt;br /&gt;  xmlns:wsi-common=&amp;quot;http://www.ws-i.org/testing/2003/03/common/&amp;quot;&lt;br /&gt;  xmlns:uddi=&amp;quot;urn://uddi-org/api_v2/&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;description&amp;gt;This file contains the WS-I testing &lt;br /&gt;   configuration for WebService.&amp;lt;/description&amp;gt;&lt;br /&gt;  &amp;lt;verbose&amp;gt;true&amp;lt;/verbose&amp;gt;&lt;br /&gt;  &amp;lt;assertionResults type=&amp;quot;all&amp;quot; messageEntry=&amp;quot;true&amp;quot; assertionDescription=&amp;quot;true&amp;quot;&lt;br /&gt;   failureMessage=&amp;quot;true&amp;quot; failureDetail=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;reportFile replace=&amp;quot;true&amp;quot; location=&amp;quot;..\..\..\REPORT_WebService.xml&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;addStyleSheet href=&amp;quot;wsi-test-tools\common\xsl\report.xsl&amp;quot; type=&amp;quot;text/xsl&amp;quot; alternate=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/reportFile&amp;gt;&lt;br /&gt; &amp;lt;testAssertionsFile&amp;gt;..\..\common\Profiles\BasicProfileTestAssertions.xml&amp;lt;/testAssertionsFile&amp;gt;&lt;br /&gt; &amp;lt;wsdlReference&amp;gt;&lt;br /&gt;  &amp;lt;wsdlElement type=&amp;quot;binding&amp;quot; namespace=&amp;quot;http://tanis.dk/2004/10/29/services.wsdl&amp;quot;&amp;gt;&amp;lt;/wsdlElement&amp;gt;&lt;br /&gt;  &amp;lt;wsdlURI&amp;gt;..\..\..\..\WebService.wsdl&amp;lt;/wsdlURI&amp;gt;&lt;br /&gt;  &amp;lt;serviceLocation&amp;gt;http://tanis.dk/blog&amp;lt;/serviceLocation&amp;gt;&lt;br /&gt; &amp;lt;/wsdlReference&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;/code&gt; &lt;/p&gt;&lt;p&gt;We also need a batch file to run the tests. It could look like this:&lt;/p&gt;&lt;p&gt;&lt;code&gt;@echo off&lt;br /&gt;cd wsi-test-tools\cs\bin&lt;br /&gt;Analyzer.exe -config ..\..\..\WebServiceConfig.xml&lt;br /&gt;cd ..\..\..&lt;/code&gt;&lt;/p&gt;&lt;h3&gt;Running the tests&lt;/h3&gt;&lt;p&gt;And now we are ready to run our tests:&lt;/p&gt;&lt;p&gt;&lt;img style=&quot;BORDER-RIGHT: 0px; PADDING-RIGHT: 5px; BORDER-TOP: 0px; PADDING-LEFT: 5px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px&quot; height=&quot;338&quot; src=&quot;http://www.tanis.dk/blog/uploads/DotNet/wsi_test_run.png&quot; width=&quot;669&quot; alt=&quot;&quot;  /&gt; &lt;/p&gt;&lt;h3&gt;The output&lt;/h3&gt;&lt;p&gt;After we have run the tests we have a nice viewable report that holds all the different test details, and what went wrong, if some of them failed.&lt;/p&gt;&lt;p&gt;If everything goes well, this is what you should be seeing:&lt;/p&gt;&lt;p&gt;&lt;img style=&quot;BORDER-RIGHT: 0px; PADDING-RIGHT: 5px; BORDER-TOP: 0px; PADDING-LEFT: 5px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px&quot; height=&quot;421&quot; src=&quot;http://www.tanis.dk/blog/uploads/DotNet/wsi-test-1.png&quot; width=&quot;640&quot; alt=&quot;&quot;  /&gt; &lt;/p&gt;&lt;p&gt;If there are any problems with the wsdl, it will show you so:&lt;/p&gt;&lt;p&gt;&lt;img style=&quot;BORDER-RIGHT: 0px; PADDING-RIGHT: 5px; BORDER-TOP: 0px; PADDING-LEFT: 5px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px&quot; height=&quot;421&quot; src=&quot;http://www.tanis.dk/blog/uploads/DotNet/wsi-test-2.png&quot; width=&quot;640&quot; alt=&quot;&quot;  /&gt;&lt;/p&gt;&lt;p&gt;The report contains a summary over all the different tests as defined, and it shows which ones passed or failed:&lt;/p&gt;&lt;p&gt;&lt;img style=&quot;BORDER-RIGHT: 0px; PADDING-RIGHT: 5px; BORDER-TOP: 0px; PADDING-LEFT: 5px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px&quot; height=&quot;421&quot; src=&quot;http://www.tanis.dk/blog/uploads/DotNet/wsi-test-3.png&quot; width=&quot;640&quot; alt=&quot;&quot;  /&gt; &lt;/p&gt;&lt;p&gt;Further down in the report you can read a detailed description of each test. If they failed you will get an explanation why it failed:&lt;/p&gt;&lt;p&gt;&lt;img style=&quot;BORDER-RIGHT: 0px; PADDING-RIGHT: 5px; BORDER-TOP: 0px; PADDING-LEFT: 5px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px&quot; height=&quot;421&quot; src=&quot;http://www.tanis.dk/blog/uploads/DotNet/wsi-test-4.png&quot; width=&quot;640&quot; alt=&quot;&quot;  /&gt; &lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;Ensuring Web Service Interoperability is not an easy task. There are lots of things to be aware of, but if you align yourself with a few good tools, it might just become easier.&lt;/p&gt;&lt;p&gt;Just my two cents.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 01 Nov 2004 23:20:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.tanis.dk/blog/archives/7-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.5/</creativeCommons:license>
</item>
<item>
    <title>&quot;Contract-First&quot; Web Service Development</title>
    <link>http://www.tanis.dk/blog/archives/5-Contract-First-Web-Service-Development.html</link>
            <category>DotNet</category>
    
    <comments>http://www.tanis.dk/blog/archives/5-Contract-First-Web-Service-Development.html#comments</comments>
    <wfw:comment>http://www.tanis.dk/blog/wfwcomment.php?cid=5</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.tanis.dk/blog/rss.php?version=2.0&amp;type=comments&amp;cid=5</wfw:commentRss>
    

    <author>nospam@example.com (Sune Trudslev)</author>
    <content:encoded>
    &lt;p&gt;I am working on a government project where alot of the data also needs to be available through a web service. An important issue in this web service project is that the contracts (wsdls) needs to be available and approved before the actual code is written. Here comes the necessity for &amp;quot;Contract-First&amp;quot; web service development. &lt;/p&gt;&lt;p&gt;First you need a WSDL (Web Service Definition Language) file that describes the web service. Personally I prefer the freedom of creating those types of files by hand, but there is also free software like &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=32&amp;amp;entry_id=5&quot; title=&quot;http://www.capescience.com/soa/index.shtml&quot;  onmouseover=&quot;window.status=&#039;http://www.capescience.com/soa/index.shtml&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;CapeClear&#039;s SOA Editor&lt;/a&gt; available.&lt;/p&gt;&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;WIDTH: 312px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;img height=&quot;288&quot; src=&quot;http://www.tanis.dk/blog/uploads/DotNet/WSCF_03_1.gif&quot; width=&quot;312&quot; alt=&quot;&quot;  /&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Just right-click the project name to create the stub code for your web service.&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If you craft them by hand you need to know something about the actual format (which I would recommend anyway). A good tutorial about the wsdl format is this &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=33&amp;amp;entry_id=5&quot; title=&quot;http://www.w3schools.com/wsdl/default.asp&quot;  onmouseover=&quot;window.status=&#039;http://www.w3schools.com/wsdl/default.asp&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;article&lt;/a&gt; and a good one about XML schemas is this &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=34&amp;amp;entry_id=5&quot; title=&quot;http://www.w3schools.com/schema/default.asp&quot;  onmouseover=&quot;window.status=&#039;http://www.w3schools.com/schema/default.asp&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;article&lt;/a&gt;. Both on &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=35&amp;amp;entry_id=5&quot; title=&quot;http://www.w3schools.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.w3schools.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;w3schools.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;While it is possible to make some stub code for your server side web serivce code using the wsdl.exe utility that comes with the .NET FrameWork, &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=36&amp;amp;entry_id=5&quot; title=&quot;http://weblogs.asp.net/cweyer/&quot;  onmouseover=&quot;window.status=&#039;http://weblogs.asp.net/cweyer/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;Chistian Weyer&lt;/a&gt; has created a very cool little add-in for Visual Studio .NET called &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=37&amp;amp;entry_id=5&quot; title=&quot;http://weblogs.asp.net/cweyer/archive/2004/08/30/222725.aspx&quot;  onmouseover=&quot;window.status=&#039;http://weblogs.asp.net/cweyer/archive/2004/08/30/222725.aspx&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;WsContractFirst&lt;/a&gt;. Creating the stub code for your web service server or client is as simple as just right clicking the project name.&lt;/p&gt;&lt;p&gt;It seems that Contract First and web service interoperability are the buzz words of web services at the moment. The tools to create them are still in their infancy, but it will definately be interesting to see where this is going.&lt;/p&gt;&lt;p&gt;I will write more on web service interoperability later. It is pretty easy to use the &lt;a href=&quot;http://www.tanis.dk/blog/exit.php?url_id=38&amp;amp;entry_id=5&quot; title=&quot;http://www.ws-i.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.ws-i.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;www.ws-i.org&lt;/a&gt; testing tools to test your wsdl. I will show how.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 22 Oct 2004 21:28:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.tanis.dk/blog/archives/5-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.5/</creativeCommons:license>
</item>

</channel>
</rss>