<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>Christian Weyer: Smells like service spirit</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/default.aspx" /><tagline type="text/html">What's first?</tagline><id>http://blogs.thinktecture.com/cweyer/default.aspx</id><author><url>http://blogs.thinktecture.com/cweyer/default.aspx</url></author><generator url="http://communityserver.org" version="1.1.0.50615">Community Server</generator><modified>2007-12-03T09:16:00Z</modified><entry><title>Domain models, services and design: about viewpoints, explicitness and first-class citizens</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2008/03/02/415119.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415119</id><created>2008-03-02T13:58:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;Please take a look at &lt;a href="http://wisdomofganesh.blogspot.com/2008/02/deciding-characteristic-of-soa.html"&gt;what Ganesh has to say about the principle of the "Viewpoint Flip"&lt;/a&gt; and how it enables you to better approach the design of services (let's not use 'SOA' too much in this context...): crisp and all-there-is-to-say.&lt;br&gt;My opinion in the past few years always has been that object-oriented thinking is way misleading, to say the least, when trying to grok services: we needs to switch our viewpoint, our thinking to be *service-oriented* (take that literal).&lt;br&gt;BTW: an &lt;a href="http://www.code-magazine.com/Article.aspx?quickid=0507061"&gt;approach like this&lt;/a&gt; and &lt;a href="http://www.thinktecture.com/WSCF"&gt;tooling made explicitly for this approach&lt;/a&gt; &lt;i&gt;may &lt;/i&gt;help you with flipping your viewpoint.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415119" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415119</wfw:commentRss></entry><entry><title>thinktecture &amp;amp; DevelopMentor: Guerilla Enterprise .NET Kurs in M&amp;#252;nchen</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2008/02/22/415115.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415115</id><created>2008-02-22T18:27:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;&lt;b&gt;Geballtes Know-How - für Sie!&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://www.thinktecture.com"&gt;thinktecture&lt;/a&gt; und &lt;a href="http://www.develop.com"&gt;DevelopMentor&lt;/a&gt; kündigen im Rahmen einer Partnerschaft das erste in Deutschland stattfindende "Enterprise .NET"-Event an. Es wird in der Woche vom 26. Mai 2008 in München stattfinden und im berühmt-berüchtigten "Guerilla"-Format abgehalten: Über 50 Stunden in 5 Tagen! &lt;a href="http://www.thinktecture.com/staff/dominick"&gt;Dominick Baier&lt;/a&gt;, &lt;a href="http://www.thinktecture.com/staff/ingo"&gt;Ingo Rammer&lt;/a&gt; und ich würden uns freuen, Ihnen alles Neue und Wichtige rund um verteilte Anwendungen auf Basis von .NET bei- und nahe zu bringen.&lt;br&gt;&lt;br&gt;Lernen Sie, robuste verteilte Lösungen auf Basis der &lt;b&gt;Windows Communication Foundation (WCF)&lt;/b&gt;, &lt;b&gt;Windows Workflow Foundation (WF)&lt;/b&gt;, &lt;b&gt;Windows CardSpace&lt;/b&gt; und &lt;b&gt;Biztalk Server&lt;/b&gt; zu entwerfen und zu implementieren. Der „Guerilla Enterprise .NET“-Kurs zeigt Ihnen, wie man diese Technologien und Produkte anwendet und verteilte Systeme damit erstellt. Dabei wird auf den jeweiligen Stärken der Technologien aufgebaut und versucht, die Schwächen zu umgehen – alles im Sinne Service-orientierter Prinzipien.&lt;br&gt;&lt;br&gt;&lt;b&gt;Erhalten Sie Antworten auf diese und weitere Fragen&lt;/b&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;Was bedeutet Service-Orientierung wirklich?&lt;/li&gt;&lt;li&gt;Wie erstelle ich interoperable Services?&lt;/li&gt;&lt;li&gt;Wie kann ich einzelne „Building Block“ Services komponieren?&lt;/li&gt;&lt;li&gt;Wie funktionieren Sessions und wann sollte ich sie nutzen?&lt;/li&gt;&lt;li&gt;Wie kann ich lang andauernde Geschäftsvorfälle modellieren und ausführen?&lt;/li&gt;&lt;/ol&gt;Lernen Sie, skalierbare und flexible Service-basierte Anwendungen mit den aktuellen Technologien aus dem &lt;b&gt;.NET Framework 3.5&lt;/b&gt; zu bauen.&lt;br&gt;&lt;br&gt;&lt;b&gt;Highlights des Kurses&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Verstehen Sie die Architektur von WCF, WF und Biztalk Server&lt;/li&gt;&lt;li&gt;Schreiben Sie Services für Internet- und Intranet-Szenarios&lt;/li&gt;&lt;li&gt;Erstellen Sie robuste lang laufende Workflows&lt;/li&gt;&lt;li&gt;Verstehen Sie die Unterschiede und jeweiligen Stärken von Biztalk Server und WF&lt;/li&gt;&lt;li&gt;Erstellen Sie asynchrone nachrichtenbasierte Anwendungen&lt;/li&gt;&lt;li&gt;Integrieren Sie Services und Workflows mit WCF und WF&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Wir würden uns freuen, Sie ab 26. Mai 2008 in München begrüßen zu dürfen - "Take your enterprise .NET programming skills to the next level!"&lt;br&gt;Registrierung und weitere Informationen können per Email an &lt;a href="mailto:office@thinktecture.com"&gt;office@thinktecture.com&lt;/a&gt; abgewickelt werden.&lt;br&gt;&lt;br&gt;[&lt;a href="http://www.thinktecture.com/media/9490/gflyergerman3sm.pdf"&gt;Flyer im PDF-Format&lt;/a&gt;]&lt;br&gt;&lt;br&gt;Infos zum Guerilla-Format:&lt;br&gt;Anders als bei "üblichen" Trainings werden Sie in den fünf Tagen ständig durch drei (3) Trainer betreut – Montag bis Donnerstag auch bis in den späten Abend hinein. Sie können Ihre Kenntnisse und Fähigkeiten bei Programmier-Challenges mit den anderen Teilnehmern messen und attraktive (und auf jeden Fall auch Geek-)Preise gewinnen.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415115" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415115</wfw:commentRss></entry><entry><title>What a lucky day: thinktecture finally has a &amp;quot;face&amp;quot; - Welcome J&amp;#246;rg Neumann</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2008/01/24/415101.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415101</id><created>2008-01-24T08:42:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;&lt;a href="http://www.thinktecture.com/"&gt;thinktecture&lt;/a&gt; always had really &lt;a href="http://www.thinktecture.com/staff/"&gt;great experts&lt;/a&gt; for a variety of technologies and areas of expertise in order to &lt;a href="http://www.thinktecture.com/services/"&gt;help software architects and developers&lt;/a&gt; with problems in their projects - but...&lt;br&gt;&lt;br&gt;... we were always lacking some guy who knows how to do good &lt;b&gt;user interface design &lt;/b&gt;and who knows literally everything about &lt;b&gt;classical Windows programming, Windows Forms&lt;/b&gt; design and hacking and last but not least enjoys working with &lt;b&gt;WPF and Silverlight&lt;/b&gt;. It was just very hard to find this super-hero - but...&lt;br&gt;&lt;br&gt;... now he is here:&lt;br&gt;&lt;a href="http://www.thinktecture.com/staff/joerg"&gt;Jörg Neumann&lt;/a&gt; (yeah, he promised to deliver a more reasonable text soon :))&lt;br&gt;&lt;a href="http://headwriteline.blogspot.com/"&gt;His blog&lt;/a&gt; is currently only available in German but I am sure we can force him to switch language.&lt;br&gt;&lt;br&gt;I am glad, we are all glad - I already had the pleasure to work with Jörg on some POC apps, his knowledge simply rocks.&lt;br&gt;Oh well: Jörg is also quite a nice guy, although he is from Northern Germany - well...&lt;br&gt;&lt;br&gt;&lt;i&gt;P.S.: Jörg is also very knowledgable with everything SQL Server, e.g. he has written &lt;a href="http://www.amazon.de/gp/reader/389842684X/ref=sib_dp_pt/303-4033502-1147443#reader-link"&gt;a book&lt;/a&gt; on this very topic (in German).&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415101" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415101</wfw:commentRss></entry><entry><title>Information about .NET Framework 3.0 Service Pack 1 (SP 1)</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2008/01/16/415099.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415099</id><created>2008-01-16T18:26:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;I had several people asking me for some details about what exactly is fixed in 3.0 SP1 - so here is some more information.&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ec2ca85d-b255-4425-9e65-1e88a0bdb72a&amp;amp;DisplayLang=en"&gt;Download .NET 3.0 SP 1 (2.4 MB download size)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/945826/en-us"&gt;Problems that are fixed in the .NET Framework 3.0 Service Pack 1&lt;/a&gt;:&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://support.microsoft.com/kb/945826/en-us"&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;i&gt;&lt;a href="http://support.microsoft.com/kb/945826/en-us"&gt;The .NET Framework 3.0 Service Pack 1 fixes the problems that are described in 
the following articles in the Microsoft Knowledge Base:
&lt;/a&gt;&lt;/i&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/932471/"&gt;932471&lt;/a&gt;&lt;span class="pLink"&gt; &lt;/span&gt;FIX: Error message 
when you try to open or to create a protected XPS document by using the XPS 
viewer that is included with the .NET Framework 3.0: "Cannot open this document 
because your permissions have expired" &lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="/kb/932816/"&gt;932816 &lt;/a&gt;&lt;span class="pLink"&gt;&lt;/span&gt;FIX: You experience 
various problems in Windows Workflow Foundation &lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/935314/"&gt;935314&lt;/a&gt;&lt;span class="pLink"&gt; &lt;/span&gt;FIX: You may 
experience issues with Windows Communication Foundation peer channel connections 
&lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/935315/"&gt;935315&lt;/a&gt;&lt;span class="pLink"&gt; FIX: T&lt;/span&gt;he COM+ 
application cannot start when you use the COM+ Service Model Configuration tool 
to expose the COM+ components in the COM+ application &lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/935434/"&gt;935434&lt;/a&gt;&lt;span class="pLink"&gt; &lt;/span&gt;FIX: Error message 
in FIPS-compliant systems when you use Windows Communication Foundation to 
serialize generic types: "This implementation is not part of the Windows 
Platform FIPS validated cryptographic algorithms" &lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/936123/"&gt;936123&lt;/a&gt;&lt;span class="pLink"&gt; &lt;/span&gt;FIX: Error message 
when you open a workflow by using the workflow designer in Visual Studio 2005: 
"Error loading workflow" &lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/936512/"&gt;936512&lt;/a&gt;&lt;span class="pLink"&gt; &lt;/span&gt;FIX: A memory leak 
occurs when you send many messages by using the NetMsmq transport in the .NET 
Framework 3.0 &lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="/kb/938758/"&gt;938758 &lt;/a&gt;&lt;span class="pLink"&gt;&lt;/span&gt;FIX: The Unload 
method may stop responding (hang) in a Windows Workflow Foundation project 
&lt;/i&gt;&lt;/div&gt;&lt;div class="indent"&gt;&lt;i&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/942520/"&gt;942520&lt;/a&gt;&lt;span class="pLink"&gt; &lt;/span&gt;FIX: You may 
experience slow performance when you run a Windows Communication Foundation 
application &lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;br&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415099" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415099</wfw:commentRss></entry><entry><title>ADO.NET Data Services are not tied to databases</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/19/415079.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415079</id><created>2007-12-19T07:45:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;Just to make this point very clear:&lt;br&gt;ADO.NET Data Services (aka 'Astoria') is not tied to a database, not tied to relational data and surely not tied to the ADO.NET Entity Framework. *Data* in 'Data Service' doesn’t mean 'Database', but it literally just means 'Data' of any kind.&lt;br&gt;I try to post sample over the coming weeks to prove this point.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415079" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415079</wfw:commentRss></entry><entry><title>Ready to rumble: Windows Server 2008 RC1 &amp;amp; Hyper-V on my Dell PowerEdge 2900</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/14/415077.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415077</id><created>2007-12-14T14:33:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;Alright... &lt;a href="http://www.microsoft.com/windowsserver2008/virtualization/default.mspx"&gt;let the games begin&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
&lt;img src="http://www.thinktecture.com/media/9425/pe_server2008rc1.jpg" alt="Windows Server 2008 x64 RC1 on Dell PowerEdge 2900"&gt;&lt;br&gt;&lt;br&gt;Yes: I need more RAM!&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415077" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415077</wfw:commentRss></entry><entry><title>Rich on Volta's tier splitting: Halleluja!</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/13/415073.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415073</id><created>2007-12-13T12:28:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;Usually, I do not post just "&lt;b&gt;+1&lt;/b&gt;"... but this time - and I have been fighting with myself not to rant too much about &lt;a href="http://labs.live.com/volta/"&gt;Volta&lt;/a&gt; - &lt;a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,440a136c-6be2-4f86-96b5-3a8c1805cd87.aspx"&gt;I am 100% with Rich&lt;/a&gt;.&lt;br&gt;I just think there is too much &lt;i&gt;"Oh, that is easy: just one attribute and a switch and I'm done"&lt;/i&gt;-mantra in there...&lt;br&gt;&lt;br&gt;Well, keeps me busy :)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415073" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415073</wfw:commentRss></entry><entry><title>ADO.NET Data Services (&amp;quot;Astoria&amp;quot;) InstanceContextMode</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/11/415063.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415063</id><created>2007-12-11T21:36:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;&lt;i&gt;Quick note:&lt;/i&gt;&lt;br&gt;Astoria services are PerCall by default. A data service derives from &lt;font face="Courier New"&gt;WebDataService&amp;lt;T&amp;gt;&lt;/font&gt; which looks like this:&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&lt;b&gt;[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]&lt;/b&gt;&lt;br&gt;[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]&lt;br&gt;public class WebDataService&amp;lt;T&amp;gt; : IRequestHandler, IWebDataService&lt;br&gt;...&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415063" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415063</wfw:commentRss></entry><entry><title>ADO.NET Data Services (&amp;quot;Astoria&amp;quot;) Service Metadata</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/11/415061.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415061</id><created>2007-12-11T19:05:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;You can access the SSDL (ADO.NET Entity Framework's &lt;b&gt;s&lt;/b&gt;tore &lt;b&gt;s&lt;/b&gt;chema &lt;b&gt;d&lt;/b&gt;efinition &lt;b&gt;l&lt;/b&gt;anguage, and *not* &lt;a href="http://www.ssdl.org/"&gt;this one here&lt;/a&gt;) of your Astoria Data Service by appending &lt;font face="Courier New"&gt;$metadata&lt;/font&gt; to the base URL, like this:&lt;br&gt;&lt;blockquote&gt;&lt;font face="Courier New"&gt;http://localhost:7777/Services/Data/NW/$metadata&lt;/font&gt;&lt;br&gt;&lt;/blockquote&gt;

