<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13566637</id><updated>2026-04-05T11:54:49.849-07:00</updated><category term="ajax"/><category term="outpost"/><category term="asp.net"/><category term="barcamp"/><category term="barcampcopenhagen"/><category term="barcampcopenhagen2008"/><category term="performance"/><category term="weboptimizer"/><title type='text'>C# Edge Blog</title><subtitle type='html'>A blog for C# and ASP.NET developers.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13566637.post-738801955583811413</id><published>2013-01-08T06:50:00.001-08:00</published><updated>2013-01-08T07:07:04.108-08:00</updated><title type='text'>Kære Nettbuss</title><content type='html'>Here&#39;s a little rant in Danish, sorry about that. In short it&#39;s about how even companies that handle our public transportation tend to forget to design for the end user, in this case the bus going people...&lt;br /&gt;
&lt;br /&gt;
I dag sendte jeg denne besked til Nettbuss&#39; kundeservice:&lt;br /&gt;
&lt;br /&gt;
Kære Nettbuss&lt;br /&gt;
&lt;br /&gt;
Det drejer sig om tv-skærmene i de nye 250S busser. Det er svært at læse teksten, fordi skriften er for lille. I bør kunne få hjælp af en brugerekspert til at forstørre teksterne x2 eller x3 ved bedre udnyttelse af skærmpladsen. Det tekniske fungerer jo fint, der er bare ikke tænkt på slutbrugeren, så skynd jer at få det rettet, så alle kan læse næste stoppested mv, selv om de ikke sidder lige ved skærmene. &lt;br /&gt;
&lt;br /&gt;
Juhuu for fremskridtet - husk brugeren.</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/738801955583811413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/738801955583811413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/738801955583811413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/738801955583811413'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2013/01/kre-nettbuss.html' title='Kære Nettbuss'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-13023520292121362</id><published>2010-05-20T03:23:00.000-07:00</published><updated>2010-05-20T03:28:18.438-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asp.net"/><category scheme="http://www.blogger.com/atom/ns#" term="performance"/><category scheme="http://www.blogger.com/atom/ns#" term="weboptimizer"/><title type='text'>ASP.NET performance</title><content type='html'>&lt;p&gt;Check out Mads Kristensens ASP.NET performance project. 

&lt;p&gt;He tells us, that it&#39;s still in alpha, so consider it a preview. 

&lt;p&gt;&lt;a href=http://optimizeasp.net&gt;Visit OptimizeASP.NET here: http://optimizeasp.net&lt;/a&gt;

&lt;p&gt;Also, check out his open source project WebOptimizer.NET, which aim to provide friction-free performance improvements for new and existing ASP.NET applications.

&lt;p&gt;&lt;a href=http://weboptimizer.codeplex.com/&gt;Visit WebOptimzer.NET on CodePlex&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/13023520292121362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/13023520292121362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/13023520292121362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/13023520292121362'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2010/05/aspnet-performance.html' title='ASP.NET performance'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-9048601445779121697</id><published>2008-10-07T13:43:00.000-07:00</published><updated>2008-10-07T13:45:03.479-07:00</updated><title type='text'>BarCamp Copenhagen 8.2</title><content type='html'>&lt;P&gt;Til BarCamp Copenhagen er omdrejningspunktet de folk, der deltager, og det er her vigtigt at understrege, at der menes at deltage aktivt. No tourists!  
&lt;br&gt;

&lt;P&gt;  BarCamp konceptet er bygget op omkring discussions og open space tankegange, og det hører ind under un-conference konceptet, dvs. at programmet sættes sammen, når deltagerne dukker op. Man kan derfor heller ikke sige helt på forhånd, hvad det kommer til at handle om, men man kan kigge på deltagerlisten og google lidt på de folk, der kommer, hvis man vil danne sig et indtryk om det... En ting er sikkert, det er, at deltagerne er:
&lt;br&gt;

&lt;br&gt;
  Folk, der virkelig brænder for det, de gør.
&lt;br&gt;
  Sociale, åbne og søde mennesker.
&lt;br&gt;
  Mennesker, der elsker at dele ud af deres viden.
&lt;br&gt;
  Interesserede, intelligente og intense personer.
&lt;br&gt;
  - og der kan være tendens til høj GEEK-faktor.
&lt;br&gt;

&lt;P&gt;  Der er deltagerloft på 50, så man skal være lidt hurtig til at tilmelde sig på wikien, http://barcamp.org/BarCampCopenhagen.
&lt;P&gt;  Vi har ikke en location fastlagt endnu, og vi mangler sponsorer, men datoen er under alle omstændigheder den 22. november, fra kl. 10-?
&lt;br&gt;
&lt;P&gt;  Det gælder om at deltage, både før, under og efter, så blog om det og sig det videre.
&lt;br&gt;

&lt;P&gt;  - Velkommen til den danske it-undergrund!</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/9048601445779121697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/9048601445779121697' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/9048601445779121697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/9048601445779121697'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2008/10/barcamp-copenhagen-82.html' title='BarCamp Copenhagen 8.2'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-7164951836520669597</id><published>2008-04-06T08:06:00.000-07:00</published><updated>2008-04-06T08:12:38.707-07:00</updated><title type='text'>OutPost 3.2.001</title><content type='html'>&lt;p&gt;The long awaited release!&lt;/p&gt;

&lt;ul&gt;
&lt;li class=&quot;download&quot;&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost.3.2.001.zip&quot;&gt;&lt;u&gt;Download OutPost 3.2.001&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changes since last release, which was 2.2.002:&lt;/p&gt;

