<?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: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-1432457979664159429</id><updated>2012-02-17T04:16:52.315+01:00</updated><category term='DDoS attack'/><category term='setup'/><category term='jQuery'/><category term='license compiler'/><category term='release tagging'/><category term='major upgrade'/><category term='CSS'/><category term='.NET deployment'/><category term='lc.exe'/><category term='hyphenation'/><category term='vulnerability'/><category term='open Source'/><category term='upgrade path'/><category term='round corner'/><category term='MSI'/><category term='GPL'/><category term='Hyphen'/><category term='web load stress tool'/><category term='transparency'/><category term='spell checker'/><category term='plugin'/><category term='systems'/><category term='div'/><category term='WiX'/><category term='internet'/><category term='installer'/><category term='connection pooling wcf named pipes'/><category term='layout'/><category term='web project urlaub reisen ferien'/><category term='background'/><category term='ORM persistent framework synchronization DataObjects.NET backup upgrade'/><category term='MSE-iT Upgrade Framework'/><category term='bootstrapper'/><category term='JavaScript'/><category term='hunspell'/><category term='bitmap'/><category term='CodePlex'/><title type='text'>MSE-iT - Software Development</title><subtitle type='html'>Object oriented application development on top of the Microsoft .NET 3.5 Framework. With a special focus on object persistence and ORM</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.mse-it.de/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-2506004939410142461</id><published>2009-08-24T16:40:00.003+02:00</published><updated>2009-08-24T16:52:24.209+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='license compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='lc.exe'/><title type='text'>lc.exe exited with code -1 and how to fix it</title><content type='html'>LC.EXE is the Visual Studio license compiler. It compiles licenses and includes them in the assembly resources. The license compiler returns -1 when a licensed component is removed.&lt;br /&gt;&lt;br /&gt;Fix:&lt;br /&gt;Under the &lt;span style="font-style: italic;"&gt;Properties&lt;/span&gt; Folder in the Project folder you find the file &lt;span style="font-style: italic;"&gt;licenses.licx&lt;/span&gt;. You must open this file and remove the reference to the component. And you must remove the Reference in the assembly references as well. After that the project will compile without an error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-2506004939410142461?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/2506004939410142461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=2506004939410142461' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/2506004939410142461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/2506004939410142461'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2009/08/lcexe-exited-with-code-1-and-how-to-fix.html' title='lc.exe exited with code -1 and how to fix it'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-5899178179935461457</id><published>2009-02-22T13:06:00.003+01:00</published><updated>2009-02-22T13:17:36.442+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hyphen'/><category scheme='http://www.blogger.com/atom/ns#' term='spell checker'/><category scheme='http://www.blogger.com/atom/ns#' term='hunspell'/><category scheme='http://www.blogger.com/atom/ns#' term='hyphenation'/><title type='text'>Spell checking and Hypenation- the .NET way of Hunspell</title><content type='html'>On our homepage i use a .NET based CMS which is able to hyphenate the text with soft hyphens (SHY). I've used a large dictionary for this, but i want to improve this a little. If you google spell checking and hyphenation you fill find sooner or later Hunspell. Hunspell is the spell checker used in &lt;a href="http://www.openoffice.org/"&gt;OpenOffice &lt;/a&gt;and &lt;a href="http://www.mozilla.com/"&gt;Mozilla Firefox 3 &amp;amp; Thunderbird&lt;/a&gt;.Unfortunally this is C and C++ code and not .NET. So i looked at the library and see it is only x86 and ugly to marshall. The simple PInvoke way was obstructed.&lt;br /&gt;&lt;br /&gt;I decided to use managed C++ to port this code to .NET and implement a proxy patetrn to use the original code wih only little modifications. I've hosted this project on Sourceforge and gave it the name NHunspell for .NET Hunspell. This is the project URL:&lt;br /&gt;&lt;a href="http://nhunspell.sourceforge.net"&gt;http://nhunspell.sourceforge.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hunspell is tri licenced under GPL/LGPL/MPL, and NHunspell follows this. If you nedd a spell checker for the :NET plattform you can give it a try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-5899178179935461457?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/5899178179935461457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=5899178179935461457' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5899178179935461457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5899178179935461457'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2009/02/spell-checking-and-hypenation-net-way.html' title='Spell checking and Hypenation- the .NET way of Hunspell'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-5286216406920145457</id><published>2009-01-22T00:26:00.004+01:00</published><updated>2009-01-22T10:48:42.234+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web load stress tool'/><category scheme='http://www.blogger.com/atom/ns#' term='connection pooling wcf named pipes'/><title type='text'>Web Application Stress Test</title><content type='html'>Ok, sometimes i regret having windows vista 64Bit on my development machine. An today was such a day. I tried to set up a web stress environment for our new web portal. &lt;br /&gt;&lt;br /&gt;I tried several great tools like OpenSTA and WebLoad to run on my Windows Vista, but nothing worked. The i downloaded quite angry the good old Web Application Stress tool from Microsoft and run it as admin. And it works. &lt;br /&gt;&lt;br /&gt;Our new Portal has its business logic on a .NET based windows service, so i want to test interprocess communication via WCF and a named pipes channel. The WAS tool works great for this and i could tune my IPC to get a throughput of about 80 pages per second. I think this isn't so bad for WCF. But i try to become better.&lt;br /&gt;&lt;br /&gt;Addition: &lt;br /&gt;I've used a channel pool for my wcf channels ad come now to 1000 / pages per second. A roundtrip of a simple function ( bool Test(bool foo ); ) need about 50uS on a named pipes channel. The processing of the on the IIS takes much longer. For now the things have become right. I can place the business logic on the app server and get a killer throughput because of efficient caching. This is the way i like web applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-5286216406920145457?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/5286216406920145457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=5286216406920145457' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5286216406920145457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5286216406920145457'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2009/01/web-application-stress-test.html' title='Web Application Stress Test'/><author><name>Thomas Maierhofer</name><uri>http://www.blogger.com/profile/02100476670558752733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-5499422146076835585</id><published>2009-01-18T01:07:00.004+01:00</published><updated>2009-01-18T01:16:04.505+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web project urlaub reisen ferien'/><title type='text'>Launch of new Web portal: Urlaub und Reisen Profis.de</title><content type='html'>We have launched the development of a new web portal for travel agencies. It is hosted on origo a the ETH Zurich in Swizzerland. This project is the first big test for our new web technologies. It is programmed in C# with the .NET 3.5 Framework.&lt;br /&gt;&lt;br /&gt;Project URL:&lt;br /&gt;&lt;a href="http://urlaub-und-reisen-profis.origo.ethz.ch/"&gt;http://urlaub-und-reisen-profis.origo.ethz.ch/ &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Origo is a great hosting site for open and closed source projects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="seolinx-tooltip" style="border: 1px solid rgb(0, 0, 0); margin: 0pt; padding: 0pt; display: none; opacity: 0.9; position: absolute; width: auto; z-index: 99999;"&gt;&lt;table style="border: 0pt none ; margin: 0pt; padding: 0pt; border-collapse: separate; width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td id="seolinx-table" style="border: 0pt none ; margin: 1px; padding: 0pt; font-family: Tahoma; font-size: 11px; font-weight: bold;"&gt;&lt;div style="margin: 0pt; padding: 0pt; overflow: auto; width: auto;"&gt;&lt;table id="seolinx-paramtable" style="border: 1px solid gray; margin: 0pt; border-collapse: separate;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;img src="http://toolbarqueries.google.com/favicon.ico" style="vertical-align: middle;" width="12" height="12" /&gt; PR: &lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="0" type="param" title="Google pagerank" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;img src="http://www.google.com/favicon.ico" style="vertical-align: middle;" width="12" height="12" /&gt; I: &lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="1" type="param" title="Google index" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;img src="http://www.google.com/favicon.ico" style="vertical-align: middle;" width="12" height="12" /&gt; L: &lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="2" type="param" title="Google links" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;img src="http://siteexplorer.search.yahoo.com/favicon.ico" style="vertical-align: middle;" width="12" height="12" /&gt; LD: &lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="12" type="param" title="Yahoo linkdomain" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;img src="http://search.msn.com/favicon.ico" style="vertical-align: middle;" width="12" height="12" /&gt; I: &lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="20" type="param" title="MSN index" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="40" type="param" title="Sitemap.xml" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;img src="http://siteanalytics.compete.com/favicon.ico" style="vertical-align: middle;" width="12" height="12" /&gt; C: &lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="108" type="param" title="Compete Rank" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;td style="border: 1px solid gray; padding: 2px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: darkgreen; font-family: Tahoma; font-size: 7pt; font-weight: bold; white-space: nowrap;"&gt;&lt;img src="http://seodigger.com/favicon.ico" style="vertical-align: middle;" width="12" height="12" /&gt; SD: &lt;a style="color: blue; font-family: Tahoma; font-size: 7pt; font-weight: bold; text-decoration: underline;" index="112" type="param" title="Seodigger" href="javascript:{}"&gt;wait...&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="border: 0pt none ; margin: 0pt; padding: 1px; cursor: pointer; vertical-align: middle; width: auto;" id="seolinx-tooltip-close" title="close"&gt;&lt;img src="chrome://seoquake/content/skin/close.gif" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-5499422146076835585?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/5499422146076835585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=5499422146076835585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5499422146076835585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5499422146076835585'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2009/01/launch-of-new-web-portal-urlaub-und.html' title='Launch of new Web portal: Urlaub und Reisen Profis.de'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-982385310312668199</id><published>2008-12-10T14:03:00.003+01:00</published><updated>2008-12-10T14:14:11.800+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='systems'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='vulnerability'/><title type='text'>UPS Update killed our web server</title><content type='html'>Our web hoster (big German hosting company)  has updated his UPS today and killed our web servers. Therefore our servers are down. They (hopefully) fix this today. This is quite annoying, because we had a DDos Attack last month.  That shows again the vulnerability of Internet based systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-982385310312668199?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/982385310312668199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=982385310312668199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/982385310312668199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/982385310312668199'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/12/ups-update-killed-our-web-server.html' title='UPS Update killed our web server'/><author><name>Thomas Maierhofer</name><uri>http://www.blogger.com/profile/02100476670558752733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-5317421727208051679</id><published>2008-12-04T23:21:00.003+01:00</published><updated>2008-12-04T23:34:26.734+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bootstrapper'/><category scheme='http://www.blogger.com/atom/ns#' term='bitmap'/><category scheme='http://www.blogger.com/atom/ns#' term='transparency'/><title type='text'>MSE-iT Setup Bootstrapper first Demo</title><content type='html'>I've just released a small demo, with only two pages. The background and the software box are merged together with the new support of 32bit bitmaps with alpha channel.&lt;br /&gt;&lt;br /&gt;The background drawing consists of four overlapped bitmaps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;dialog background bitmap&lt;br /&gt;It displays the general background and the logo. Alle background elments who are immutable.&lt;/li&gt;&lt;li&gt;page background bitmap&lt;br /&gt;It displays the background for a page. It is alpha blended over the dialog background, and contains only the additional elements for the page background&lt;/li&gt;&lt;li&gt;dialog background localized bitmap&lt;br /&gt;It displays text and other things, which are different for every language, but immutable for the dialog.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;page background localized background&lt;br /&gt;It displays text and other things, which are different for every language and page.&lt;/li&gt;&lt;/ol&gt;You can download and test the bootstrapper here:    &lt;br /&gt;&lt;a href="http://www.codeplex.com/MseItSetupBootstrap"&gt;MSE-iT Setup Bootstrapper&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-5317421727208051679?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/5317421727208051679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=5317421727208051679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5317421727208051679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5317421727208051679'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/12/mse-it-setup-bootstrapper-first-demo.html' title='MSE-iT Setup Bootstrapper first Demo'/><author><name>Thomas Maierhofer</name><uri>http://www.blogger.com/profile/02100476670558752733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-8316979542766001881</id><published>2008-11-29T00:39:00.006+01:00</published><updated>2008-11-29T00:48:57.364+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='WiX'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='bootstrapper'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='installer'/><title type='text'>MSE-iT Setup Bootstrapper is now open source</title><content type='html'>Ever installed a .NET application?  Windows Installer XML (WiX) is really great to develop your MSI packages. But what if the user hasn't installed the .NET Framework oder some other prerequisites? Then you need a bootstrapper! A bootstrapper is a program, mostly SETUP.EXE that does the dirty job for you. But you can't develop a bootstrapper in C#, because of the missing .NET Framework. MSE-iT has a nice bootstrapper written in C++ with a very small footprint. We will use this for our brand new accounting software for travel agencies. And i will provide it to the community:&lt;br /&gt;&lt;br /&gt;Project on CodePlex:&lt;br /&gt;&lt;a href="http://www.codeplex.com/MseItSetupBootstrap"&gt;MSE-iT Setup Bootstrapper&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The project is in Setup stage, it will be available in a view days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-8316979542766001881?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/8316979542766001881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=8316979542766001881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/8316979542766001881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/8316979542766001881'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/11/mse-it-setup-bootstrapper-is-now-open.html' title='MSE-iT Setup Bootstrapper is now open source'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-5312694242451380979</id><published>2008-11-25T13:52:00.003+01:00</published><updated>2008-11-25T14:17:07.459+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE-iT Upgrade Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='GPL'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='open Source'/><title type='text'>Project MSE-iT Upgrade Framework starts</title><content type='html'>As mentioned in previous posts, i want to have a declarative way to tag upgrades in code. After some research i came to conclusion that this can be separated in a own library or framework. It should bring a generalized form to tag upgrades to a object model. Any object persistence implementation can use this framework to generate upgrades and downgrades of persistent data.&lt;br /&gt;&lt;br /&gt;To put it simply: The framework expresses an upgrade and an downgrade path for a type:&lt;br /&gt;Upgrade("TypeName") -&gt; List&lt;actionstoupgrade&gt;&lt;br /&gt;Downgrade("TypeName") -&gt; List&lt;actionstodowngrade&gt;&lt;br /&gt;&lt;br /&gt;The backup and sync provider can use this list to perform the real actions on the datastore. Of course this methods don't exist because real world upgrade scenarios are more complex. I will publish the real API on first release. &lt;br /&gt;&lt;br /&gt;The project will be hosted on CodePlex, open source, GPL licensed and is currently in setup state. Hiere is the Project: &lt;a href="http://www.codeplex.com/MseItUpgrade/"&gt;MSE-iT Upgrade Framework on CodePlex&lt;/a&gt; But for the moment, it is not published. I will post when i check in the initial development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-5312694242451380979?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/5312694242451380979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=5312694242451380979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5312694242451380979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5312694242451380979'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/11/project-mse-it-upgrade-framework-starts.html' title='Project MSE-iT Upgrade Framework starts'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-7280438670524650639</id><published>2008-11-21T16:37:00.002+01:00</published><updated>2008-11-21T16:48:10.333+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DDoS attack'/><title type='text'>DDoS Attac on InterNetX nameservers</title><content type='html'>Our servers and this blog was down because of a DDoS attack on our domain registrar InterNetX. That shows again the vulnerability of Internet based applications and the importance of a distributed infrastructure. I'll continue working on synchronization issues, to protect systems against this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-7280438670524650639?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/7280438670524650639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=7280438670524650639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/7280438670524650639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/7280438670524650639'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/11/ddos-attac-on-internetx-nameservers.html' title='DDoS Attac on InterNetX nameservers'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-2002121667813624711</id><published>2008-11-16T21:41:00.004+01:00</published><updated>2008-11-16T22:30:44.149+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='div'/><category scheme='http://www.blogger.com/atom/ns#' term='layout'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='background'/><category scheme='http://www.blogger.com/atom/ns#' term='round corner'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery backgroundCanvas update</title><content type='html'>Do you know jQuery? It is a famous JavaScript framework for DOM manipulation.&lt;br /&gt;&lt;br /&gt;It was turn of the year 2007/2008, i asked about design possibilities for our new homepage. Because our new software has a "Office 2007 Ribbon", i want to have round corners, gradients and a fluent layout. Staff members told me, this is impossible because you cannot have scaling background gradient images in CSS. And if we will clutter the html markup with layouting DIVs, we will be ranked badly by Google. I thought: Search engine optimization is important, this argument strikes. But i don't want to give up, therefore i looked in my spare time after other solutions. I was new in web developement and everybody told me, that i wouldn't find something. Ok, the web pros know what they talk about? Or not:&lt;br /&gt;&lt;br /&gt;I found an interesting HTML element, which brings the solution: The canvas. Inserting a canvas object in the web page and drawing on it gives all the possibilities i want to have. I've developed a jQuery plugin for this in my spare time and it is great. Look at my private homepage: &lt;br /&gt;&lt;a href="http://www.maierhofer.de/BackgroundCanvas.htm"&gt;jQuery backgroundCanvas plugin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've just moved the source to Goggle Code and updated it. It is licensed under LGPL and easy to use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-2002121667813624711?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/2002121667813624711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=2002121667813624711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/2002121667813624711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/2002121667813624711'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/11/jquery-backgroundcanvas-update.html' title='jQuery backgroundCanvas update'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-4765084604446823271</id><published>2008-11-11T10:48:00.004+01:00</published><updated>2008-11-11T13:54:51.242+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='upgrade path'/><category scheme='http://www.blogger.com/atom/ns#' term='major upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='release tagging'/><title type='text'>Upgrade path declaration for automatic upgrade and downgrade of persistent data</title><content type='html'>In persistence frameworks peer synchronization  and restore of backups requires knowledge about older versions. To follow the SCSE pattern from x-tensive upgrade paths should be declared in the object model.&lt;br /&gt;&lt;br /&gt;If the domain-model changes, it is in general necessary to upgrade the clients too. In windows installer terms, these kind of upgrades are called "major upgrade", because the change of the model will almost always break the interoperability to related assemblies.    &lt;br /&gt;&lt;br /&gt;Important: The term "major upgrade" has nothing to do with the version numbering schema of assemblies which has a major version and minor version. But a major upgrade should have at least a minor version number upgrade.&lt;br /&gt;&lt;br /&gt;An upgrade path is a linear path along major upgrades (releases):&lt;br /&gt;&lt;pre&gt;V1.1.x -&gt; V1.2.x -&gt; V2.0.x -&gt; V2.1.x -&gt; V2.2.x&lt;/pre&gt;There are at least six primitive upgrade operations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;persistent class added&lt;/li&gt;&lt;li&gt;persistent class renamed&lt;/li&gt;&lt;li&gt;persistent class removed&lt;/li&gt;&lt;li&gt;persistent field added&lt;/li&gt;&lt;li&gt;persistent field renamed&lt;/li&gt;&lt;li&gt;persistent field removed&lt;/li&gt;&lt;/ul&gt;To declare this,  three attributes are announced:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;RelAdded for adding a class or a field&lt;br /&gt;&lt;/li&gt;&lt;li&gt;RelRenamed for renaming a class or a field&lt;/li&gt;&lt;li&gt;RelDeleted for deleting a class or a field&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;This is an example of a class with release attributes: &lt;br /&gt;&lt;pre name="code" class="C#"&gt;&lt;br /&gt;[assembly: RelGroup("MseIt.Persistency.UnitTests")]&lt;br /&gt;[assembly: RelDeleted("MseIt.Persistency.UnusedClass", Release.B_0_2)]&lt;br /&gt;&lt;br /&gt;namespace MseIt.Persistency&lt;br /&gt;{&lt;br /&gt;    static public class Release&lt;br /&gt;    {&lt;br /&gt;        public const int B_0_1 = 1;&lt;br /&gt;        public const int B_0_2 = 2;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   [Sync]&lt;br /&gt;   [RelAdded(Release.B_0_1)]&lt;br /&gt;   [RelRenamed("MseIt.Persistency.UpdatedClass",Release.B_0_2)]&lt;br /&gt;   [RelDeleted("Payload",Release.B_0_2)]&lt;br /&gt;   class UpdatedEntity : SyncEntity&lt;br /&gt;   {&lt;br /&gt;       [Field]&lt;br /&gt;       [RelAdded(Release.B_0_1)]&lt;br /&gt;       public string Payload1 { get; set;  }&lt;br /&gt;&lt;br /&gt;       [Field]&lt;br /&gt;       [RelAdded(Release.B_0_2)]&lt;br /&gt;       public string Payload2 { get; set; }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A upgrade path is extractable from this declarations. So a automatic upgrade can be performed on restoring old data or synchronizing with peers having previous versions.&lt;br /&gt;&lt;br /&gt;Additionaly it is a nice documentation which modifications are done on a specific release. External tools could check this update information for consistency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-4765084604446823271?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/4765084604446823271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=4765084604446823271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/4765084604446823271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/4765084604446823271'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/11/upgrade-path-declaration-for-automatic.html' title='Upgrade path declaration for automatic upgrade and downgrade of persistent data'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-8146362650510149651</id><published>2008-11-07T17:03:00.005+01:00</published><updated>2008-11-07T18:39:11.604+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ORM persistent framework synchronization DataObjects.NET backup upgrade'/><title type='text'>The need for a unique Syncronsation, Update and Backup in Persistence Frameworks</title><content type='html'>Long time ago I've head the idea of combining the synchronization issues, backups  and the update process together. Our application for travel agency accounting is based on a SQL Server and installed in hundreds of travel agencies in Germany. About one third uses SQL replications to synchronize data with their branch offices or for telework.&lt;br /&gt;&lt;br /&gt;Now we need solutions for the following problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The sql servers connected via replications must be updated together&lt;/li&gt;&lt;li&gt;Software upgrades requires downtime of the application&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Restoring an old backup of the data requires an upgrade of the SQL database&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Crash of the consolidated database requires a complete regeneration of the replication from one of the remote databases&lt;/li&gt;&lt;li&gt;Crash of the remote database requires generating a new database from the consolidated database&lt;/li&gt;&lt;li&gt;And so on...&lt;/li&gt;&lt;/ul&gt;With the new system we want:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Upgrade our product with no downtime&lt;/li&gt;&lt;li&gt;Upgrade branch offices and teleworkers step by step with no downtime&lt;/li&gt;&lt;li&gt;Restore backups of old versions with automatic upgrade&lt;/li&gt;&lt;li&gt;Restore a backup in a branch office and synchronize it to the head office&lt;/li&gt;&lt;li&gt;synchronize between branch offices if the head office becomes unavailable (peer sync)&lt;/li&gt;&lt;/ul&gt;This could only be reached, if we put the upgrade and synchronization layer in the business logic. This is the goal for the synchronization, backup and upgrade framework on top of the famous DataObject.NET 4.0 from x-tensive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-8146362650510149651?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/8146362650510149651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=8146362650510149651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/8146362650510149651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/8146362650510149651'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/11/need-for-unique-syncronsation-update.html' title='The need for a unique Syncronsation, Update and Backup in Persistence Frameworks'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432457979664159429.post-5871384819013198536</id><published>2008-11-06T14:50:00.006+01:00</published><updated>2008-11-06T17:31:57.782+01:00</updated><title type='text'>Switch to the persistency framework Data Objects.NET 4.0</title><content type='html'>Long time ago I've decided to use &lt;a href="http://www.x-tensive.com/"&gt;DataObjects.NET&lt;/a&gt; as ORM framework. The content management of our company homepage &lt;a href="http://www.mse-it.de/"&gt;www.mse-it.de&lt;/a&gt; relies soley on it. It also uses some JQuery plugins for layouting. You can find them on my private homepage under &lt;a href="http://www.maierhofer.de/JQueryProjects.htm"&gt;JQuery Projects&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A view months ago they announced the new 4.0 version. It is licenced under GPL and comes along with some propertiary licence models. It is a awesome framework, with goundbreaking changes to any ORM i know.&lt;br /&gt;&lt;br /&gt;But i miss some important things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Syncronsiation or replication like SQL - but on the level of business objects&lt;/li&gt;&lt;li&gt;Update and upgrade support&lt;/li&gt;&lt;li&gt;Backup and resorte support &lt;/li&gt;&lt;/ul&gt;So i've decided to use syncronsation and distribution knowledge from our software for travel agencies (comes with replication, backup update and so on) and build a framework for it that is able to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Syncronize&lt;/li&gt;&lt;li&gt;Backup&lt;/li&gt;&lt;li&gt;Deploy&lt;/li&gt;&lt;/ul&gt;In the moment i am working on syncronisation and update issues. Because x-tensive follows the "sorce code is source of everything" (SCSE) pattern, i will do too.&lt;br /&gt;&lt;br /&gt;Here is a sample class form my NUnit tests:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="C#"&gt;&lt;br /&gt;[Sync]&lt;br /&gt;class TestEntity : SyncEntity&lt;br /&gt;{&lt;br /&gt;   [Field]&lt;br /&gt;   [RevAdd(Rev.B_0_1)]&lt;br /&gt;   public string Payload { get; set;  }&lt;br /&gt;&lt;br /&gt;   [Field]&lt;br /&gt;   [RevAdd(Rev.B_0_1)]&lt;br /&gt;   [RevRenamed("FieldNoSync",Rev.B_0_1)]&lt;br /&gt;   [SyncVersionNoUpdate]&lt;br /&gt;   public string FieldWithSyncVersionNoUpdate { get; set; }&lt;br /&gt;&lt;br /&gt;   public string NoFieldProperty&lt;br /&gt;   {&lt;br /&gt;       get { return "";  }&lt;br /&gt;       set {}&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;The RevXXX (Revision) attributes will tell the framework when a property is introduced, deleted or the name changed. So the backup and synchronization layer can automatically do the necessary transformations between the versions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432457979664159429-5871384819013198536?l=blog.mse-it.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mse-it.de/feeds/5871384819013198536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1432457979664159429&amp;postID=5871384819013198536' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5871384819013198536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432457979664159429/posts/default/5871384819013198536'/><link rel='alternate' type='text/html' href='http://blog.mse-it.de/2008/11/switch-to-persistency-framework-data.html' title='Switch to the persistency framework Data Objects.NET 4.0'/><author><name>Thomas Maierhofer - MSE-iT</name><uri>http://www.blogger.com/profile/02456253906194393812</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5yqfK20ejdc/SRLy2cGgTBI/AAAAAAAAAAY/1MALxXLt5mg/S220/XingBild.jpg'/></author><thr:total>1</thr:total></entry></feed>