&lt;a href="http://www.thinktecture.com/media/9415/astoria_metadata.jpg"&gt;
&lt;img src="http://www.thinktecture.com/media/9420/astoria_metadata_small.jpg" alt="Astoria Data Service Metadata"&gt;
&lt;/a&gt;

&lt;br&gt;&lt;br&gt;This metadata can e.g. be used to generate client-side code with the &lt;font face="Courier New"&gt;WebDataGen.exe&lt;/font&gt; tool, like this:&lt;br&gt;&lt;blockquote&gt;&lt;font face="Courier New"&gt;webdatagen /mode:ClientClassGeneration /uri:http://vmxpsp2:7777/Services/Data/NW /outobjectlayer:Northwind.cs&lt;/font&gt;&lt;br&gt;&lt;/blockquote&gt;This creates entities which you can use to program against, for example by leveraging the &lt;a href="http://blogs.thinktecture.com/cweyer/archive/2007/12/11/415059.aspx"&gt;Astoria client API&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415061" width="1" height="1"&gt;</content><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415061</wfw:commentRss></entry><entry><title>LINQ-to-REST</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/11/415059.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415059</id><created>2007-12-11T14:34:00Z</created><content type="text/html" mode="escaped">The latest Astoria / ADO.NET Data Services CTP also includes a client-side library with support for creating LINQ queries against a REST API - very interesting.&lt;br&gt;&lt;a href="http://blogs.msdn.com/aconrad/archive/2007/12/10/linq-to-rest.aspx"&gt;Details can be found here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415059" width="1" height="1"&gt;</content><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415059</wfw:commentRss></entry><entry><title>Self-Hosting Your ADO.NET Data Services (&amp;quot;Astoria&amp;quot;) Services</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/11/415057.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415057</id><created>2007-12-11T11:24:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;The official &lt;a href="http://astoria.mslivelabs.com/"&gt;ADO.NET Data Services&lt;/a&gt; (hm, am I the only who thinks that this - again - is not a perfect name...?) documentation doesn't alk about and doesn't show how to self-host your Astoria services - the samples and quickstarts always use ASP.NET/IIS to expose the WCF-based services that Astoria is using.&lt;br&gt;&lt;br&gt;By looking a bit around in &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt; I managed to create a self-hosted Astoria service which (for this example) is hosted in a Console application.&lt;br&gt;&lt;br&gt;We have several steps to fulfill our task:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Create the ADO.NET Entity Model&lt;/li&gt;&lt;li&gt;Implement your Astoria Service&lt;/li&gt;&lt;li&gt;Configure endpoint(s)&lt;/li&gt;&lt;li&gt;Create a ServiceHost instance&lt;/li&gt;&lt;/ul&gt;Creating the Entity Data Model is no special thing as well as implementing an Astoria service. Just &lt;a href="http://quickstarts.asp.net/3-5-extensions/adonetdataservice/CreatingADONETDataServices.aspx"&gt;follow the offical steps for the respective topic in the ADO.NET Data Services Quickstart docs&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Astoria uses one generic universal contract for implementing the service base class. The service class you already built above is a derivate of &lt;font face="Courier New"&gt;WebDataService&amp;lt;T&amp;gt;&lt;/font&gt; and the WCF universal &lt;font face="Courier New"&gt;ServiceContract &lt;/font&gt;is &lt;font face="Courier New"&gt;Microsoft.Data.Web.IRequestHandler&lt;/font&gt; which can be found in the &lt;i&gt;Microsoft.Data.Web&lt;/i&gt; assembly.&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;[ServiceContract]&lt;br&gt;public interface IRequestHandler&lt;br&gt;{&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;nbsp; [OperationContract]&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp; [WebInvoke(UriTemplate="*", Method="*")]&lt;br&gt;&amp;nbsp; Message ProcessRequestForMessage(Stream messageBody);&lt;br&gt;}&lt;br&gt;&lt;/font&gt;&lt;br&gt;So everything we need to do now is to create an endpoint definition which uses these artifacts and leverages the &lt;font face="Courier New"&gt;webHttpBinding &lt;/font&gt;&lt;a href="http://blogs.thinktecture.com/cweyer/archive/2007/10/29/414951.aspx"&gt;which was introduced in .NET 3.5&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;lt;system.serviceModel&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;services&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service name="SelfHostedAstoria.WebDataService"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address="http://localhost:7777/Services/Data/NW"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; binding="webHttpBinding"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behaviorConfiguration="webHttp"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contract="Microsoft.Data.Web.IRequestHandler" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/services&amp;gt;&lt;br&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;br&gt;In order to actually expose our Astoria Service we need to hook up a &lt;font face="Courier New"&gt;ServiceHost &lt;/font&gt;instance. In our case we will use the &lt;font face="Courier New"&gt;WebServiceHost&lt;/font&gt; (living in &lt;font face="Courier New"&gt;System.ServiceModel.Web&lt;/font&gt;) which already takes care about setting up the needed behavior on all &lt;font face="Courier New"&gt;webHttpBinding&lt;/font&gt;-based endpoints.&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;WebServiceHost host = new WebServiceHost(typeof(WebDataService));&lt;br&gt;host.Open();&lt;br&gt;...&lt;/font&gt;&lt;br&gt;&lt;br&gt;Easy! Now we have a self-hosted Astoria service.&lt;br&gt;&lt;br&gt;
&lt;a href="http://www.thinktecture.com/media/9404/astoria_selfhost.jpg"&gt;
&lt;img src="http://www.thinktecture.com/media/9410/astoria_selfhost_small.jpg" alt="Self-hosted ADO.NET Dat Services ('Astoria') Service"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;/a&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415057" width="1" height="1"&gt;</content><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415057</wfw:commentRss></entry><entry><title>Mapping types in a WF workflow: the MapperActivity</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/11/415056.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415056</id><created>2007-12-11T10:23:00Z</created><content type="text/html" mode="escaped">&lt;a href="http://www.dotnetconsult.co.uk/weblog2/"&gt;&lt;br&gt;Rich&lt;/a&gt;, &lt;a href="http://headwriteline.blogspot.com/"&gt;Jörg&lt;/a&gt; and myself had a lot fun building this baby: being able to have an activity to graphically map source and destination objects and properties and not having to resort to a CodeActivity. A little bit like the Biztalk Server mapping editor in a light version.&lt;br&gt;Rich has &lt;a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,2f6c28f6-dc6e-49e1-afd6-944054c6bd9e.aspx"&gt;all&lt;/a&gt; the details.&lt;br&gt;&lt;br&gt;Download the &lt;a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,900a5373-a534-41cc-8eda-1dfa93f0c931.aspx"&gt;code for the MapperActivity&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415056" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415056</wfw:commentRss></entry><entry><title>Dealing with OS privilege 'issues' in WCF Named Pipes scenarios</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/07/415050.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415050</id><created>2007-12-07T10:46:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;For whom this ever may be useful - I fighted a long time against this... (and got support from the WCF team, BTW)&lt;br&gt;&lt;br&gt;We have this very vast .NET 3.x end-to-end sample application which covers nearly all of the (senseful :)) features in the .NET Framework. Part of this application scenario is an upload feature where users can upload media files through a common ASP.NET frontend to the web server which then in turn talks to a WCF service that is implemented by a WF state machine workflow. The communication between the ASP.NET app on the server and the WCF Upload Service is via a Named Pipes channel (&lt;font face="Courier New"&gt;netNamedPipeBinding&lt;/font&gt;).&lt;br&gt;&lt;br&gt;Recently I ran into a problem which only occured after I moved over to Windows Vista (from XP SP2). And of course, as a lot of us (... yeah, I can hear &lt;a href="http://www.leastprivilege.com/"&gt;Dominick&lt;/a&gt; yelling at me ...) I was always working as an admin on XP and so my primary account on Vista is also an admin account. Obviously, being an admin on Vista is very different from being an admin on XP if you have UAC (User Account Control) enabled - and &lt;a href="http://www.leastprivilege.com/UACIsForDevelopers.aspx"&gt;you *should* have it enabled&lt;/a&gt;, but this is maybe worth another blog entry. When running as an admin on Vista with UAC turned on all processes are by default not running elavated and therefore do not have all the privileges the exact same admin has on an XP SP2 box.&lt;br&gt;&lt;br&gt;For testing and demonstration purposes I have created a console host application for the WCF-based Upload Service. I start this console EXE and my WCF service starts successfully stating that the NP endpoint has been setup. If I run my test console client against this service everything works as expected. Please note that all processes involved until now are executed non-elevated.&lt;br&gt;As many others, I started developing and testing the Upload web app in Cassini (aka 'ASP.NET Development Server', WebDev.WebServer.exe). Everything was working like a charm :)&lt;br&gt;Problems started to occur when I switched over the ASP.NET client application from Cassini (yes - I can &lt;a href="http://www.leastprivilege.com/CassiniConsideredHarmful.aspx"&gt;hear Dominick yell again&lt;/a&gt;) to running in IIS 7. The WCF Upload Service is still the same one, actually the process is still running. When hitting the UploadWeb with the browser and submitting data the ASP.NET app on the server side then tries to talk to the NP endpoint of my WCF service - but: bang!!!&lt;br&gt;&lt;br&gt;
&lt;a href="http://www.thinktecture.com/media/9394/np_aspnet_1.jpg"&gt;
&lt;img src="http://www.thinktecture.com/media/9399/np_aspnet_1_small.jpg" alt="Exception: The pipe endpoint 'net.pipe://localhost/tecTeacher/UploadService' could not be found on your local machine"&gt;
&lt;/a&gt;
&lt;br&gt;&lt;font face="Courier New" size="4"&gt;&lt;i&gt;&lt;br&gt;The pipe endpoint 'net.pipe://localhost/tecTeacher/UploadService' could not be found on your local machine. &lt;/i&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Hm, what's up here?&lt;br&gt;The client app (i.e. ASP.NET) doesn't seem to 'see' the Named Pipe... ASP.NET is running in IIS which is running in a Windows Service, namely w3wp.exe. Services in Vista and Windows Server 2008 run in Session0. My ConsoleHost is not running in Session0 but rather in Session1 (you can verify this by using Task Manager and adding the 'Session ID' column to the view). Usually, WCF's Named Pipe support tries to create the pipe in the Global namespace.&lt;br&gt;If my WCF server process using a Named Pipe-based endpoint doesn't have privileges to create a Global kernel object it silently fails and creates a local one which will not be visible to processes outside of its session. My ConsoleHost app has been started with common privileges, not elevated and therefore cannot create objects in the Global kernel object namespace.&amp;nbsp; This explains the problem that ASP.NET running in IIS sitting inside a Windows Service cannot see the Named Pipe offered by the console EXE.&lt;br&gt;&lt;br&gt;What can we do to fix this?&lt;br&gt;&amp;nbsp;a) Run your WCF service inside a Windows Service (which you should do anyway, and not inside a Console)&lt;br&gt;&amp;nbsp;b) Host your WCF service inside of WAS/IIS (only on Vista and Server 2008) - but be sure to &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/09/WAS/default.aspx"&gt;know about the limitations of this approach&lt;/a&gt;&lt;br&gt;&amp;nbsp;c) Run the Console host application elevated (for demo and testing purposes only)&lt;br&gt;&lt;br&gt;Some more technical explanations can be found in an &lt;a href="http://msdn2.microsoft.com/en-us/library/aa382954.aspx"&gt;MSDN article talking about Kernel Objects Namespaces&lt;/a&gt;, I am just providing an excerpt which talks about the actual problem:&lt;br&gt;&lt;blockquote&gt;&lt;i&gt;Starting with Windows Server 2003, Windows XP SP2, and Windows 2000 Server SP4, the creation of a file-mapping object in the global namespace (by using CreateFileMapping) from a session other than session zero is a privileged operation. Because of this, an application running in an arbitrary [...] session must have SeCreateGlobalPrivilege enabled in order to create a file-mapping object in the global namespace successfully. Note that the privilege check is limited to the creation of file-mapping objects, and does not apply to opening existing ones. For example, if a service or the system creates a file-mapping object, any process running in any session can access that file-mapping object provided that the user has the necessary access.&lt;/i&gt;&lt;br&gt;&lt;/blockquote&gt;Lessons learned.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415050" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415050</wfw:commentRss></entry><entry><title>Running WSCF 0.7 in Visual Studio 2008</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/07/415049.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415049</id><created>2007-12-07T08:08:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;Now with VS2008 being released obviously a lot of people also want to run &lt;a href="http://www.thinktecture.com/WSCF/"&gt;WSCF&lt;/a&gt; in it.&lt;br&gt;I have an updated &lt;font face="Courier New"&gt;WSCF.addin&lt;/font&gt; file which you need to replace the original one with (the location of the &lt;font face="Courier New"&gt;.addin&lt;/font&gt; file depends on your install option).&lt;br&gt;&lt;br&gt;Please note that this has not been broadly tested but customers have reported successful execution of WSCF inside VS2008.&lt;br&gt;&lt;br&gt;Download  &lt;a href="http://www.thinktecture.com/media/9391/wscf.addin_vs2008.zip"&gt;WSCF.addin_VS2008.zip&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415049" width="1" height="1"&gt;</content><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415049</wfw:commentRss></entry><entry><title>The future of WSCF (and the forums)</title><link rel="alternate" type="text/html" href="http://blogs.thinktecture.com/cweyer/archive/2007/12/03/415043.aspx" /><id>ff4ed322-7612-4f43-9d7f-220c081c7cfd:415043</id><created>2007-12-03T08:16:00Z</created><content type="text/html" mode="escaped">&lt;br&gt;Some heads up wrt to WSCF - this is what I just posted over at the thinktecture forums (which have been quiet from our side for a loooong time, sorry).&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;i&gt;Hello everybody, &lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;first of all I really need to apologize the long silence in these forums here - sorry! &lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;To make a (quite) long story short: &lt;/i&gt;&lt;br&gt;&lt;b&gt;&lt;i&gt;We will open source WSCF.blue (the version we are currently building for &lt;/i&gt;&lt;br&gt;&lt;i&gt;WCF) by the beginning of 2008. &lt;/i&gt;&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;i&gt;WSCF has always been a toy project for us - and as we are very busy in 'real' projects we could not work much on it, sorry again. &lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;The questions still open in this forum will likely not be addressed and answered as we are trying to figure out how to host the source code for WSCF (e.g. on Codeplex). &lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;Please watch my blog at http://blogs.thinktecture.com/cweyer/ to get notified when we are done with WSCF.blue. &lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;i&gt;Thanks again for using WSCF and providing incredibly useful feedback over the years! &lt;/i&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;Regards, &lt;/i&gt;&lt;br&gt;&lt;i&gt;Christian Weyer&lt;/i&gt;&lt;br&gt;&lt;/blockquote&gt;So, some more to come - but I am now mentally ready to give this baby away...&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415043" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.thinktecture.com/cweyer/commentrss.aspx?PostID=415043</wfw:commentRss></entry></feed>