&lt;ul class=&quot;history&quot;&gt;
    &lt;li&gt;6/4-2008 - 3.2.001
      &lt;ul&gt;
        &lt;li&gt;First PUBLIC release since version 2.0.003!&lt;/li&gt;
        &lt;li&gt;Added support for asynchronous page flakes that loads simultaneously.&lt;/li&gt;
        &lt;li&gt;Added better support for external page flakes.&lt;/li&gt;
        &lt;li&gt;Improved support for Internet Explorer, Firefox, Opera and Safari browsers.&lt;/li&gt;
        &lt;li&gt;Removes linebreaks when comparing for differences to minimize traffic.&lt;/li&gt;
        &lt;li&gt;No more supports .net 1.1 (officially).&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;1/2-2008 - 3.1.001
      &lt;ul&gt;
        &lt;li&gt;Added Suggest.aspx demo.&lt;/li&gt;
        &lt;li&gt;Added DocTree.aspx demo.&lt;/li&gt;
        &lt;li&gt;Redesigned test suite layout.&lt;/li&gt;
        &lt;li&gt;Added support for animations, like YellowFade, BackFade, SlideDown and more.&lt;/li&gt;
        &lt;li&gt;Added support for loading indicator.&lt;/li&gt;
        &lt;li&gt;Added support for load indicator.&lt;/li&gt;
        &lt;li&gt;Added method to Disable Ajax.&lt;/li&gt;
        &lt;li&gt;Added support for asynchronous load of Page control after window.onload.&lt;/li&gt;
        &lt;li&gt;Redesigned the iGoogle demo to make it more modular and extendable.&lt;/li&gt;
        &lt;li&gt;Improved the SignUp demo.&lt;/li&gt;
        &lt;li&gt;Added AjaxPage user control.&lt;/li&gt;
        &lt;li&gt;Added DataGrid Demo.&lt;/li&gt;
        &lt;li&gt;Added ProperReset Demo.&lt;/li&gt;
        &lt;li&gt;Added ToDoList Flake for iGoogle demo.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;27/11-2007 - 3.0.002
      &lt;ul&gt;
        &lt;li&gt;Modified web.config to make it work with ASP.NET Development Server.&lt;/li&gt;
        &lt;li&gt;Edited the howto.txt.&lt;/li&gt;&lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;21/04-2007 - 3.0.001
      &lt;ul&gt;
        &lt;li&gt;Added option to hijack links.&lt;/li&gt;
        &lt;li&gt;Added support to ajax-enable a page from web.config.&lt;/li&gt;
        &lt;li&gt;Redesigned and reimplemented the html compare function by using LCS algorithm.&lt;/li&gt;
        &lt;li&gt;Optimized splitting up the HTML into tags by using split in combination with regular expressions.&lt;/li&gt;
        &lt;li&gt;Optimized every use of regular expressions by caching the results.&lt;/li&gt;
        &lt;li&gt;Huge performance improvements!!&lt;/li&gt;
        &lt;li&gt;Added option EnableAjaxRedirect which allows the page to be redirected using ajax.&lt;/li&gt;
        &lt;li&gt;Added support for multiple-select drop down lists.&lt;/li&gt;
        &lt;li&gt;Improved support for tables.&lt;/li&gt;
        &lt;li&gt;Improved support for loading of scripts.&lt;/li&gt;
        &lt;li&gt;Added update commands InsertAfter and InsertFirst.&lt;/li&gt;
        &lt;li&gt;Improved cursor position store/restore functionality.&lt;/li&gt;
        &lt;li&gt;Added scroll position store/restore functionality.&lt;/li&gt;
        &lt;li&gt;Added support for external hosts by introducing keyword $ExternalHost$ for the LocalHost property.&lt;/li&gt;
        &lt;li&gt;Reimplemented the Page control as a UserControl.&lt;/li&gt;
        &lt;li&gt;Added ExternalTest.aspx demo.&lt;/li&gt;
        &lt;li&gt;Added FormElementsTest.aspx demo.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;15/03-2007 - 2.0.003
      &lt;ul&gt;
        &lt;li&gt;Added support for not sending back inputs with only the value changed.&lt;/li&gt;
        &lt;li&gt;Fixed bug with resetting radio buttons.&lt;/li&gt;
        &lt;li&gt;Reduced number of unnecessary field updates on the client.&lt;/li&gt;
        &lt;li&gt;Added support for ASP.NET 1.1.&lt;/li&gt;
        &lt;li&gt;Added support for following parameters: DisableCopyCommand, ShowViewState, ShowEventValidation,
          ShowLastFocus, SimulateOnload, SimulateOnunload, SimulateOnbeforeunload&lt;/li&gt;
        &lt;li&gt;Added ProperReset demo.&lt;/li&gt;&lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://hijax.net/OutPost/3.2.001/Core/History.html&quot;&gt;Find the full history here&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/7164951836520669597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/7164951836520669597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/7164951836520669597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/7164951836520669597'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2008/04/outpost-32001.html' title='OutPost 3.2.001'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-5002468018961793337</id><published>2008-03-22T15:36:00.000-07:00</published><updated>2008-03-23T14:00:43.192-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="barcamp"/><category scheme="http://www.blogger.com/atom/ns#" term="barcampcopenhagen"/><category scheme="http://www.blogger.com/atom/ns#" term="barcampcopenhagen2008"/><title type='text'>Slides from barCamp Copenhagen 2008</title><content type='html'>&lt;p&gt;Here are the slides and the transcript of my presentation at barCamp Copenhagen 2008. The presentation was held in Danish, so I&#39;ve translated the slides and the transcript into English.&lt;/p&gt;

&lt;h2&gt;Transcript&lt;/h2&gt;

&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_1.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;Hi, my name is Troels, I work for a company called beaconware. 
&lt;/p&gt;&lt;p&gt;I primarily work with .net technology and web development.
&lt;/p&gt;&lt;p&gt;I would like to tell you about ajax and about how you go from ajax to hijax to indirect ajax.
&lt;/p&gt;&lt;p&gt;I&#39;ll round this session of with a demo about how indirect ajax works.
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_2.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;There are a lot of definitions of what ajax is. A simple definition would be: 
&lt;/p&gt;&lt;p&gt;&quot;Ajax is the ability to update a part of the page instead of the whole page.&quot; 
&lt;/p&gt;&lt;p&gt;It may not sound overwhelming.
&lt;/p&gt;&lt;p&gt;The strength lies in the ability to call the server asynchronously without reloading the page. 
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_3.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;An example could be an explorer in a CMS with folders that you can expand to reveal documents and sub folders. 
&lt;/p&gt;&lt;p&gt;You could achieve this with ajax by attaching a handler on the click event. 
&lt;/p&gt;&lt;p&gt;The handler would call a web service asynchronously to get a data representation of the contents of the folder. 
&lt;/p&gt;&lt;p&gt;Then it would add graphics needed for documents and sub folders to the document structure below the expanded folder. 
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_4.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;The great challenge in programming ajax is to make it work in all browsers.
&lt;/p&gt;&lt;p&gt;It&#39;s difficult and the end user must often download huge scripts to make it work. 
&lt;/p&gt;&lt;p&gt;Browsers in cell phones has extra difficulties with ajax because they don&#39;t have full dynamic html support. 
&lt;/p&gt;&lt;p&gt;If you make your web application depend on ajax, then you have to realize that there will be end users 
&lt;/p&gt;&lt;p&gt;who are unable to use it, either because of their browsers or because of other accesibility concerns. 
&lt;/p&gt;&lt;p&gt;That&#39;s why it&#39;s so important to make sure that the ajax application degrades gracefully, which means that beneath
&lt;/p&gt;&lt;p&gt;all the fancy web 2.0 fireworks there&#39;s a fully functional web 1.0 document to fall-back on. 
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_5.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;This is where hijax gets into play. 
&lt;/p&gt;&lt;p&gt;Hijax is a method that reminds you of how you achieve separation of layout from document structure by using css files.
&lt;/p&gt;&lt;p&gt;With hijax you achieve separation of ajax from the document structure. 
&lt;/p&gt;&lt;p&gt;The procedure is to start by developing a fully functional web 1.0 document by using forms and links. 
&lt;/p&gt;&lt;p&gt;Then you hijack the form&#39;s &quot;onsubmit&quot; event and the link&#39;s &quot;onclick&quot; event by using unobtrusive Javascript.
&lt;/p&gt;&lt;p&gt;That means Javascript that automatically disables itself in a down-level browser.
&lt;/p&gt;&lt;p&gt;So, if the browser doesn&#39;t live up to the requirements for ajax then the application reverts to web 1.0 behaviour.
&lt;/p&gt;&lt;p&gt;When a form&#39;s onsubmit event has been hijacked and it gets intercepted then an asynchronous call is made to a web service on the server. 
&lt;/p&gt;&lt;p&gt;The server returns the requested html fragment and the client updates the DOM. 
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_6.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;The technique used here is also called AHAH which stands for Asynchronous Html And Http. You can find it on microformats.org. 
&lt;/p&gt;&lt;p&gt;Hijax requires that you in your server code is able to separate the output into those html fragments that you want to update separately on the client. 
&lt;/p&gt;&lt;p&gt;So you need a really flexible server API that can return parts of the page by request. 
&lt;/p&gt;&lt;p&gt;It can seem as a comprehensive task to make your web application ready for this and it is, especially if you don&#39;t do it from the beginning. 
&lt;/p&gt;&lt;p&gt;You will have to create web services that you can call and a way of telling them which part of which page that you want html returned for.
&lt;/p&gt;&lt;p&gt;Not to mention thinking up a way of handling actions and events on the server. 
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_7.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;That is why some people gone a step further and invented indirect ajax. 
&lt;/p&gt;&lt;p&gt;Indirect ajax automates the process of hijaxing a form. 
&lt;/p&gt;&lt;p&gt;It hijacks all events and communicates with the server through a proxy. 
&lt;/p&gt;&lt;p&gt;The proxy receives enough information to execute the http request that would have been executed if the event hadn&#39;t been intercepted. 
&lt;/p&gt;&lt;p&gt;The only difference is that the call is executed locally on the server and a lot faster. 
&lt;/p&gt;&lt;p&gt;The html document that is returned by this call is stored in memory on the server to be compared with the html document returned by the next call.
&lt;/p&gt;&lt;p&gt;So, on every request the current document is compared to the previous document. 
&lt;/p&gt;&lt;p&gt;The comparison results in a difference. This difference consists of a number of html fragments together with information about where they belong in the document structure. 
&lt;/p&gt;&lt;p&gt;This information is sent back to the client that now updates the document structure. 
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_8.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;On the screen it looks like the browser executes a normal post back. It&#39;s just quicker, because:
&lt;/p&gt;&lt;p&gt;-  The traffic to and from the server has been minimized.
&lt;/p&gt;&lt;p&gt; - and because the call is executed locally on the server
&lt;/p&gt;&lt;p&gt;- and because it doesn&#39;t require the whole page to be reloaded.
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_9.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;Now I want to show you a couple of demoes of an indirect ajax framework.
&lt;/p&gt;&lt;p&gt;It&#39;s an open source project that I have developed for .net and it&#39;s called OutPost.
&lt;/p&gt;&lt;p&gt;You can try out or download the demo from http://hijax.net/OutPost.
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_10.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;The first demo is inspired by Google Suggest which is a really classic ajax tool.
&lt;/p&gt;&lt;p&gt;As you type in words in the search field the suggestions for search terms are shown below based on searches of other users.
&lt;/p&gt;&lt;p&gt;I twisted it and made a Farber Suggest application based on the hilarious turns of phrases of David Farber.
&lt;/p&gt;&lt;p&gt;Here you type in an English word and then a number of matching farberisms are shown below.
&lt;/p&gt;&lt;p&gt;Let&#39;s try... 
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img width=&quot;100%&quot; alt=&#39;&#39; src=&#39;http://hijax.net/barcampcopenhagen2008/032208_2304_11.png&#39;/&gt;
   &lt;/p&gt;&lt;p&gt;The other demo is a simple explorer that shows folders and documents in a CMS. 
