1 2 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 4<html xmlns="http://www.w3.org/1999/xhtml"> 5 6<!-- Mirrored from trsdomain.dk/ by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 14 Jan 2017 13:19:11 GMT --> 7<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack --> 8<head> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 10 <meta name="google-site-verification" content="yzpNHB21pAsgXhpRR4Ju9Fsof3j-0JzeZpEfb6muGog" /> 11 <title>TRsDomain.dk</title> 12 13 <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0;"> 14 15 <link rel="stylesheet" type="text/css" href="css/trsdomain_cerulean.css" media="screen,print" /> 16 <link rel="stylesheet" type="text/css" href="css/trsdomain_extras.css" media="screen,print" /> 17 <link rel="stylesheet" type="text/css" href="css/trsdomain_responsive.css" media="screen,print" /> 18 <link rel="stylesheet" type="text/css" href="css/trsdomain_print.css" media="print" /> 19 20
20<script type="text/javascript" src="Scripts/jquery.js"></script>
20 21
21<script type="text/javascript" src="Scripts/umlaut.js"></script>
21 22 23 24 <!-- http://code.google.com/p/syntaxhighlighter/wiki/Usage --> 25 <link rel="stylesheet" type="text/css" href="css/SyntaxHighlighter.css" media="all" /> 26
26<script type="text/javascript" src="Scripts/SyntaxHighlighter/shCore.js"></script>
26 27
27<script type="text/javascript" src="Scripts/SyntaxHighlighter/shBrushCSharp.js"></script>
27 28
28<script type="text/javascript" src="Scripts/SyntaxHighlighter/shBrushCss.js"></script>
28 29
29<script type="text/javascript" src="Scripts/SyntaxHighlighter/shBrushJScript.js"></script>
29 30
30<script type="text/javascript" src="Scripts/SyntaxHighlighter/shBrushSql.js"></script>
30 31
31<script type="text/javascript" src="Scripts/SyntaxHighlighter/shBrushXml.js"></script>
31 32
32<script language="javascript"> 33 $(document).ready( 34 function() 35 { 36 dp.SyntaxHighlighter.ClipboardSwf = 'media/6086/clipboard.swf'; 37 dp.SyntaxHighlighter.HighlightAll('code'); 38 } 39 ); 40 </script>
40 41 42
42<script type="text/javascript"> 43 $(document).ready( function() { 44 var _config = { 45 username: 'torbenrohde', // last.fm username 46 placeholder: 'lastfmrecords', // id of the div in HTML to use for cd covers 47 //defaultthumb: './lastfm_logo.jpg', // image when no cd cover or artist image is found 48 period: 'topalbums3month', // which period/type of data do you want to show? you can choose from 49 // recenttracks, 7day, 3month, 6month, 12month, overall, 50 // topalbums and lovedtracks 51 count: 20, // number of images to show 52 refresh: 5, // when to get new data from last.fm (in minutes) 53 offset: -1 // difference between your timezone and GMT. 54 }; 55 lastFmRecords.init(_config); 56 }); 57 </script>
57 58 59 <!-- XSLT Search CSS --> 60 <link href="CSS/XSLTsearch.css" rel="stylesheet" type="text/css" /> 61 62 <!-- Open ID delegation --> 63 <link rel="openid.server" href="https://www.myopenid.com/server"> 64 <link rel="openid.delegate" href="http://trsdomain.myopenid.com/"> 65 66 67 68 69 <link href="blog/rss.aspx" rel="alternate" type="application/rss+xml" title="RSS Feed" /> 70 71 72</head> 73<body id="top"> 74 75<form name="aspnetForm" method="post" action="http://trsdomain.dk/default.aspx?" id="aspnetForm"> 76<div> 77<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUENTM4MWRkSVQwUWulEwn4w4kbFUlT+YW+BqE=" /> 78</div> 79 80 81 82<div id="layout_wrapper_outer"> 83<div id="layout_wrapper"> 84 <div id="layout_top"> 85 86 <div class="right"> 87 88<div class="right searchBox" id="search"> 89 <fieldset> 90 91 <div> 92 93 94 <div class="alignleft"> 95 <input name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$SearchBox_2$searchText" type="text" value="search" maxlength="100" id="ctl00_ctl00_ctl00_ContentPlaceHolderDefault_SearchBox_2_searchText" onfocus="if (this.value == 'search') { this.value = ''; }" class="input-text" /> 96 </div> 97 98 <input type="submit" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$SearchBox_2$btnSearch" value="Search" id="ctl00_ctl00_ctl00_ContentPlaceHolderDefault_SearchBox_2_btnSearch" class="input-submit" /> 99 100 101</div> 102 103 </fieldset> 104</div></div> 105 106 <div id="site_title"> 107 <h1><a href="index.html">TRsDomain<span>.dk</span></a></h1> 108 <h2>Homepage of programmer Torben Warberg Rohde</h2> 109 </div> 110 </div> 111 112 <div id="layout_body_outer"> 113 <div id="layout_body"> 114 115 <div id="navigation"> 116 117 <div id="nav1"> 118 119 <ul> 120 <li class="current_page_item"><a href="blog.html">Blog</a></li><li><a href="til-salg.html">Til salg</a></li><li><a href="cykling.html">Cykling</a></li><li><a href="loeb.html">Løb</a></li><li><a href="programmoer.html">Programmør</a></li><li><a href="billeder.html">Billeder</a></li><li><a href="links.html">Links</a></li><li><a href="kontakt.html">Kontakt</a></li> 121 </ul> 122 123 <div class="clearer"> </div> 124 125 </div> 126 127 <div id="nav2"> 128 129 <ul> 130 <li><a href="#"> 131  132 </a></li> 133 </ul> 134 135 <div class="clearer"> </div> 136 137 </div> 138 139 </div> 140 141 <div id="main"> 142 143 <div class="left" id="content_outer"> 144 <div id="content"> 145 146 147 <div> 148 <div class="post"> 149 <div class="post_title" id="post-1555"> 150 <h1><a href="blog/2011/5/13/simpletextnet-released.html">SimpleText.NET released</a></h1> 151 </div> 152 <div class="post_date">Friday, May 13, 2011</div> 153 <div class="post_body"><p>I recently relased the <a target="_blank" title="Read more about SimpleText.NET" href="http://simpletext.codeplex.com/">language versioning SimpleText.NET</a> system/utility on CodePlex.<br />Here the short snip from the project site description:</p> 154<p class="simpleblockquote">SimpleText aims at enabling .NET developers to language version sites or apps in a simple manner.<br />A focal point is servicing external translators with MS Excel export/import. <br />Texts can be harvested from your source code based on a simple custom format.</p> 155<p><a target="_blank" title="More on CodePlex" href="http://simpletext.codeplex.com/">Read on at the CodePlex site and take it for a spin</a>. Don't hesitate to drop me a line on mail or the CodePlex discussions if you have comments or suggestions for improvents.</p> 156<p><img src="media/6216/simpletext_webadmin_449x298.jpg" width="449" height="298" alt="SimpleText_admin" class="imageNormal"/></p></div> 157 <div class="post_meta"> 158 Tagged: 159 160 <a href="blog498c.html?filterby=Programming">Programming</a></div> 161</div> 162<div class="post"> 163 <div class="post_title" id="post-1543"> 164 <h1><a href="blog/2011/1/20/english-grammar---factoid.html">English grammar - Factoid</a></h1> 165 </div> 166 <div class="post_date">Thursday, January 20, 2011</div> 167 <div class="post_body"><p>Classic English grammar question: "Do I use an or a here".<br />What I learned many years ago was that if the word started with a consonant use "a", otherwise "an". Then I <a target="_blank" title="Post on the use of "an or a"" href="http://english.stackexchange.com/questions/8181/does-one-use-a-or-an-before-the-word-x-ray">read this post and found out I have been wrong</a>.</p> 168<p>Spoiler: It depends on the pronunciation not the spelling.</p></div> 169 <div class="post_meta"> 170 Tagged: 171 172 <a href="blog5cd9.html?filterby=Diverse">Diverse</a></div> 173</div> 174<div class="post"> 175 <div class="post_title" id="post-1534"> 176 <h1><a href="blog/2011/1/9/shortening-file-paths---c-sharp-function.html">Shortening file paths - c-sharp function</a></h1> 177 </div> 178 <div class="post_date">Sunday, January 09, 2011</div> 179 <div class="post_body"><p>When listing some file paths for display in a grid, I found that I needed to shorten them, since they can quickly become to large to fit in the relatively small space I had allocated for them. Instead of simply cropping of the beginning or end I wanted to remove some of the middel directories, just like all the standard Windows apps does in e.g. the "Recent files" overview.</p> 180<p class="simpleblockquote">Let's try to turn this:<br /><i>c:\websites\acmeinc\myproject\www_myproj\App_Data\somefile.txt</i><br />into this:<br /><i>c:\websites\acmeinc\...\App_Data\somefile.txt<br /></i><i><br /></i></p> 181<p>So I went googling, but found no exact matches. This <a target="_blank" href="http://www.codinghorror.com/blog/2006/08/shortening-long-file-paths.html">post on codinghorror.com</a> points to a trimming function which operates directly on the Win-forms canvas (so you never get hold of the shortened string object) and to a function in the Windows API (which means you have to include a reference to a DLL that is not native .NET).</p> 182<p>This is my take on a function for this purpose. It is not as thouroughly tested or performant as an official MS-API-method would be, but I think it should suffice for most purposes:</p> 183<pre name="code" class="c-sharp">/// <summary> 184/// Shortens a file path to the specified length 185/// </summary> 186/// <param name="path">The file path to shorten</param> 187/// <param name="maxLength">The max length of the output path (including the ellipsis if inserted)</param> 188/// <returns>The path with some of the middle directory paths replaced with an ellipsis (or the entire path if it is already shorter than maxLength)</returns> 189/// <remarks> 190/// Shortens the path by removing some of the "middle directories" in the path and inserting an ellipsis. If the filename and root path (drive letter or UNC server name) in itself exceeds the maxLength, the filename will be cut to fit.
191/// UNC-paths and relative paths are also supported. 192/// The inserted ellipsis is not a true ellipsis char, but a string of three dots. 193/// </remarks> 194/// <example> 195/// ShortenPath(@"c:\websites\myproject\www_myproj\App_Data\themegafile.txt", 50) 196/// Result: "c:\websites\myproject\...\App_Data\themegafile.txt" 197/// 198/// ShortenPath(@"c:\websites\myproject\www_myproj\App_Data\theextremelylongfilename_morelength.txt", 30) 199/// Result: "c:\...gfilename_morelength.txt" 200/// 201/// ShortenPath(@"\\myserver\theshare\myproject\www_myproj\App_Data\theextremelylongfilename_morelength.txt", 30) 202/// Result: "\\myserver\...e_morelength.txt" 203/// 204/// ShortenPath(@"\\myserver\theshare\myproject\www_myproj\App_Data\themegafile.txt", 50) 205/// Result: "\\myserver\theshare\...\App_Data\themegafile.txt" 206/// 207/// ShortenPath(@"\\192.168.1.178\theshare\myproject\www_myproj\App_Data\themegafile.txt", 50) 208/// Result: "\\192.168.1.178\theshare\...\themegafile.txt" 209/// 210/// ShortenPath(@"\theshare\myproject\www_myproj\App_Data\", 30) 211/// Result: "\theshare\...\App_Data\" 212/// 213/// ShortenPath(@"\theshare\myproject\www_myproj\App_Data\themegafile.txt", 35) 214/// Result: "\theshare\...\themegafile.txt" 215/// </example> 216public static string ShortenPath(string path, int maxLength) 217{ 218 string ellipsisChars = "..."; 219 char dirSeperatorChar = Path.DirectorySeparatorChar; 220 string directorySeperator = dirSeperatorChar.ToString(); 221 222 //simple guards 223 if (path.Length <= maxLength) 224 { 225 return path; 226 } 227 int ellipsisLength = ellipsisChars.Length; 228 if (maxLength <= ellipsisLength) 229 { 230 return ellipsisChars; 231 } 232 233 234 //alternate between taking a section from the start (firstPart) or the path and the end (lastPart) 235 bool isFirstPartsTurn = true; //drive letter has first priority, so start with that and see what else there is room for 236 237 //vars for accumulating the first and last parts of the final shortened path 238 string firstPart = ""; 239 string lastPart = ""; 240 //keeping track of how many first/last parts have already been added to the shortened path 241 int firstPartsUsed = 0; 242 int lastPartsUsed = 0; 243 244 string[] pathParts = path.Split(dirSeperatorChar); 245 for (int i = 0; i < pathParts.Length; i++) 246 { 247 if (isFirstPartsTurn) 248 { 249 string partToAdd = pathParts[firstPartsUsed] + directorySeperator; 250 if ((firstPart.Length + lastPart.Length + partToAdd.Length + ellipsisLength) > maxLength) 251 { 252 break; 253 } 254 firstPart = firstPart + partToAdd; 255 if (partToAdd == directorySeperator) 256 { 257 //this is most likely the first part of and UNC or relative path 258 //do not switch to lastpart, as these are not "true" directory seperators 259 //otherwise "\\myserver\theshare\outproject\www_project\file.txt" becomes "\\...\www_project\file.txt" instead of the intended "\\myserver\...\file.txt") 260 } 261 else 262 { 263 isFirstPartsTurn = false; 264 } 265 firstPartsUsed++; 266 } 267 else 268 { 269 int index = pathParts.Length - lastPartsUsed - 1; //-1 because of length vs. zero-based indexing 270 string partToAdd = directorySeperator + pathParts[index]; 271 if ((firstPart.Length + lastPart.Length + partToAdd.Length + ellipsisLength) > maxLength) 272 { 273 break; 274 } 275 lastPart = partToAdd + lastPart; 276 if (partToAdd == directorySeperator) 277 { 278 //this is most likely the last part of a relative path (e.g. "\websites\myproject\www_myproj\App_Data\") 279 //do not proceed to processing firstPart yet 280 } 281 else 282 { 283 isFirstPartsTurn = true; 284 } 285 lastPartsUsed++; 286 } 287 } 288 289 if (lastPart == "") 290 { 291 //the filename (and root path) in itself was longer than maxLength, shorten it 292 lastPart = pathParts[pathParts.Length - 1];//"pathParts[pathParts.Length -1]" is the equivalent of "Path.GetFileName(pathToShorten)" 293 lastPart = lastPart.Substring(lastPart.Length + ellipsisLength + firstPart.Length - maxLength, maxLength - ellipsisLength - firstPart.Length); 294 } 295 296 return firstPart + ellipsisChars + lastPart; 297} 298</pre> 299<p>Â </p></div> 300 <div class="post_meta"> 301 Tagged: 302 303 <a href="blog498c.html?filterby=Programming">Programming</a></div> 304</div> 305<div class="post"> 306 <div class="post_title" id="post-1529"> 307 <h1>
307<a href="blog/2011/1/2/glat---hvem-gaar-foerst-over.html">Glat - hvem går først over?</a></h1> 308 </div> 309 <div class="post_date">Sunday, January 02, 2011</div> 310 <div class="post_body"><p><img src="media/6067/glat_small_499x665.jpg" width="499" height="665" alt="Glat - 2010 01" class="imageNormal"/></p></div> 311 <div class="post_meta"> 312 Tagged: 313 314 <a href="blog5cd9.html?filterby=Diverse">Diverse</a></div> 315</div> 316<div class="post"> 317 <div class="post_title" id="post-1522"> 318 <h1><a href="blog/2010/12/7/reading-csv-files-on-64-bit-windows-server.html">Reading CSV files on 64 bit Windows Server</a></h1> 319 </div> 320 <div class="post_date">Tuesday, December 07, 2010</div> 321 <div class="post_body"> 322<p>In the olden days I used the Jet-provider with a <a 323href="http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx" 324 target="_blank" title="Description of schema.ini">schema.ini</a> 325to read CSV-files.</p> 326 327<p>Yesterday - after having just finished a small console app on 328our 32 bit developer box - I deployed it to our 64 bit production 329server..... crash.... "provider not found".</p> 330 331<p>After a fair amount of digging I downloaded one the many 332homemade CSV readers... Turns out it was written by an American, so 333there was no way to specify the charset of the file ;-)</p> 334 335<p>Then I found the <a 336href="http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en" 337 target="_blank">"Microsoft Access Database Engine 2010 338Redistributable"</a> package (read this small note on how to 339specify the connection string).<br /> 340It's a bit bloated just for reading a CSV file, but it installed in 341a few minutes, did not require restarting the server, and it works 342perfectly.</p> 343 344<p> </p> 345</div> 346 <div class="post_meta"> 347 Tagged: 348 349 </div> 350</div> 351<div class="post"> 352 <div class="post_title" id="post-1519"> 353 <h1><a href="blog/2010/11/24/async-made-simple(r).html">Async made simple(r)</a></h1> 354 </div> 355 <div class="post_date">Wednesday, November 24, 2010</div> 356 <div class="post_body"><p>If you have ever coded asynchronous stuff in .NET, this upcoming .NET feature should get you fairly psyched.... why handle all the plumbing yourself, when you can just use this new feature, as described in <a href="http://channel9.msdn.com/Blogs/Charles/Anders-Hejlsberg-Introducing-Async" title="Video on new async feature by Anders Hejlsberg">the Channel9 video by Anders Hejlsberg</a></p> 357<p>There's probably some sort of downside to this, but I couldn't spot it from what I heard in the presentation :-)</p></div> 358 <div class="post_meta"> 359 Tagged: 360 361 <a href="blog498c.html?filterby=Programming">Programming</a></div> 362</div> 363<div class="post"> 364 <div class="post_title" id="post-1491"> 365 <h1>
365<a href="blog/2010/10/22/captcha-with-a-twist---are-you-a-human-being.html">Captcha with a twist - Are you a human being?</a></h1> 366 </div> 367 <div class="post_date">Friday, October 22, 2010</div> 368 <div class="post_body"> 369<p>Most sites have a captcha check on forms where users can 370contribute input such as comments or forum posts. However <a 371href="http://www.stackoverflow.com/" target="_blank" 372title="Stackoverflow">Stackoverflow</a> have added some twists to 373this otherwise standard mechanism - one sophisticated and one... 374not so sophisticated (but very humorous).</p> 375 376<p><strong>The sophisticated:</strong> By default there is no 377captcha - but if they cannot determine whether you are man or 378machine when you post your question/answer, they redirect you to 379the captcha page.</p> 380 381<p><strong>The humorous:</strong> Instead of just confronting the 382user with a standard captcha form, they have added a picture which 383must have been a lot of fun shooting, along with the following 384refreshingly down-to-earth text:</p> 385 386<blockquote> 387<p><strong>Are you a human being?</strong><br /> 388 We apologize for the confusion, but we can't <em>quite</em> tell 389if you're a person or a script.</p> 390 391<p>Please don't take this personally.<br /> 392 Bots and scripts can be remarkably lifelike these days!</p> 393 394<p>Enter the CAPTCHA displayed below, and we'll be out of your 395way.</p> 396</blockquote> 397 398<p><a href="media/5610/stackoverflow_captcha.png" target="_blank" 399title="View full resolution version"><img src="media/5615/stackoverflow_captcha_thumb_498x365.jpg" width="498" height="365" alt="StackOverflow_Captcha_Thumb" class="imageNormal"/></a></p> 400 401<p>... great stuff.</p> 402</div> 403 <div class="post_meta"> 404 Tagged: 405 406 <a href="blog498c.html?filterby=Programming">Programming</a>,<a href="blog9e30.html?filterby=Webdesign">Webdesign</a></div> 407</div> 408<div class="post"> 409 <div class="post_title" id="post-1486"> 410 <h1><a href="blog/2010/9/6/examining-and-testing-web-services.html">Examining and testing web services</a></h1> 411 </div> 412 <div class="post_date">Monday, September 06, 2010</div> 413 <div class="post_body"> 414<p>When working with web services you sometimes just want to make a 415quick <em>"lets hit it, and see what it does"</em> test.</p> 416 417<p>For that purpose <a href="http://www.wcfstorm.com/" 418title="WCF Storm WS testing tool">WCF Storm</a> is the must-have 419tool, which a fellow developer recently pointed out to me. It 420quickly generates a proxy and lets you specify parameters of 421complex types, add custom headers and much more (none of 422which the older <a href="http://webservicestudio.codeplex.com/" 423target="_blank" 424title="WebServiceStudio at CodePlex">WebServiceStudio</a> I used to 425use could do)... It also lets speaks WCF.</p> 426 427<p>The lite version does everything you are likely to need. The 428paid versions contain functionality aimed at developers wanting to 429integrate their web services in test or build routines, or 430performance test them.</p> 431</div> 432 <div class="post_meta"> 433 Tagged: 434 435 </div> 436</div> 437<div class="post"> 438 <div class="post_title" id="post-1363"> 439 <h1><a href="blog/2010/4/7/afsted-til-vaerloese.html">Afsted til Værløse</a></h1> 440 </div> 441 <div class="post_date">Wednesday, April 07, 2010</div> 442 <div class="post_body"> 443<p><img src="media/4255/ryetvej_plantegning_217x289.jpg" width="217" height="289" alt="Ryetvej plantegning" class="alignright"/>Der er nu skrevet under, 444financieret osv. - og jeg er dermed ejer af <a 445href="http://maps.google.dk/maps?f=q&source=s_q&hl=da&geocode=&q=ryetvej+61+v%C3%A6rl%C3%B8se&sll=56.010666,11.228027&sspn=7.929169,19.753418&ie=UTF8&hq=&hnear=Ryetvej+61,+3500,+V%C3%A6rl%C3%B8se&ll=55.787819,12.364082&spn=0.032334,0.077162&t=h&z=14" 446 target="_blank" title="Ryetvej 61 på Google Maps">Ryetvej 61, 4472.mf.</a><br /> 448 Pr. 1. juli tilbringer jeg derfor en del tid på den nye adresse, 449hvor der skal males/hamres/skrues/find-selv-på-flere, hvorefter jeg 4501. august endegyldigt forlader Vestergade *snøft* ;-)</p> 451 452<p><img src="media/4265/ryetvej_bagside_335x171.jpg" width="335" height="171" alt="Ryetvej bagside" class="alignleft"/></p> 453 454<p> </p> 455</div> 456 <div class="post_meta"> 457 Tagged: 458 459 <a href="blog5cd9.html?filterby=Diverse">Diverse</a></div> 460</div> 461<div class="post"> 462 <div class="post_title" id="post-1346"> 463 <h1><a href="blog/2010/1/15/structuring-extensive-soap-webservice-apis.html">Structuring extensive SOAP webservice APIs</a></h1> 464 </div> 465 <div class="post_date">Friday, January 15, 2010</div> 466 <div class="post_body"> 467<p>Last year I spend some time building a webservice SOAP API for 468the <a href="http://www.metimus.dk/" target="_blank">Metimus 469system</a>. Although it only covers selected bits of the full 470system it is still fairly extensive.</p> 471 472<p>In the process I spend quite some time figuring out how to 473structure SOAP services when you go beyond the simple 474"RegisterForCompetition" type services... so I thought I'd share, 475since my attempts at Googling a solution where unsuccessful.</p> 476 477<p><strong>The problem I ran into</strong><br /> 478 When you build a webservice API, the natural instinct is to 479attempt to make it look like a true OO API as much as possible. So 480you will want to:</p> 481 482<ul> 483<li>Use objects for parameters and return types instead of 484primitives, which is no problem with the complex types of WSDL</li> 485 486<li>Partition your solution into multiple services, as you would 487have multiple classes in an OO API (e.g. a CompanyHandler service, 488a UserHandler service etc.)</li> 489</ul> 490 491<p>Now the problem arises when you try to e.g. use a return value 492"User" object from one service operation as a parameter for an 493operation on another service. Your solution will not compile!<br /> 494 The reason is that even though <em>you know</em> it's the same 495class, the client proxy-generator does not (whether it is .NETs 496WSDL.exe, Java or any other environment). There is no way around it 497- at least not without making life miserable for the client 498programmer (and the reason we wanted it OO'ish and shiny was to 499make it easy :-)</p> 500 501<p><strong>You have two basic choises:</strong> Either you 502partition it into multiple services and use primitives for all 503parameters - or you keep all operations in one big service and you 504get to use objects for parameters and return values.</p> 505 506<p>I ended up using the "one big service" option. To make it a bit 507easier to maintain I then used the <a 508href="http://www.4guysfromrolla.com/articles/071509-1.aspx" 509target="_blank">partial class</a> feature of .NET, so I didn't end 510up with one insanely large file.</p> 511 512<p><strong>Further info and examples<br /> 513</strong> A full explanation of the problem including <a 514href="http://www.experts-exchange.com/Programming/Languages/.NET/Web_Services/Q_24814102.html" 515 target="_blank">sample code illustrating the problem</a> can be 516seen here in <a 517href="http://www.experts-exchange.com/Programming/Languages/.NET/Web_Services/Q_24814102.html" 518 target="_blank">this Experts-Exchange question</a> I wrote. In 519case you do not have an account, here are the resource-links that 520was posted in the answer:</p> 521 522<p>- <a
523href="http://msdn.microsoft.com/en-us/library/aa480505.aspx" 524target="_blank">Microsofts description</a><br /> 525 - <a 526href="http://www.developerfusion.com/article/5155/web-services-interoperability-between-j2ee-and-net-part-3/3/" 527 target="_blank">Another explanation</a></p> 528</div> 529 <div class="post_meta"> 530 Tagged: 531 532 <a href="blog498c.html?filterby=Programming">Programming</a></div> 533</div> 534<div class="navigation"> 535 <div class="left"><span>«</span><a href="index4658.html?page=2">Older entries</a></div> 536 <div class="right"></div> 537 <div class="clear"></div> 538</div> 539 </div> 540 541 542 </div> 543 </div> 544 545 <div id="sidebar_outer"> 546 <div id="sidebar"> 547 548 <div class="box"><div class="box_title">Who am I</div><div class="box_content"><h2><img src="media/2639/torbenrohde_about.jpg" width="224" height="83" alt="Torben Warberg Rohde" class="imageNormal"/></h2> 549<p>Programmer who enjoy various forms of endurance sports such as cycling and running - nothing too serious though :-)<br /> Living in Værløse - Working in Copenhagen.</p> 550<p><a target="_blank" title="Tabs or spaces discussion" href="http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=3978">Tabs or spaces</a> - Tabs!</p></div></div><div class="box"><div class="box_title">Links</div><div class="box_content"> 551<ul> 552<li><span class="sidebarLinkList"><a href="http://www.subsero.dk/" 553target="_blank" title="Subsero.dk">Arbejder hos Subsero 554A/S</a></span></li> 555 556<li><a href="http://www.metimus.dk/" target="_blank" 557title="Metimus.dk">Arbejder hos Metimus A/S</a></li> 558 559<li><a 560href="http://onskeseddel.oenskedepotet.dk/onskeseddel/1/show/Torben+Rohde.aspx" 561 target="_blank" 562title="Ãnskeseddel for Torben Warberg Rohde">Ãnsker mig</a></li> 563</ul> 564</div></div><div class="box"><div class="box_title">Music</div><div class="box_content"><p>Recently played (<a href="http://www.last.fm/user/torbenrohde">via last.fm</a>)</p> 565<div id="lastfmrecords"></div></div></div> 566 567 568 569 <div class="box" id="blogSidebar"> 570 571 <div class="box_title">Blog</div> 572 573 <div class="box_content"> 574 <div>Categories</div> 575<ul id="blogCategoryList"> 576 <li><a href="index.html">All</a><span> (16)</span></li> 577 <li><a href="index498c.html?filterby=Programming">Programming</a> (6) 578 </li> 579 <li><a href="index5cd9.html?filterby=Diverse">Diverse</a> (7) 580 </li> 581 <li><a href="indexd6b2.html?filterby=Cykling">Cykling</a> (1) 582 </li> 583 <li><a href="index9e30.html?filterby=Webdesign">Webdesign</a> (2) 584 </li> 585</ul> 586 <div>Archive</div> 587<ul class="archive"> 588 <li class="year" id="year_2013"> 589 <div class="yearHeader"><a href="#">2013</a></div> 590 <div class="yearList"> 591 <ul> 592 <li class="month" id="month_2013March"> 593 <div class="monthHeader"><a href="#">March</a> <span>(1)</span></div> 594 <ul></ul> 595 </li> 596 </ul> 597 </div> 598 </li> 599 <li class="year" id="year_2011"> 600 <div class="yearHeader"><a href="#">2011</a></div> 601 <div class="yearList"> 602 <ul> 603 <li class="month" id="month_2011May"> 604 <div class="monthHeader"><a href="#">May</a> <span>(1)</span></div> 605 <ul> 606 <li class="topic"><a href="blog/2011/5/13/simpletextnet-released.html">SimpleText.NET released</a></li> 607 </ul> 608 </li> 609 <li class="month" id="month_2011April"> 610 <div class="monthHeader"><a href="#">April</a> <span>(1)</span></div> 611 <ul></ul> 612 </li> 613 <li class="month" id="month_2011January"> 614 <div class="monthHeader"><a href="#">January</a> <span>(3)</span></div> 615 <ul> 616 <li class="topic"><a href="blog/2011/1/2/glat---hvem-gaar-foerst-over.html">Glat - hvem gÃ¥r først over?</a></li> 617 <li class="topic"><a href="blog/2011/1/9/shortening-file-paths---c-sharp-function.html">Shortening file paths - c-sharp function</a></li> 618 <li class="topic"><a href="blog/2011/1/20/english-grammar---factoid.html">English grammar - Factoid</a></li> 619 </ul> 620 </li> 621 </ul> 622 </div> 623 </li> 624 <li class="year" id="year_2010"> 625 <div class="yearHeader"><a href="#">2010</a></div> 626 <div class="yearList"> 627 <ul> 628 <li class="month" id="month_2010December"> 629 <div class="monthHeader"><a href="#">December</a> <span>(1)</span></div> 630 <ul> 631 <li class="topic"><a href="blog/2010/12/7/reading-csv-files-on-64-bit-windows-server.html">Reading CSV files on 64 bit Windows Server</a></li> 632 </ul> 633 </li> 634 <li class="month" id="month_2010November"> 635 <div class="monthHeader"><a href="#">November</a> <span>(1)</span></div> 636 <ul> 637 <li class="topic"><a href="blog/2010/11/24/async-made-simple(r).html">Async made simple(r)</a></li> 638 </ul> 639 </li> 640 <li class="month" id="month_2010October"> 641 <div class="monthHeader"><a href="#">October</a> <span>(1)</span></div> 642 <ul> 643 <li class="topic">
643<a href="blog/2010/10/22/captcha-with-a-twist---are-you-a-human-being.html">Captcha with a twist - Are you a human being?</a></li> 644 </ul> 645 </li> 646 <li class="month" id="month_2010September"> 647 <div class="monthHeader"><a href="#">September</a> <span>(1)</span></div> 648 <ul> 649 <li class="topic"><a href="blog/2010/9/6/examining-and-testing-web-services.html">Examining and testing web services</a></li> 650 </ul> 651 </li> 652 <li class="month" id="month_2010April"> 653 <div class="monthHeader"><a href="#">April</a> <span>(1)</span></div> 654 <ul> 655 <li class="topic"><a href="blog/2010/4/7/afsted-til-vaerloese.html">Afsted til Værløse</a></li> 656 </ul> 657 </li> 658 <li class="month" id="month_2010January"> 659 <div class="monthHeader"><a href="#">January</a> <span>(2)</span></div> 660 <ul> 661 <li class="topic"><a href="blog/2010/1/11/retro-bonanza-webdesign.html">Retro-bonanza webdesign</a></li> 662 <li class="topic"><a href="blog/2010/1/15/structuring-extensive-soap-webservice-apis.html">Structuring extensive SOAP webservice APIs</a></li> 663 </ul> 664 </li> 665 </ul> 666 </div> 667 </li> 668 <li class="year" id="year_2009"> 669 <div class="yearHeader"><a href="#">2009</a></div> 670 <div class="yearList"> 671 <ul> 672 <li class="month" id="month_2009November"> 673 <div class="monthHeader"><a href="#">November</a> <span>(4)</span></div> 674 <ul> 675 <li class="topic"><a href="blog/2009/11/17/cykelcross-i-folkeparken-4000.html">Cykelcross i Folkeparken 4000</a></li> 676 <li class="topic"><a href="blog/2009/11/18/slooow-deletion-as-recycle-bin-fills-up.html">Slooow deletion as recycle bin fills up</a></li> 677 <li class="topic"><a href="blog/2009/11/19/back-to-the-future---fysisk-taendsluk-knap%21.html">"Back to the future" - fysisk tænd/sluk knap!</a></li> 678 <li class="topic"><a href="blog/2009/11/28/subsero-flytter-til-1253.html">Subsero flytter til 1253</a></li> 679 </ul> 680 </li> 681 <li class="month" id="month_2009October"> 682 <div class="monthHeader"><a href="#">October</a> <span>(1)</span></div> 683 <ul> 684 <li class="topic"><a href="blog/2009/10/29/nyt-website.html">Nyt website</a></li> 685 </ul> 686 </li> 687 </ul> 688 </div> 689 </li> 690</ul> 691 <!-- 692 <h3>Latest Comments</h3> 693<ul> 694 <li><a href="/blog/2010/1/15/structuring-extensive-soap-webservice-apis.aspx#comment-15922">cheetah uggs on Structuring extensive SOAP webservice APIs</a></li> 695 <li><a href="/blog/2010/4/7/afsted-til-vaerloese.aspx#comment-15921">http://www.kimbertonwholefoods.com/amitriptyline/ on Afsted til Værløse</a></li> 696 <li><a href="/blog/2010/4/7/afsted-til-vaerloese.aspx#comment-15920">http://www.kimbertonwholefoods.com/anafranil/ on Afsted til Værløse</a></li> 697 <li><a href="/blog/2010/4/7/afsted-til-vaerloese.aspx#comment-15919">http://www.kimbertonwholefoods.com/amoxil/ on Afsted til Værløse</a></li> 698 <li><a href="/blog/2010/4/7/afsted-til-vaerloese.aspx#comment-15918">http://www.kimbertonwholefoods.com/arcoxia/ on Afsted til Værløse</a></li> 699 <li><a href="/blog/2010/4/7/afsted-til-vaerloese.aspx#comment-15917">http://www.kimbertonwholefoods.com/arcoxia/ on Afsted til Værløse</a></li> 700 <li><a href="/blog/2010/1/11/retro-bonanza-webdesign.aspx#comment-15916">normxnpi on Retro-bonanza webdesign</a></li> 701 <li><a href="/blog/2010/1/11/retro-bonanza-webdesign.aspx#comment-15915">normxnpi on Retro-bonanza webdesign</a></li> 702 <li><a href="/blog/2010/1/11/retro-bonanza-webdesign.aspx#comment-15914">normxnpi on Retro-bonanza webdesign</a></li> 703 <li><a href="/blog/2010/1/11/retro-bonanza-webdesign.aspx#comment-15913">normxnpi on Retro-bonanza webdesign</a></li> 704</ul> 705 --> 706 </div> 707 708 </div> 709 710 711 712 </div> 713 </div> 714 715 <div class="clearer"> </div>* 716 717 </div> 718 719 <div id="dashboard"> 720 <div id="dashboard_inner"> 721 722 <div class="clearer"> </div> 723 724 </div> 725 </div> 726 727 </div> 728 </div> 729 730 <div id="footer"> 731 732 <div class="left"> 733 734 </div> 735 <div class="right"> 736 <a href="http://templates.arcsin.se/">Website template</a> by <a href="http://arcsin.se/">Arcsin</a> 737 </div> 738 739 <div class="clearer"> </div> 740 741 </div> 742 743</div> 744</div> 745 746</form> 747
748<script type="text/javascript"> 749var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 750document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 751</script>
vendor: 1 bytes, line 751
751
752<script type="text/javascript"> 753try { 754var pageTracker = _gat._getTracker("UA-11374227-1"); 755pageTracker._trackPageview(); 756} catch(err) {}</script>
756 757 758 759</body> 760 761<!-- Mirrored from trsdomain.dk/ by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 14 Jan 2017 13:20:24 GMT --> 762</html> 763
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.