&lt;/p&gt;&lt;p&gt;You can click on a folder to expand it. 
&lt;/p&gt;&lt;p&gt;You can also collapse the folder again by clicking on it. 
&lt;/p&gt;&lt;p&gt;In the background I have a program called Fiddler running. It logs the traffic between client and server.
&lt;/p&gt;&lt;p&gt;As you can see the server sends about 8kb back on every request.
&lt;/p&gt;&lt;p&gt;Now  I enable OutPost.
&lt;/p&gt;&lt;p&gt;And run the demo again.
&lt;/p&gt;&lt;p&gt;Looking at the source code you can see that some details in the html code has changed to make OutPost able to hijack the events that normally gets the browser to reload the page. 
&lt;/p&gt;&lt;p&gt;Then we expand the folder... And expand the sub folder...
&lt;/p&gt;&lt;p&gt;And then we switch to Fiddler again. 
&lt;/p&gt;&lt;p&gt;As you can see the amount of traffic is now about 10 times smaller. 
&lt;/p&gt;&lt;p&gt;This is partly a result of zipping the traffic. So, we use Fiddler to unzip it. 
&lt;/p&gt;&lt;p&gt;And if we dive deeper in to see the data itself we can see that it&#39;s not a full document that&#39;s returned to the client. 
&lt;/p&gt;&lt;p&gt;The client receives commands that the OutPost client framework understands and uses to update the document structure with. 
&lt;/p&gt;&lt;p&gt;As an example one command means &quot;replace this image with this&quot; and another means &quot;delete this table&quot;. 
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/5002468018961793337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/5002468018961793337' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/5002468018961793337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/5002468018961793337'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2008/03/slides-from-barcamp-copenhagen-2008.html' title='Slides from barCamp Copenhagen 2008'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-4406057040124786274</id><published>2008-01-25T12:16:00.000-08:00</published><updated>2008-01-25T12:24:57.494-08:00</updated><title type='text'>BarCamp Copenhagen 2008</title><content type='html'>&lt;p&gt;Cool event, nice people, great atmosphere!!
&lt;p&gt;Here is a link to the demoes, I&#39;ve just put them online, including at download link to the latest unofficial BETA of OutPost: &lt;a href=&quot;http://hijax.net/OutPost&quot;&gt;http://hijax.net/OutPost&lt;/a&gt;
&lt;p&gt;My presentation was well received. You can download the power points here (sorry it&#39;s only in power point 2007 format right now - AND it&#39;s in Danish): &lt;a href=&quot;http://hijax.net/OutPost/AJAX, HIJAX, OUTPOST.pptx&quot;&gt;AJAX, HIJAX, OUTPOST&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/4406057040124786274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/4406057040124786274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/4406057040124786274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/4406057040124786274'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2008/01/barcamp-copenhagen-2008.html' title='BarCamp Copenhagen 2008'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-5417402084659600959</id><published>2007-11-27T06:21:00.000-08:00</published><updated>2007-11-27T06:27:25.711-08:00</updated><title type='text'>OutPost and ASP.NET Development Server</title><content type='html'>&lt;p&gt;I just found out, that OutPost has some troubles with the way ASP.NET Development Server handles &lt;strong&gt;httphandlers&lt;/strong&gt;. The &lt;httphandlers&gt;section of web.config can be modified to make it work:

&lt;p&gt;&lt;b&gt;Change this:&lt;/b&gt;

&lt;/p&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;&lt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#a31515;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#ff0000;&quot;&gt;verb&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#ff0000;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;OutPost.axd&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#ff0000;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;OutPost.Core.Switch,OutPost&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;/&gt;&lt;/span&gt;

&lt;p&gt;&lt;b&gt;to this:&lt;/b&gt;

&lt;/p&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;&lt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#a31515;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#ff0000;&quot;&gt;verb&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#ff0000;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;OutPost.axd,OutPost.axd/Ajax.js&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#ff0000;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;OutPost.Core.Switch,OutPost&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size:85%;color:#0000ff;&quot;&gt;/&gt;&lt;/span&gt;

&lt;p&gt;And it now works with ASP.NET Development Server&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/5417402084659600959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/5417402084659600959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/5417402084659600959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/5417402084659600959'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2007/11/outpost-and-aspnet-development-server.html' title='OutPost and ASP.NET Development Server'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-8397168714749789971</id><published>2007-11-27T05:03:00.000-08:00</published><updated>2007-11-27T05:08:53.154-08:00</updated><title type='text'>OutPost Demo HowTo for .NET 2.0</title><content type='html'>&lt;p&gt;&lt;b&gt;For ASP.NET 2.0 demo&lt;/b&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download and unzip OutPost.zip
&lt;li&gt;Open folder &quot;Demo&quot;
&lt;li&gt;Right-click sub folder &quot;Outpost-2.0-Demo&quot;
&lt;li&gt;Select &quot;Properties&quot;
&lt;li&gt;Select &quot;Web Sharing&quot;
&lt;li&gt;Select &quot;Share this folder&quot;, alias should be &quot;Outpost-2.0-Demo&quot;
&lt;li&gt;If .NET 2.0 isn&#39;t your default setting you must configure this with Internet Information Services
&lt;li&gt;Now you can open the demo at &quot;http://localhost/Outpost-2.0-Demo/Demo&quot;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/8397168714749789971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/8397168714749789971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/8397168714749789971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/8397168714749789971'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2007/11/outpost-demo-howto-for-aspnet-20.html' title='OutPost Demo HowTo for .NET 2.0'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-437169230640210845</id><published>2007-11-05T14:18:00.000-08:00</published><updated>2007-11-05T14:24:35.804-08:00</updated><title type='text'>BarCampCopenhagen</title><content type='html'>I&#39;m making a presentation at BarCampCopenhagen about OutPost.

It&#39;s in Copenhagen on January 25th, 2008. Hope to see you there!

The next release is on its way and includes a lot of improvements.</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/437169230640210845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/437169230640210845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/437169230640210845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/437169230640210845'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2007/11/barcampcopenhagen.html' title='BarCampCopenhagen'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-3035858822836712004</id><published>2007-03-15T15:58:00.000-07:00</published><updated>2007-11-27T06:46:06.442-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="outpost"/><title type='text'>OutPost Marketing blah</title><content type='html'>&lt;p&gt;OutPost hijacks the form post back event and
&lt;ul class=&quot;list&quot;&gt;&lt;li&gt;tells the server to execute the post back locally on the server,
&lt;/li&gt;&lt;li&gt;an optimized DHTML-response is sent back to the client,
&lt;/li&gt;&lt;li&gt;the page is updated using cross-browser DHTML and
&lt;/li&gt;&lt;li&gt;page reloads and flickers are thereby eliminated.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Bandwidth usage is minimized by
&lt;ul class=&quot;list&quot;&gt;&lt;li&gt;diff-comparing two consecutive responses,
&lt;/li&gt;&lt;li&gt;keeping state on server,
&lt;/li&gt;&lt;li&gt;keeping js framework light,
&lt;/li&gt;&lt;li&gt;compressing the response,
&lt;/li&gt;&lt;li&gt;sending optimized DHTML and
&lt;/li&gt;&lt;li&gt;not using Xml or JSON.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Features
&lt;ul class=&quot;list&quot;&gt;&lt;li&gt;No custom controls needed
&lt;/li&gt;&lt;li&gt;No update panels required
&lt;/li&gt;&lt;li&gt;No Javascript/DOM skills required
&lt;/li&gt;&lt;li&gt;Write ASP.NET like you use to do
&lt;/li&gt;&lt;li&gt;Design your page like you use to do
&lt;/li&gt;&lt;li&gt;Internal HTTP-compression
&lt;/li&gt;&lt;li&gt;Multiple flakes on same page
&lt;/li&gt;&lt;li&gt;One line of code enables Ajax
&lt;/li&gt;&lt;li&gt;Pages can be included in other pages
&lt;/li&gt;&lt;li&gt;Add form using client-scripting
&lt;/li&gt;&lt;li&gt;Cross-form posting
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Supports
&lt;ul class=&quot;list&quot;&gt;&lt;li&gt;ASP.NET 1.1 &amp;amp; 2.0 controls
&lt;/li&gt;&lt;li&gt;Session state
&lt;/li&gt;&lt;li&gt;ViewState
&lt;/li&gt;&lt;li&gt;Caching
&lt;/li&gt;&lt;li&gt;Url redirects
&lt;/li&gt;&lt;li&gt;Server events
&lt;/li&gt;&lt;li&gt;Most browsers
&lt;/li&gt;&lt;li&gt;Form authentication
&lt;/li&gt;&lt;li&gt;HTTPS
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Options
&lt;ul class=&quot;list&quot;&gt;&lt;li&gt;Simulate onload event on postbacks
&lt;/li&gt;&lt;li&gt;Simulate onunload event on postbacks
&lt;/li&gt;&lt;li&gt;Simulate onbeforeunload event on postbacks
&lt;/li&gt;&lt;li&gt;Keep/reset client-side events on postbacks
&lt;/li&gt;&lt;li&gt;Show/hide ViewState
&lt;/li&gt;&lt;li&gt;Show/hide EventValidation
&lt;/li&gt;&lt;li&gt;Turn compression on/off
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/3035858822836712004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/3035858822836712004' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/3035858822836712004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/3035858822836712004'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2007/03/outpost-sales-pitch.html' title='OutPost Marketing blah'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-8417185910449784554</id><published>2007-03-15T02:45:00.000-07:00</published><updated>2007-03-15T02:47:19.320-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="outpost"/><title type='text'>OutPost 2.0.002</title><content type='html'>&lt;p&gt;New demo added and some bugfixes.&lt;/p&gt;

&lt;ul&gt;
&lt;li class=&quot;download&quot;&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost.2.0.002.zip&quot;&gt;&lt;u&gt;Download OutPost 2.0.002&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changes since last release, which was 2.0.001:&lt;/p&gt;

&lt;ul class=&quot;history&quot;&gt;
  &lt;li&gt;15/03-2007 - 2.0.002
    &lt;ul&gt;
      &lt;li&gt;Fixed bugs in iGoogle demo.&lt;/li&gt;
      &lt;li&gt;Fixed properly resetting Page_Validators array on post backs.&lt;/li&gt;
      &lt;li&gt;Added Wizard demo.&lt;/li&gt;&lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/8417185910449784554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/8417185910449784554' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/8417185910449784554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/8417185910449784554'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2007/03/outpost-20002.html' title='OutPost 2.0.002'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-7469229653757746901</id><published>2007-03-13T16:49:00.000-07:00</published><updated>2007-03-13T17:04:08.319-07:00</updated><title type='text'>OutPost 2.0 Released</title><content type='html'>&lt;p&gt;New version ready to download!&lt;/p&gt;

&lt;p&gt;It is much better at dividing the page up and sending only what&#39;s changed. One of the reasons for this is that OutPost no longer restricts itself to looking at html tags that has an ID on them. Any element goes! Also a Delete command and a Copy command is introduced.&lt;/p&gt;

&lt;p&gt;Hope you like it and have fun with it! Please, write a comment if you use it for something cool!&lt;/p&gt;

&lt;ul&gt;
&lt;li class=&quot;download&quot;&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost.2.0.001.zip&quot;&gt;&lt;u&gt;Download OutPost 2.0.001&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changes since last release, which was 1.6.002:&lt;/p&gt;

&lt;ul class=&quot;history&quot;&gt;
  &lt;LI&gt;
    14/03-2007 - 2.0.001&lt;/LI&gt;
  &lt;UL&gt;
    &lt;li&gt;
      Added support for specifying LocalHost dynamically by setting it to $CURRENTHOST$.&lt;/li&gt;
    &lt;LI&gt;
      Added support for hiding LASTFOCUS field.&lt;/LI&gt;
    &lt;LI&gt;
      Fixed support for storing/restoring selected text.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for client debugging modes.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for simulating (triggering) onload, onunload and onbeforeunload events.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for client side debugging for Ajax javascript.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for adding rows to tables.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for url redirect&lt;/LI&gt;
    &lt;LI&gt;
      Added support for deleting elements by sending a Delete command to the client.&lt;/LI&gt;
    &lt;LI&gt;
      Added WebParts and Cars demoes.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for chunked response.&lt;/LI&gt;&lt;/UL&gt;
  &lt;LI&gt;
    23/01-2007 - 1.7.001&lt;/LI&gt;
  &lt;UL&gt;
    &lt;li&gt;
      Added support for adding client side event &#39;onsuccess&#39; to the form.&lt;/li&gt;
    &lt;LI&gt;
      Added support for sending modified tags without id or name back to the client.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for copying html from elements that are already present on the client to other elements in stead of sending it again.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for sending table rows (tr) back to client.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for sending only value of input tags back.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for sending only modified script blocks back to the client.&lt;/LI&gt;
    &lt;LI&gt;
      Added cross-browser support for using following DHTML features: outerHTML, replaceNode, parentElement, canHaveChildren.&lt;/LI&gt;
    &lt;LI&gt;
      Added support for adding response headers by specifying appsetting &quot;AddHeaders&quot; (syntax &quot;key1=value1&amp;key2=value2&quot;).&lt;/LI&gt;
    &lt;LI&gt;
      Fixed problem with repeatedly submitting a form and not getting the form updated or reset (as pointed out by Jomar Coquia).&lt;/LI&gt;&lt;/UL&gt;
  &lt;LI&gt;
    23/11-2006 - 1.6.004&lt;/LI&gt;
  &lt;UL&gt;
    &lt;LI&gt;
      Fixed problem with inserting carriage returns into textarea.&lt;/LI&gt;&lt;/UL&gt;
  &lt;LI&gt;
    15/11-2006 - 1.6.003&lt;/LI&gt;
  &lt;UL&gt;
    &lt;LI&gt;
      Added if there is no difference between two or more post backs the browser is
      re-updated with the last post back that had a difference. That means if you
      modify the DOM between the post backs this resets some or all of these modifications 
      (which i closer than before to what is normally expected).&lt;/LI&gt;&lt;/UL&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/7469229653757746901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/7469229653757746901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/7469229653757746901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/7469229653757746901'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2007/03/outpost-20-released.html' title='OutPost 2.0 Released'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-116056339567500614</id><published>2006-10-11T03:40:00.000-07:00</published><updated>2006-10-11T03:58:20.086-07:00</updated><title type='text'>OutPost 1.6</title><content type='html'>&lt;ul&gt;
&lt;li class=download&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost.1.6.002.zip&quot;&gt;&lt;u&gt;Download OutPost 1.6.002&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;UL class=history&gt;
  &lt;LI&gt;
    11/10-2006 - 1.6.002&lt;/LI&gt;
  &lt;UL&gt;
    &lt;LI&gt;
    Added new Demo in .NET 1.1 project /Brian Ritchie
    &lt;LI&gt;
      Fixed a bug where&amp;nbsp;a drop down populates, but resets the position on post 
      back&lt;/LI&gt;&lt;/UL&gt;
  &lt;LI&gt;
    10/10-2006 - 1.6.001
    &lt;UL&gt;
      &lt;LI&gt;
      Placed version history in separate file
      &lt;LI&gt;
      Utilized HttpHandler instead of Page with code behind. This requires a simple 
      entry in the web.config /Brian Ritchie
      &lt;LI&gt;
      Removed 3rd party code and include binary libraries instead (sharpziplib &amp;amp; 
      blowery) /Brian Ritchie
      &lt;LI&gt;
      Packaged things up into a class library /Brian Ritchie
      &lt;LI&gt;
        Enhanced 1.1 support so it compiles under 1.1 again /Brian Ritchie&lt;/LI&gt;&lt;/UL&gt;
&lt;/UL&gt;

&lt;p&gt;See full &lt;a href=&quot;http://hijax.net/OutPost/OutPost/History.html&quot;&gt;Version history&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/116056339567500614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/116056339567500614' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/116056339567500614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/116056339567500614'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/10/outpost-16.html' title='OutPost 1.6'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-116013800495243082</id><published>2006-10-06T05:29:00.000-07:00</published><updated>2006-10-06T05:35:29.486-07:00</updated><title type='text'>Benefits of Hijax</title><content type='html'>&lt;p&gt;Did a search on Hijax and found a link to the slides from &lt;a href=&quot;http://domscripting.com/presentations/xtech2006/&quot;&gt;Jeremy Keith&#39;s presentation at XTech 2006&lt;/a&gt;. Here&#39;s a nice quote from the presentation slides:
&lt;/p&gt;

&lt;blockquote&gt;&lt;h2&gt;Benefits of Hijax&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;No need to spend time and resources building a non-Ajax version.&lt;/li&gt;
&lt;li&gt;No duplication of logic (e.g. form validation).&lt;/li&gt;
&lt;li&gt;Keeps your application logic on the server.&lt;/li&gt;
&lt;li&gt;Keeps your JavaScript file size down.&lt;/li&gt;
&lt;li&gt;Links are spiderable and potentially bookmarkable.&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/116013800495243082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/116013800495243082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/116013800495243082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/116013800495243082'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/10/benefits-of-hijax.html' title='Benefits of Hijax'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-115996149082330867</id><published>2006-10-04T04:29:00.000-07:00</published><updated>2006-10-04T04:31:30.836-07:00</updated><title type='text'>OutPost 1.5 Refresh</title><content type='html'>&lt;ul&gt;
&lt;li class=download&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost15.zip&quot;&gt;&lt;u&gt;Download OutPost 1.5&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;10/4-2006 - 1.5.003&lt;/p&gt;
&lt;ul class=donors&gt;&lt;li&gt;Removed bits of Javascript that wasn&#39;t used for anything
&lt;li&gt;Added more thorough removal of EventValidation and ViewState input including surrounding DIVs
&lt;/ul&gt;
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/115996149082330867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/115996149082330867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115996149082330867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115996149082330867'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/10/outpost-15-refresh.html' title='OutPost 1.5 Refresh'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-115966669416504792</id><published>2006-09-30T18:34:00.000-07:00</published><updated>2006-09-30T18:48:36.623-07:00</updated><title type='text'>OutPost version 1.5</title><content type='html'>&lt;b&gt;Added gzip and deflate compression internally! Now it really rocks :)&lt;/b&gt;

&lt;ul&gt;
&lt;li class=download&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost15.zip&quot;&gt;&lt;u&gt;OutPost 1.5&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.5.002 - 20061001 0312 twj
&lt;ul class=donors&gt;&lt;li&gt;Removed selected=&quot;selected&quot; when comparing html, it caused dropdown boxes to be refreshed without more often than needed
&lt;li&gt;Removed call to oForm_doReset after each post back because of the change to the dropdowns
&lt;li&gt;Added update of SignUp demo - it now has 3 &quot;linked&quot; controls (two drop-downs and a text field)
&lt;/ul&gt;
&lt;p&gt;1.5.001 - 20061001 0014 twj
&lt;ul class=donors&gt;&lt;li&gt;Added gzip and deflate compression internally
&lt;li&gt;Changed namespace OutPost.Core to OutPost
&lt;li&gt;Removed constant ContentTypeForNoCompression
&lt;/ul&gt;
&lt;p&gt;1.4.004 - 20060928 1107 twj
&lt;ul class=donors&gt;&lt;li&gt;Added error message when trying to view OutPost.aspx directly
&lt;li&gt;Added MinimumSizeForCompression and ContentTypeForNoCompression constants
&lt;/ul&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;If you occasionally look at my blog, please drop me a comment once in a while. It keeps me going :) and hopefully keeps me delivering the best performing indirect ajax framework in the world!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/115966669416504792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/115966669416504792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115966669416504792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115966669416504792'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/09/outpost-version-15.html' title='OutPost version 1.5'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-115943563533294909</id><published>2006-09-28T02:25:00.000-07:00</published><updated>2006-09-28T02:36:17.090-07:00</updated><title type='text'>OutPost 1.4 Refresh</title><content type='html'>&lt;p&gt;I have made som optimizations to version 1.4. Download and update for better performance.&lt;/p&gt;

&lt;p&gt;1.4.003 - 20060928 1107 twj&lt;/p&gt;
&lt;ul class=donors&gt;&lt;li&gt;Changed &quot;SessionID&quot; and &quot;session&quot; to &quot;GUID&quot; and &quot;guid&quot;
&lt;li&gt;Optimized client framework size by removing spaces and replacing variable names
&lt;/ul&gt;

&lt;p&gt;1.4.002 - 20060927 1444 twj&lt;/p&gt;
&lt;ul class=donors&gt;&lt;li&gt;Added default setting of PartsNeeded for GET request
&lt;li&gt;Changed &quot;SessionID&quot; and &quot;session&quot; to &quot;GUID&quot; and &quot;guid&quot;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/115943563533294909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/115943563533294909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115943563533294909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115943563533294909'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/09/outpost-14-refresh.html' title='OutPost 1.4 Refresh'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-115931367567076916</id><published>2006-09-26T16:29:00.000-07:00</published><updated>2006-09-26T16:40:00.203-07:00</updated><title type='text'>OutPost version 1.4</title><content type='html'>&lt;ul class=download&gt;
&lt;li&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost14.zip&quot;&gt;Download OutPost 1.4 (with source code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This release focuses on optimization of traffic between client and server. As a result of moving away from using SOAP I reduced traffic overhead dramatically.&lt;/p&gt;

&lt;p&gt;I also made a &lt;a href=http://hijax.net/Demo&gt;OutPost 1.4 demo site - try it out!&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/115931367567076916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/115931367567076916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115931367567076916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115931367567076916'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/09/outpost-version-14.html' title='OutPost version 1.4'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-115888245950522426</id><published>2006-09-21T16:38:00.000-07:00</published><updated>2006-09-21T16:47:39.516-07:00</updated><title type='text'>OutPost version 1.3</title><content type='html'>&lt;P&gt;Version 1.3 now available.&lt;/P&gt;
&lt;ul class=download&gt;
&lt;li&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost13.zip&quot;&gt;OutPost 1.3 (with source code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A lot of improvements has gone into this release:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;New demo with a Sign-Up web form (by request).
&lt;li&gt;Removed Session dependency.
&lt;li&gt;Restores position and selection in IE on postback.
&lt;li&gt;Found problems with unicode characters. As it is your page must include the tag
ResponseEncoding=&quot;utf-8&quot; in order to work properly with Unicode characters.
&lt;li&gt;Added a cloak (event trap) over the form in IE on postback in order to mimick default web form behaviour.
&lt;li&gt;Added support for WebForm_AutoFocus.
&lt;li&gt;Added support for queueing requests.
&lt;li&gt;Added support for reloading script blocks.
&lt;li&gt;Added setting LocalHost to specify alternative localhost domain.
&lt;li&gt;Added support for HTTP-compression (tested with FlatCompression R1.20.226 from www.flatcompression.org).
&lt;li&gt;A lot of bugs fixed.
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/115888245950522426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/115888245950522426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115888245950522426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/115888245950522426'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/09/outpost-version-13.html' title='OutPost version 1.3'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-114501770200326202</id><published>2006-04-14T05:27:00.000-07:00</published><updated>2006-04-18T04:36:51.126-07:00</updated><title type='text'>BusinessLogic.web - a .NET business logic wrapper for Javascript</title><content type='html'>&lt;p&gt;This is a sample of BusinessLogic.web - A javascript business logic wrapper for ASP.NET.&lt;/p&gt;
    &lt;ul class=download&gt;
    &lt;li&gt;
      &lt;a href=&quot;http://hijax.net/BusinessLogic.web.zip&quot;&gt;Download the ASP.NET 2.0 project for the sample.&lt;/a&gt;
    &lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;
      BusinessLogic.web is Part of dotWeb - A .NET Business Framework for the web under development by beaconware ApS.&lt;/p&gt;
    &lt;p&gt;The aim of this project is to aid the developer in the proces of writing business logic for the right tier - that is the server - and in a compiled language. Most people can agree on that. This wrapper simplifies the proces of making a business entity &lt;b&gt;available&lt;/b&gt; on the client even though it really lives on the server.&lt;/p&gt;
  &lt;p&gt;BusinessLogic.web concerns itself with BUSINESS ONLY and it&#39;s very good at just that.&lt;/p&gt;
  &lt;p&gt;A very cool thing about this tool is, that you don&#39;t have to write web services anymore! Play with it!!&lt;/p&gt;
&lt;ul class=donors&gt;&lt;li&gt;&lt;a href=http://hijax.net&gt;Try online demo&lt;/a&gt;&lt;/ul&gt;

    &lt;h2&gt;Business Classes&lt;/h2&gt;
    
    &lt;p&gt;This is the Person class with the business logic layer.&lt;/p&gt;

    &lt;p&gt;It inherits from dotWeb.Core.Business.Entity, but that is just my own preference, the Entity class is optional, but make sure your business class supports IJsonFormattable, if you don&#39;t inherit from the Entity class!&lt;/p&gt;

    &lt;p&gt;Remember to put [Wrap] attributes on your class and on your public methods to make them available on the client. On the client side public properties will be wrapped like standard javascript properties, but if you want the getter or setter of a property available, like &quot;set_PhoneNumber(value)&quot; then you have to wrap them by specifying the [Wrap] attribute on the &quot;set&quot; symbol.&lt;/p&gt;
    
    &lt;pre&gt;
using System.Data.SqlTypes;
using dotWeb.Core.Scripting;
using dotWeb.Core.Business;

namespace MyCompany.Business.Logic {
  [Wrap]
  public class Person : Entity {
    protected SqlInt32 iId = SqlInt32.Null;
    protected SqlString sName = SqlString.Null;
    protected SqlString sPhoneNumber = SqlString.Null;

    public override SqlInt32 Id {
      get { return iId; }
      set { iId = value; }
    }

    public SqlString Name {
      get { return sName; }
      set { sName = value; }
    }

    public SqlString PhoneNumber {
      get { return sPhoneNumber; }
      [Wrap]
      set { 
        sPhoneNumber = value; 
      }
    }

    [Wrap]
    public void SetProperties(SqlString sName,
      SqlString PhoneNumber) {
      Name = sName;
      PhoneNumber = sPhoneNumber;
    }

    [Wrap]
    public void Save() {
      MyCompany.Data.SavePerson(this);
    }

    public Person(SqlInt32 iId) {
      Id = iId;
      MyCompany.Data.LoadPerson(this);
    }

    public Person() {
    }
  }
}
    &lt;/pre&gt;
    
    &lt;h2&gt;Data layer&lt;/h2&gt;

    &lt;p&gt;This i the data layer. For simplicity the data layer below uses the web server memory instead of a database. For any real life use, implement the database operations.&lt;/p&gt;
    
    &lt;pre&gt;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System;
using MyCompany.Business.Logic;
using dotWeb.Core.Scripting;

namespace MyCompany {
  [Wrap]
  public class Data {
    protected static Dictionary&amp;lt;Int32, Person&amp;gt; 
      oPersonTable = null;

    [Wrap]
    public static Dictionary&amp;lt;Int32, Person&amp;gt; PersonTable {
      get {
        if (oPersonTable == null) {
          //Implement your database loader here ...
          oPersonTable = new Dictionary&amp;lt;Int32, Person&amp;gt;();

          Person oPerson = new Person();
          oPerson.Id = 1;
          oPerson.Name = &quot;Federico Ferris&quot;;
          oPerson.PhoneNumber = &quot;555-6519845&quot;;
          oPersonTable[oPerson.Id.Value] = oPerson;

          oPerson = new Person();
          oPerson = new MyCompany.Business.Logic.Person();
          oPerson.Id = 2;
          oPerson.Name = &quot;Kenneth Williamson&quot;;
          oPerson.PhoneNumber = &quot;555-9877521&quot;;
          oPersonTable[oPerson.Id.Value] = oPerson;

          oPerson = new Person();
          oPerson.Id = 3;
          oPerson.Name = &quot;Jess Nash&quot;;
          oPerson.PhoneNumber = &quot;555-7498888&quot;;
          oPersonTable[oPerson.Id.Value] = oPerson;
        }
        return oPersonTable;
      }
      [Wrap]
      set {
        oPersonTable = value;
      }
    }

    public static void LoadPerson(
      MyCompany.Business.Logic.Person oPerson) {
      if (oPerson.Id.IsNull) {
        oPerson.Id = SqlInt32.Null;
        oPerson.Name = SqlString.Null;
        oPerson.PhoneNumber = SqlString.Null;
      }
      else {
        if (PersonTable.ContainsKey(oPerson.Id.Value)) {
          oPerson.Name = PersonTable[oPerson.Id.Value].Name;
          oPerson.PhoneNumber = 
            PersonTable[oPerson.Id.Value].PhoneNumber;
        }
      }
    }

    public static void SavePerson(
      MyCompany.Business.Logic.Person oPerson) {
      if (!oPerson.Id.IsNull) {
        //Implement your database updater here ...

        if (PersonTable.ContainsKey(oPerson.Id.Value)) {
          PersonTable[oPerson.Id.Value].Name = oPerson.Name;
          PersonTable[oPerson.Id.Value].PhoneNumber = 
            oPerson.PhoneNumber;
        }
        else {
          PersonTable[oPerson.Id.Value] = new Person();
          PersonTable[oPerson.Id.Value].Id = oPerson.Id;
          PersonTable[oPerson.Id.Value].Name = oPerson.Name;
          PersonTable[oPerson.Id.Value].PhoneNumber = 
            oPerson.PhoneNumber;
        }
      }
    }

    public static void DeletePerson(
      MyCompany.Business.Logic.Person oPerson) {
      if (!oPerson.Id.IsNull) {
        //Implement your database deleter here ...

        if (PersonTable.ContainsKey(oPerson.Id.Value)) {
          PersonTable.Remove(oPerson.Id.Value);
        }
      }
    }
  }
}
    &lt;/pre&gt;
    
    &lt;h2&gt;Javascript&lt;/h2&gt;

    &lt;ul class=download&gt;
    &lt;li&gt;
      &lt;a href=&quot;http://hijax.net/BusinessLogic.web.zip&quot;&gt;Download the ASP.NET 2.0 project for the sample.&lt;/a&gt;
    &lt;/li&gt;
    &lt;/ul&gt;

    &lt;h3&gt;Calling a static property setter on MyCompany.Data&lt;/h3&gt;
    
    &lt;pre&gt;    
&amp;lt;script language=Jscript&amp;gt;

  MyCompany.Data.set_PersonTable(null);
  alert(&quot;Person table is now reset.&quot;);

&amp;lt;/script&amp;gt;
    &lt;/pre&gt;

    &lt;h3&gt;Reading Person properties.&lt;/h3&gt;
    
    &lt;pre&gt;   
&amp;lt;script language=Jscript&amp;gt;

  var oPerson = new MyCompany.Business.Logic.Person(1);
  alert(&quot;Person with Id 1 has the following name: &quot;
   + oPerson.Name);

  var oPerson = new MyCompany.Business.Logic.Person(2);
  alert(&quot;Person with Id 2 has the following phone number: &quot; 
    + oPerson.PhoneNumber);

  var oPerson = new MyCompany.Business.Logic.Person(3);
  alert(&quot;Person with Id 3 has the following name: &quot;
    + oPerson.Name);

&amp;lt;/script&amp;gt;
    &lt;/pre&gt;

    &lt;h3&gt;Updating a Persons properties.&lt;/h3&gt;
    
    &lt;pre&gt;      
&amp;lt;script language=Jscript&amp;gt;

  var oPerson = new MyCompany.Business.Logic.Person(1);
  alert(&quot;Person with Id 1 has the following name: &quot; 
    + oPerson.Name + &quot; and phone number: &quot; 
    + oPerson.PhoneNumber);
  
  oPerson.Name = &quot;Brandon Carpenter&quot;;
  oPerson.PhoneNumber = &quot;555-9872112&quot;;

  alert(&quot;Invoking method Person.Save()&quot;);
  oPerson.Save();
  
  var oPerson = new MyCompany.Business.Logic.Person(1);
  alert(&quot;Person with Id 1 now has the following name: &quot; 
    + oPerson.Name + &quot; and phone number: &quot; 
    + oPerson.PhoneNumber);

&amp;lt;/script&amp;gt;
    &lt;/pre&gt;

    &lt;h3&gt;Invoking Person methods.&lt;/h3&gt;
    
    &lt;pre&gt;
&amp;lt;script language=Jscript&amp;gt;

  var oPerson = new MyCompany.Business.Logic.Person(2);

  alert(&quot;Person with Id 2 now has the following name: &quot; 
    + oPerson.Name
    + &quot; and phone number: &quot; + oPerson.PhoneNumber);

  alert(&quot;Now invoking method &quot; 
    + &quot;Person.SetProperties(&#39;Russel Yeager&#39;, &#39;555-987445&#39;)&quot;);
  oPerson.SetProperties(&#39;Russel Yeager&#39;, &#39;555-987445&#39;);

  alert(&quot;Person with Id 2 now has the following name: &quot;
    + oPerson.Name + &quot; and phone number: &quot; 
    + oPerson.PhoneNumber);
&amp;lt;/script&amp;gt;
    &lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/114501770200326202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/114501770200326202' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/114501770200326202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/114501770200326202'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/04/businesslogicweb-net-business-logic.html' title='BusinessLogic.web - a .NET business logic wrapper for Javascript'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-114354477839969761</id><published>2006-03-28T03:15:00.000-08:00</published><updated>2006-03-28T04:32:30.863-08:00</updated><title type='text'>reboot8 &quot;renaissance?&quot;</title><content type='html'>&lt;div style=&quot;width:480px;overflow:hidden&quot;&gt;&lt;img style=&quot;border-style:none&quot; border=0 src=http://reboot.dk/images/header.png&gt;&lt;/div&gt;
&lt;p&gt;It&#39;s time for reboot8, which this year will take place in Copenhagen on June 1- 2 (Thursday and Friday). Same venue; better food; dinner, lounge and entertainment the first evening. More conversation; More Europeans doing interesting things; and still as informal and open an atmosphere as always, hopefully...&lt;/p&gt;

&lt;H2&gt;THE CHALLENGE&lt;/H2&gt;

&lt;p&gt;The theme for reboot8 is &quot;renaissance?&quot; - as in renaissance-question-mark. As in renaissance = rediscovery and revitalization. Question mark because it&#39;s a big word and a question to explore whether it&#39;s real, but renaissance because it seems as a healthier and more challenging perspective than the current bubble easy-reality buzzwords currently flowing around. So reboot8 is like reboot7 a journey into the interconnectedness of creation, participation, values, openness, decentralization, collaboration, complexity, technology, p2p, humanities, connectedness and many more areas. Applied towards us as individuals, citizens, teachers, culture workers, entrepreneurs, creators and change makers. &lt;/p&gt;

&lt;p&gt;It feels like we more should think a lot about the emerging new models and how we can help shape them, instead of focusing on how the new models are superior to the current models.&lt;/p&gt;

&lt;p&gt;Explore renaissance question mark at &lt;a href=http://reboot.dk/wiki/renaissance&gt;http://reboot.dk/wiki/Renaissance&lt;/a&gt;&lt;/p&gt;

&lt;H2&gt;THE PLATFORM&lt;/H2&gt;

&lt;p&gt;Unlike previous years there isn&#39;t a final speakers list or a black box creation model. reboot is a platform for bringing the European community together, a platform for conversations and relationships, a platform for sharing visions and meeting the people you didn&#39;t think you&#39;d meet.&lt;/p&gt;

&lt;p&gt;So the platform is all yours, and this is an invitation to participate and help co-create reboot..:&lt;/p&gt;

- an invitation to submit topics you would like on the agenda for reboot
- an invitation to submit pointers to interesting people you know in your country that has something to contribute, and help us recruit them to come
- an invitation for your proposal to host or present if you&#39;ve been doing some interesting thinking the last year or have created something that&#39;s worth sharing.
- an invitation for you to help make sure that we have the people that have open minds and are ready to make a difference at reboot. to connect europe, to widen the community, to add perspective.
&lt;p&gt;Help co-create reboot8 at &lt;a href=http://reboot.dk/wiki/Participate&gt;http://reboot.dk/wiki/Participate&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/114354477839969761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/114354477839969761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/114354477839969761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/114354477839969761'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/03/reboot8-renaissance.html' title='reboot8 &quot;renaissance?&quot;'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-114035634369560326</id><published>2006-02-19T05:39:00.000-08:00</published><updated>2006-04-13T19:42:14.776-07:00</updated><title type='text'>Ajax for Business Logic</title><content type='html'>&lt;p&gt;I created a &lt;b&gt;JavaScript&lt;/b&gt; Wrapper for my C# Business Logic classes. You specify which dll to &quot;wrap&quot; and the wrapper spits out javascript.&lt;/p&gt;

&lt;p&gt;The result is that you can write near-C# language in JavaScript! I have all the &lt;b&gt;public classes, constructors, public constants, public methods and public properties&lt;/b&gt; available client side in javascript.&lt;/p&gt;

&lt;p&gt;The methods and constructors are just &quot;empty&quot; functions that check if the correct number of parameters are specified and then perform a &lt;i&gt;synchronous&lt;/i&gt; web service call. The web service then invokes the constructor or method and returns the resulting value.&lt;/p&gt;

&lt;p&gt;This means that you don&#39;t need to write &lt;i&gt;hundreds of web services and web service methods&lt;/i&gt; when you need to interact with the business entities and business logic.&lt;/p&gt;

&lt;p&gt;In respect to security the wrapper only wraps &lt;b&gt;public&lt;/b&gt; classes and namespaces. And furthermore it checks that a &lt;b&gt;[Wrap]&lt;/b&gt; attribute is present.&lt;/p&gt;

&lt;p&gt;For even more security WSE provides a mechanism to digitally sign SOAP messages.&lt;/p&gt;

&lt;H2&gt;Examples:&lt;/H2&gt;

&lt;P&gt;Creating an instance of &lt;code&gt;Business.Logic.ContractSale&lt;/code&gt; using the constructor that takes an id as parameter, invoking &lt;code&gt;Validate()&lt;/code&gt; and &lt;code&gt;Accept(DateTime oDateAccepted)&lt;/code&gt; on the instance.&lt;/P&gt;

&lt;PRE&gt;
  var oContractSale = 
    new Business.Logic.ContractSale(iCSal_Id);

  if (oContractSale.Validate()) {
    oContractSale.Accept(new Date());
  }
  else {
    alert(&quot;Sales contract is not valid!&quot;);
  }
&lt;/PRE&gt;

&lt;P&gt;Creating a new instance of &lt;code&gt;Business.Logic.InvoiceSale&lt;/code&gt; setting properties and invoking method &lt;code&gt;Save()&lt;/code&gt; on the instance.&lt;/P&gt;

&lt;PRE&gt;
  var oInvoiceSale = 
    new Business.Logic.InvoiceSale();

  oInvoiceSale.DateInvoice = new Date();
  oInvoiceSale.Amount = 150;
  oInvoiceSale.Currency = Business.Logic.Currency.USD;
  oInvoiceSale.Save();
&lt;/PRE&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/114035634369560326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/114035634369560326' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/114035634369560326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/114035634369560326'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/02/ajax-for-business-logic_19.html' title='Ajax for Business Logic'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-113994980187558086</id><published>2006-02-14T12:41:00.000-08:00</published><updated>2006-02-14T12:43:21.876-08:00</updated><title type='text'>Hijax.NET?</title><content type='html'>&lt;p&gt;I am considering a new name for OutPost, what do you think about &lt;b&gt;Hijax.NET&lt;/b&gt;?&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/113994980187558086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/113994980187558086' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/113994980187558086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/113994980187558086'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/02/hijaxnet.html' title='Hijax.NET?'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-113985692934126946</id><published>2006-02-13T10:48:00.000-08:00</published><updated>2006-03-03T01:06:44.426-08:00</updated><title type='text'>OutPost 1.2</title><content type='html'>&lt;P&gt;Version 1.2 now available.&lt;/P&gt;
&lt;ul class=download&gt;
&lt;li&gt;&lt;a href=&quot;http://pbox.upfrontweb.com/OutPost12.zip&quot;&gt;OutPost 1.2 (with source code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;http://pbox.upfrontweb.com/OutPost.jpg&quot; alt=&quot;A screenshot of The iGoogle Demo&quot; width=400 height=235&gt;&lt;br&gt;Screenshot of &quot;The iGoogle Demo&quot; in the demo project&lt;/p&gt;
&lt;UL&gt;
&lt;LI&gt;Support for client event validation.
&lt;LI&gt;Support for server event validation.
&lt;LI&gt;Support for form validation.
&lt;LI&gt;Support for inputs with type=image.
&lt;LI&gt;Support for object databinding.
&lt;LI&gt;Full cross-browser support without need for ATLAS scripts.
&lt;LI&gt;Added Session support on first post back.
&lt;LI&gt;Added Response.Filter to take advantage of differences on first post back.
&lt;LI&gt;Support for Netscape.
&lt;LI&gt;Support for Opera.
&lt;LI&gt;Support for Opera.
&lt;LI&gt;Support for Visual Studio 2005
&lt;LI&gt;Support for both ASP.NET 1.1 and ASP.NET 2.0
&lt;LI&gt;Support for HTTPS/SSL
&lt;/UL&gt;
&lt;P&gt;Please give feedback!&lt;/P&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/113985692934126946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/113985692934126946' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/113985692934126946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/113985692934126946'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2006/02/outpost-12.html' title='OutPost 1.2'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13566637.post-113079426827369207</id><published>2005-10-31T13:18:00.000-08:00</published><updated>2005-10-31T14:38:35.120-08:00</updated><title type='text'>Executing multi-valued web service calls from javascript</title><content type='html'>&lt;P&gt;I&#39;m currently working hard on a web based business system for a 
theatre agency here in Denmark. Client-side business logic communicates through web service calls with server-side business logic.&lt;/P&gt;

&lt;P&gt;I&#39;m using the web service proxies that &lt;a href=http://ajaxaspects.blogspot.com/&gt;Matthias Hertels AJAX Engine&lt;/a&gt; generates,
but I was unable to use &lt;code&gt;ajax.Start&lt;/code&gt; to execute multi-valued calls.&lt;/P&gt;

&lt;P&gt;Maybe I overlooked something? :) Anyway, I came up with a fix for it...&lt;/P&gt;
 
&lt;P&gt;This an example of a multi-valued call:&lt;/P&gt;

&lt;PRE&gt;
  ...
  var Add = {
    delay: 200,
    prepare: function() { return [34, 23]; },
    call: proxies.AddService.Add,
    finish: function (p) {
      alert(&quot;Sum: &quot; + p);
    },
    onException: proxies.alertException
  };

  ajax.Start(Add);
  ...
&lt;/PRE&gt;
 
&lt;P&gt;I changed some lines in &lt;code&gt;Ajax.js&lt;/code&gt;. After this:&lt;/P&gt;

&lt;PRE&gt;
      ...      
      // start the call
      ca.call.func = ajax.Finsh;
      ca.call.onException = ajax.Exception;
&lt;/PRE&gt;

&lt;P&gt;I added this:&lt;/P&gt;

&lt;PRE&gt;
      // multi-valued call (new)
      if ((typeof(data)==&quot;object&quot;) &amp;&amp; (data!=null) &amp;&amp; data.length) {
        ca.args = new Object();
        var aArg = new Array();
        for (var i = 0; i&amp;lt;data.length; i++) {
          ca.args[&quot;a&quot; + i] = data[i];
          aArg[aArg.length] = &quot;a&quot; + i;
        }
        with (ca.args) {
          eval(&quot;ca.call(&quot; + aArg.join(&quot;,&quot;) + &quot;)&quot;);
        }
      }
      // single-valued call
      else { 
        ca.call(data);
      }      
      ...
&lt;/PRE&gt;

&lt;P&gt;And it worked. I hope you can use this.&lt;/P&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharpedge.blogspot.com/feeds/113079426827369207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/13566637/113079426827369207' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/113079426827369207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13566637/posts/default/113079426827369207'/><link rel='alternate' type='text/html' href='http://csharpedge.blogspot.com/2005/10/executing-multi-valued-web-service.html' title='Executing multi-valued web service calls from javascript'/><author><name>Troels Wittrup</name><uri>http://www.blogger.com/profile/15438685558423299625</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbA9C2_ICX6Plr-fDt3Ax0AwEkJOQm7PC9vQCCzKDWDZ-BrcLBgudCd94dzeAXvEJMDmLzHxhVskYgpVssMK8nIfUj5o-Hkk8sAosRq4aQZHLs5hkSYeHF15Ghuv294Q/s220/bcc.jpg'/></author><thr:total>2</thr:total></entry></feed>