<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>All About Interop</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/dotnetinterop/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/feed.xml</link>
    <description>Connecting .NET to just about anything else</description>
    <lastBuildDate>Wed, 08 Apr 2015 03:16:11 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Enable .NET 3.5 goodies in IIS vdir</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/enable-net-3-5-goodies-in-iis-vdir</link>
      <pubDate>Fri, 05 Dec 2008 12:29:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/12/05/enable-net-3-5-goodies-in-iis-vdir/</guid>
      <description><![CDATA[Some of you may be oddballs like me:&nbsp; you like .NET, you program in .NET, but you don't always...]]></description>
      <content:encoded><![CDATA[<P>Some of you may be oddballs like me:&nbsp; you like .NET, you program in .NET, but you don't always use Visual Studio.&nbsp;&nbsp; You hand-code everything for some applications.&nbsp; You often open up a text editor and just start writing a source module, with no wizards, no project templates, etc.&nbsp; You hand-code your MSbuild files.&nbsp; You hand-code your web.config files. </P>
<P>Oddballs like us cannot rely on the code-generation that comes with Visual Studio.&nbsp; So when we write a new ASP.NET application, and we want to use the .NET 3.5 goodies in that app - things like var types, and LINQ - we need to explicitly specify that we want .NET 3.5 compilation.&nbsp; Same is true if you are writing a WCF service and want to use REST or any of the var types or LINQ. </P>
<P>I've done this twice now and had to search for the way to do it both times.&nbsp; I'm putting here as a "note to self" and also as a reference for anyone else.&nbsp; These are the custom magic incantations for web.config, if you want to enable .NET 3.5 in your ASP.NET app, or in your WCF Service - eg, the cool REST stuff from .NET 3.5.</P>
<P mce_keep="true">&nbsp;</P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 2pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 2pt; FONT-SIZE: 9pt; BACKGROUND: white; PADDING-BOTTOM: 2pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; LINE-HEIGHT: 98%; PADDING-TOP: 2pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Consolas, Courier New"><PRE>&lt;<SPAN style="COLOR: #a020f0">?xml</SPAN> <SPAN style="COLOR: #b8860b">version</SPAN>=<SPAN style="COLOR: #bc8f8f">"1.0"</SPAN> <SPAN style="COLOR: #b8860b">encoding</SPAN>=<SPAN style="COLOR: #bc8f8f">"utf-8"</SPAN>?&gt;
&lt;<SPAN style="COLOR: #0000ff">configuration</SPAN>&gt;

  &lt;<SPAN style="COLOR: #0000ff">system.web</SPAN>&gt;
    &lt;<SPAN style="COLOR: #0000ff">compilation</SPAN> <SPAN style="COLOR: #b8860b">debug</SPAN>=<SPAN style="COLOR: #bc8f8f">"false"</SPAN>&gt;  
      &lt;<SPAN style="COLOR: #0000ff">assemblies</SPAN>&gt;  
        &lt;<SPAN style="COLOR: #0000ff">add</SPAN> <SPAN style="COLOR: #b8860b">assembly</SPAN>=<SPAN style="COLOR: #bc8f8f">"System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"</SPAN>/&gt;  
        &lt;<SPAN style="COLOR: #0000ff">add</SPAN> <SPAN style="COLOR: #b8860b">assembly</SPAN>=<SPAN style="COLOR: #bc8f8f">"System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"</SPAN>/&gt;  
        &lt;<SPAN style="COLOR: #0000ff">add</SPAN> <SPAN style="COLOR: #b8860b">assembly</SPAN>=<SPAN style="COLOR: #bc8f8f">"System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"</SPAN>/&gt;  
        &lt;<SPAN style="COLOR: #0000ff">add</SPAN> <SPAN style="COLOR: #b8860b">assembly</SPAN>=<SPAN style="COLOR: #bc8f8f">"System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"</SPAN>/&gt;  
      &lt;/<SPAN style="COLOR: #0000ff">assemblies</SPAN>&gt;  
    &lt;/<SPAN style="COLOR: #0000ff">compilation</SPAN>&gt;  
  &lt;/<SPAN style="COLOR: #0000ff">system.web</SPAN>&gt;


  &lt;<SPAN style="COLOR: #0000ff">system.codedom</SPAN>&gt;  
    &lt;<SPAN style="COLOR: #0000ff">compilers</SPAN>&gt;  
      &lt;<SPAN style="COLOR: #0000ff">compiler</SPAN> <SPAN style="COLOR: #b8860b">language</SPAN>=<SPAN style="COLOR: #bc8f8f">"c#;cs;csharp"</SPAN> <SPAN style="COLOR: #b8860b">extension</SPAN>=<SPAN style="COLOR: #bc8f8f">".cs"</SPAN>   
                <SPAN style="COLOR: #b8860b">type</SPAN>=<SPAN style="COLOR: #bc8f8f">"Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"</SPAN>   
                <SPAN style="COLOR: #b8860b">warningLevel</SPAN>=<SPAN style="COLOR: #bc8f8f">"4"</SPAN>&gt;  
        &lt;<SPAN style="COLOR: #0000ff">providerOption</SPAN> <SPAN style="COLOR: #b8860b">name</SPAN>=<SPAN style="COLOR: #bc8f8f">"CompilerVersion"</SPAN> <SPAN style="COLOR: #b8860b">value</SPAN>=<SPAN style="COLOR: #bc8f8f">"v3.5"</SPAN>/&gt;  
        &lt;<SPAN style="COLOR: #0000ff">providerOption</SPAN> <SPAN style="COLOR: #b8860b">name</SPAN>=<SPAN style="COLOR: #bc8f8f">"WarnAsError"</SPAN> <SPAN style="COLOR: #b8860b">value</SPAN>=<SPAN style="COLOR: #bc8f8f">"false"</SPAN>/&gt;  
      &lt;/<SPAN style="COLOR: #0000ff">compiler</SPAN>&gt;  
      &lt;<SPAN style="COLOR: #0000ff">compiler</SPAN> <SPAN style="COLOR: #b8860b">language</SPAN>=<SPAN style="COLOR: #bc8f8f">"vb;vbs;visualbasic;vbscript"</SPAN> <SPAN style="COLOR: #b8860b">extension</SPAN>=<SPAN style="COLOR: #bc8f8f">".vb"</SPAN>   
                <SPAN style="COLOR: #b8860b">type</SPAN>=<SPAN style="COLOR: #bc8f8f">"Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"</SPAN>   
                <SPAN style="COLOR: #b8860b">warningLevel</SPAN>=<SPAN style="COLOR: #bc8f8f">"4"</SPAN>&gt;  
        &lt;<SPAN style="COLOR: #0000ff">providerOption</SPAN> <SPAN style="COLOR: #b8860b">name</SPAN>=<SPAN style="COLOR: #bc8f8f">"CompilerVersion"</SPAN> <SPAN style="COLOR: #b8860b">value</SPAN>=<SPAN style="COLOR: #bc8f8f">"v3.5"</SPAN>/&gt;  
        &lt;<SPAN style="COLOR: #0000ff">providerOption</SPAN> <SPAN style="COLOR: #b8860b">name</SPAN>=<SPAN style="COLOR: #bc8f8f">"OptionInfer"</SPAN> <SPAN style="COLOR: #b8860b">value</SPAN>=<SPAN style="COLOR: #bc8f8f">"true"</SPAN>/&gt;  
        &lt;<SPAN style="COLOR: #0000ff">providerOption</SPAN> <SPAN style="COLOR: #b8860b">name</SPAN>=<SPAN style="COLOR: #bc8f8f">"WarnAsError"</SPAN> <SPAN style="COLOR: #b8860b">value</SPAN>=<SPAN style="COLOR: #bc8f8f">"false"</SPAN>/&gt;  
      &lt;/<SPAN style="COLOR: #0000ff">compiler</SPAN>&gt;  
    &lt;/<SPAN style="COLOR: #0000ff">compilers</SPAN>&gt;  
  &lt;/<SPAN style="COLOR: #0000ff">system.codedom</SPAN>&gt; 

&lt;/<SPAN style="COLOR: #0000ff">configuration</SPAN>&gt;
</PRE></DIV>]]></content:encoded>
    </item>
    <item>
      <title>Geneva supports OASIS WS-Trust, SAML</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/geneva-supports-oasis-ws-trust-saml</link>
      <pubDate>Fri, 07 Nov 2008 11:09:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/11/07/geneva-supports-oasis-ws-trust-saml/</guid>
      <description><![CDATA[Last week at the PDC 2008, Microsoft released the public beta of “Geneva”.&nbsp;
&nbsp;
“Geneva”...]]></description>
      <content:encoded><![CDATA[<FONT face=Calibri size=3>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Last week at the PDC 2008, Microsoft released the public beta of “Geneva”.&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true">&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">“Geneva” is three things:</P>
<P class=MsoCommentText style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2"><STRONG>Geneva Server.&nbsp; </STRONG>This is a security token service (STS), as defined in the <A class="" href="https://en.wikipedia.org/wiki/WS-Trust" mce_href="https://en.wikipedia.org/wiki/WS-Trust">OASIS WS-Trust</A> specification.&nbsp; This thing issues and transforms claims, manages user access, and enables automated federation.</P>
<P class=MsoCommentText style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2"><STRONG>Geneva Framework.&nbsp; </STRONG>This is a managed (.NET) Framework that helps developers build claims-aware applications and services, that connect to the STS.&nbsp; You can use it to process claims&nbsp;on&nbsp;either side of an authorization transaction (requestor or responder).</P>
<P class=MsoCommentText style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2"><STRONG>Windows CardSpace Geneva.&nbsp; </STRONG>This is just an extension of the <A href="https://msdn.microsoft.com/en-us/library/aa480189.aspx">CardSpace</A> thing in Windows you know and love today.&nbsp; chances are, you've seen it, but you don't use it. In a nutshell - CardSpace is a set of Windows features and user-interface that lets users navigate access decisions and control how personal information is used. Everyone has multiple claims as part of their identity: you are a student at UW, you are an employee of BigCorp, you are a member in good standing of a particular club, you have received a particular security clearance, You have a bank account with number 4444-444-44 at BigBank, etc. CardSpace lets you decide which of the many <I>claims</I> you can make about your identity, to disclose to a particular service or server. Rather than disclosing "everything" about you to every server or service, you disclose only what you need to disclose for the particular transaction. That is one aspect of the identity model, and CardSpace is the thing in Windows that makes that possible. <BR><BR></P>
<P>CardSpace technology, and actually, the Identity Metasystem concept, is pretty cool. If you haven't looked at it, you should. &nbsp; The problem with CardSpace and more generally, using claims-based access control (CBAC) in an application, has always been that <B><I>it was impractical</I></B>. Microsoft delivered a client (CardSpace), but we didn't deliver an STS! And we didn't deliver an easy way for the server to evaluate and verify claims. Therefore developers didn't have an easy way to employ CBAC in their apps. Geneva will change this. </P>
<P>Now, some of you are thinking, <I>"ok, this sounds interesting but I don't know what you are talking about with this WS-Trust thing and 'claims based access control'</I>. And I can understand that. Here's the thing - instead of hand-crafting access-control logic into your application, instead of managing your own user list and access control list, you can "outsource" this job to an STS. The <A href="https://msdn.microsoft.com/en-us/library/ms952386.aspx">Authorization Manager</A> (sometimes called AzMan) is similar in philosophy, so if you understand the utility of AzMan, then you will get the idea of CBAC. But AzMan is not standards based, not federated, not truly claims-based (it is role based, which is less general than claims-based), and not usable in Web services transactions. Imagine generalizing AzMan and federating it and using only standard protocols, and that's where we're headed with Geneva. You're gonna want to use this. </P>
<P>I said "Geneva is standards based." The key to standards is support by the vendors, in tools, frameworks, servers, and so on. Currently, WCF from Microsoft supports WS-Trust, as does the WSIT from Sun. WebSphere App Server v7.0 announced support for WS-Trust just last month, but I haven't had the time to test it with Geneva. Not sure of other frameworks. The key is, with Geneva, the server is now here, and people can and will start building on this. I think with the release of the Geneva CTP, we'll start to see broader adoption of WS-Trust and standards-based CBAC among frameworks.&nbsp; </P>
<P>One last thing to point out: In the cloud, the Microsoft Services Connector and the .NET Access Control Service, both announced at PDC as well, are built on “Geneva” technology and share the same claims architecture. </P>
<P>More Information:<BR><SPAN style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><A href="https://www.identityblog.com/">Kim Cameron’s blog</A> </SPAN><BR><SPAN style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><A href="https://blogs.msdn.com/vbertocci/">Vittorio Bertocci’s blog</A> </SPAN><BR><SPAN style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><A href="https://go.microsoft.com/fwlink/?LinkId=122266">Get the Geneva beta</A> </SPAN><BR><SPAN style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><A href="https://www.microsoft.com/geneva">Single stop resource on Geneva</A> </SPAN><BR></P>
<P>A list of “Geneva” sessions recordings at PDC:</P>
<TABLE class="" border=1>
<TBODY>
<TR>
<TH class="">code</TH>
<TH class="">Title</TH>
<TH class="">Presenter(s)</TH>
<TH class="">Link</TH></TR>
<TR>
<TD class="">BB11</TD>
<TD class="">Identity Roadmap for Software + Services</TD>
<TD class="">Kim Cameron and Vittorio Bertocci</TD>
<TD class=""><A href="https://channel9.msdn.com/pdc2008/BB11/">https://channel9.msdn.com/pdc2008/BB11/</A> </TD>
<TR>
<TD class="">BB42</TD>
<TD class="">Identity: "Geneva" Server and Framework Overview </TD>
<TD class="">Stuart Kwan and Caleb Baker </TD>
<TD class=""><A href="https://channel9.msdn.com/pdc2008/BB42/">https://channel9.msdn.com/pdc2008/BB42/</A> </TD></TR>
<TR>
<TD class="">BB43</TD>
<TD class="">Identity: "Geneva" Deep Dive </TD>
<TD class="">Jan Alexander </TD>
<TD class=""><A href="https://channel9.msdn.com/pdc2008/BB43/">https://channel9.msdn.com/pdc2008/BB43/</A> </TD></TR>
<TR>
<TD class="">BB44</TD>
<TD class="">Identity: Windows CardSpace "Geneva" Under the Hood </TD>
<TD class="">Rich Randall </TD>
<TD class=""><A href="https://channel9.msdn.com/pdc2008/BB44/">https://channel9.msdn.com/pdc2008/BB44/</A> </TD></TR></TBODY></TABLE></FONT>]]></content:encoded>
    </item>
    <item>
      <title>Connect WebSphere and Java applications to SQL Server</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/connect-websphere-and-java-applications-to-sql-server</link>
      <pubDate>Wed, 05 Nov 2008 16:55:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/11/05/connect-websphere-and-java-applications-to-sql-server/</guid>
      <description><![CDATA[FYI: The MS JDBC Driver is completely tested by IBM for use with WebSphere App Server v6.1 and v7.0....]]></description>
      <content:encoded><![CDATA[<p>FYI: The MS JDBC Driver is completely tested by IBM for use with WebSphere App Server v6.1 and v7.0. </p><p>From the <a href="https://www-01.ibm.com/common/ssi/rep_ca/6/897/ENUS208-266/index.html" mce_href="https://www-01.ibm.com/common/ssi/rep_ca/6/897/ENUS208-266/index.html">IBM Announcement for WebSphere Application Server v7.0</a>:&nbsp; <br></p><blockquote><p>WebSphere Application Server V7.0 does not include the WebSphere Connect JDBC driver that had been provided in WebSphere Application Server V6.1. To replace the functionality provided by the WebSphere Connect JDBC driver, WebSphere Application Server V7.0 is tested with the DataDirect Connect for JDBC driver and the <a href="https://msdn.microsoft.com/en-us/data/aa937724.aspx" mce_href="https://msdn.microsoft.com/en-us/data/aa937724.aspx">Microsoft SQL Server JDBC Driver</a>, which may be obtained from DataDirect Technologies or Microsoft.</p></blockquote><p>Connect your WebSphere/Java apps to SQL Server with this driver.&nbsp; Actually, you can connect *any* Java application to SQL this way - it doesn't have to be running in WebSphere.&nbsp; If you develop in Jetty or Tomcat or JBoss or Geronimo, the MS JDBC Driver will work fine for you.&nbsp; <br></p><p>If you have .NET applications, or Office apps, of course you can connect them to SQL Server also. In this way, SQL Server can serve as a nice interop point between Java and .NET applications, or between Java and MS Office (Let's say... an Excel spreadsheet). </p><p>Some notes:</p><ul><li>the MS JDBC Driver is a <a href="https://rds.yahoo.com/_ylt=A0oGkjdKFxJJ7hIA5YtXNyoA;_ylu=X3oDMTByZWgwN285BHNlYwNzcgRwb3MDMQRjb2xvA3NrMQR2dGlkAw--/SIG=144ld1cf6/EXP=1226008778/**http%3a//www.microsoft.com/downloads/details.aspx%3ffamilyid=C47053EB-3B64-4794-950D-81E1EC91C1BA%26displaylang=en" mce_href="https://rds.yahoo.com/_ylt=A0oGkjdKFxJJ7hIA5YtXNyoA;_ylu=X3oDMTByZWgwN285BHNlYwNzcgRwb3MDMQRjb2xvA3NrMQR2dGlkAw--/SIG=144ld1cf6/EXP=1226008778/**http%3a//www.microsoft.com/downloads/details.aspx%3ffamilyid=C47053EB-3B64-4794-950D-81E1EC91C1BA%26displaylang=en">free download</a>.&nbsp;&nbsp; <br></li><li>It is a full type-4 (100% Java) JDBC 3.0 driver, fully tested and compliant with Sun's verification suite.<br></li><li>It connects to SQL Server 2000, 2005 or 2008</li><li>It works from any JVM on any OS platform, including Linux<br></li><li>It works with the <a href="https://rds.yahoo.com/_ylt=A0oGkmoLGhJJ9jQBcdJXNyoA;_ylu=X3oDMTByZWgwN285BHNlYwNzcgRwb3MDMQRjb2xvA3NrMQR2dGlkAw--/SIG=12eehnovf/EXP=1226009483/**http%3a//www.microsoft.com/sql/editions/express/default.mspx" mce_href="https://rds.yahoo.com/_ylt=A0oGkmoLGhJJ9jQBcdJXNyoA;_ylu=X3oDMTByZWgwN285BHNlYwNzcgRwb3MDMQRjb2xvA3NrMQR2dGlkAw--/SIG=12eehnovf/EXP=1226009483/**http%3a//www.microsoft.com/sql/editions/express/default.mspx">Express version of SQL Server</a> (which is also a free download) and it works with the Standard and Enterprise versions, too.</li><li>There is <a href="https://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=87&amp;SiteID=1" mce_href="https://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=87&amp;SiteID=1">forum support available for the driver</a></li><li>There's a tech preview of a JDBC 4.0 compliant driver, <a href="https://www.microsoft.com/downloads/details.aspx?familyid=f914793a-6fb4-475f-9537-b8fcb776befd&amp;displaylang=en" mce_href="https://www.microsoft.com/downloads/details.aspx?familyid=f914793a-6fb4-475f-9537-b8fcb776befd&amp;displaylang=en">here</a>.<br></li></ul>If this is the sort of thing that interests you, be sure to check the <a href="https://blogs.msdn.com/jdbcteam" mce_href="https://blogs.msdn.com/jdbcteam">team blog for the JDBC driver</a>. <br><br>]]></content:encoded>
    </item>
    <item>
      <title>Such a deal! MSDN for startups</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/such-a-deal-msdn-for-startups</link>
      <pubDate>Wed, 05 Nov 2008 16:20:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/11/05/such-a-deal-msdn-for-startups/</guid>
      <description><![CDATA[Today Microsoft announced BizSpark: https://www.microsoftstartupzone.com/bizspark

This program...]]></description>
      <content:encoded><![CDATA[
<p>Today Microsoft announced <b>BizSpark</b>: <a href="https://www.microsoftstartupzone.com/bizspark" mce_href="https://www.microsoftstartupzone.com/bizspark">https://www.microsoftstartupzone.com/bizspark</a><br></p>

<p>This program gives ISV startup with less than USD$1m in annual revenue (lower amounts for some other countries - for example it's just USD$250k for Egypt) free access to MSDN subscriptions. Nice. You get Visual Studio, Expression, VSTS, SQL Server, BizTalk Server, SharePoint Server, Windows Server - all you need to build a software app on the Microsoft application platform.&nbsp; <br></p>



<p>There are some requirements:&nbsp; you have to be a software startup, privately held, and there's the revenue limit.&nbsp; If you don't qualify for that deal, there are others that may work for you. Here's a summary : <br></p>
<ul>
<li><a href="https://www.microsoftstartupzone.com/bizspark" title="BizSpark">BizSpark</a> - Free development software for ISVs.</li>
<li><a href="https://www.empowerforisv.com/" title="Empower">Empower for ISVs</a> - Accelerates ISVs development on the Microsoft platform&nbsp;with software,&nbsp;support, and other resources.</li>
<li><a href="https://www.dreamspark.com/default.aspx" title="DreamSpark">DreamSpark</a> -&nbsp; like BizSpark, but for Students. Download Microsoft developer and design tools at no charge.</li>
<li><a href="https://www.microsoftstartupzone.com/Software/Pages/Try_a_Product.aspx" title="Free stuff">Free software</a> - Free software and trial software.</li>
</ul>Check it out...<br>
]]></content:encoded>
    </item>
    <item>
      <title>REST in WCF: Varying response content type based on HTTP Request Headers</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/rest-in-wcf-varying-response-content-type-based-on-http-request-headers</link>
      <pubDate>Tue, 04 Nov 2008 16:39:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/11/04/rest-in-wcf-varying-response-content-type-based-on-http-request-headers/</guid>
      <description><![CDATA[Damian Mehers&nbsp;made a comment on my blog post from April, but I felt it was worth a full...]]></description>
      <content:encoded><![CDATA[<P><A class="" href="https://damianblog.com/" mce_href="https://damianblog.com">Damian Mehers</A>&nbsp;made a <A class="" href="https://blogs.msdn.com/dotnetinterop/archive/2008/04/03/varying-content-type-according-to-the-url-in-wcf-rest-service.aspx#9027543" mce_href="https://blogs.msdn.com/dotnetinterop/archive/2008/04/03/varying-content-type-according-to-the-url-in-wcf-rest-service.aspx#9027543">comment</A> on <A class="" href="https://blogs.msdn.com/dotnetinterop/archive/2008/04/03/varying-content-type-according-to-the-url-in-wcf-rest-service.aspx" mce_href="https://blogs.msdn.com/dotnetinterop/archive/2008/04/03/varying-content-type-according-to-the-url-in-wcf-rest-service.aspx">my blog post from April</A>, but I felt it was worth a full reblog.</P>
<P>Damian's used the same WCF extensibility&nbsp;points I used to produce some boilerplate that varies the response content type from JSON to XML, based on the Accept or Content-Type&nbsp;header of the GET request.&nbsp; He extends WebHttpBehavior to return an IDispatchMessageFormatter that does either JSON or XML. </P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 2pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 2pt; FONT-SIZE: 9pt; BACKGROUND: white; PADDING-BOTTOM: 2pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; LINE-HEIGHT: 98%; PADDING-TOP: 2pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Consolas, Courier New">
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">WebHttpBehavior2Ex</SPAN> : <SPAN style="COLOR: #2b91af">WebHttpBehavior</SPAN></P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">protected</SPAN> <SPAN style="COLOR: blue">override</SPAN> <SPAN style="COLOR: #2b91af">IDispatchMessageFormatter</SPAN> GetReplyDispatchFormatter(<SPAN style="COLOR: #2b91af">OperationDescription</SPAN> operationDescription, </P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <SPAN style="COLOR: #2b91af">ServiceEndpoint</SPAN> endpoint)</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #2b91af">WebGetAttribute</SPAN> webGetAttribute = operationDescription.Behaviors.Find&lt;<SPAN style="COLOR: #2b91af">WebGetAttribute</SPAN>&gt;();</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #2b91af">DynamicResponseTypeAttribute</SPAN> mapAcceptedContentTypeToResponseEncodingAttribute = </P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; operationDescription.Behaviors.Find&lt;<SPAN style="COLOR: #2b91af">DynamicResponseTypeAttribute</SPAN>&gt;();</P>
<P style="MARGIN: 0px" mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (webGetAttribute != <SPAN style="COLOR: blue">null</SPAN> &amp;&amp; mapAcceptedContentTypeToResponseEncodingAttribute != <SPAN style="COLOR: blue">null</SPAN>) {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">// We need two formatters, since we don't know what type we will need until runtime</SPAN></P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; webGetAttribute.ResponseFormat = <SPAN style="COLOR: #2b91af">WebMessageFormat</SPAN>.Json;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #2b91af">IDispatchMessageFormatter</SPAN> jsonDispatchMessageFormatter = </P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">base</SPAN>.GetReplyDispatchFormatter(operationDescription, endpoint);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; webGetAttribute.ResponseFormat = <SPAN style="COLOR: #2b91af">WebMessageFormat</SPAN>.Xml;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #2b91af">IDispatchMessageFormatter</SPAN> xmlDispatchMessageFormatter = </P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">base</SPAN>.GetReplyDispatchFormatter(operationDescription, endpoint);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">DynamicFormatter</SPAN>() { </P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; jsonDispatchMessageFormatter = jsonDispatchMessageFormatter, </P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xmlDispatchMessageFormatter = xmlDispatchMessageFormatter };</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> <SPAN style="COLOR: blue">base</SPAN>.GetReplyDispatchFormatter(operationDescription, endpoint);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; }</P></DIV>
<P>And then in the DynamicFormatter code, he just picks the formatter as appropriate: </P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 2pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 2pt; FONT-SIZE: 9pt; BACKGROUND: white; PADDING-BOTTOM: 2pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; LINE-HEIGHT: 98%; PADDING-TOP: 2pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Consolas, Courier New">
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">DynamicFormatter</SPAN> : <SPAN style="COLOR: #2b91af">IDispatchMessageFormatter</SPAN></P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: #2b91af">IDispatchMessageFormatter</SPAN> jsonDispatchMessageFormatter { <SPAN style="COLOR: blue">get</SPAN>; <SPAN style="COLOR: blue">set</SPAN>; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: #2b91af">IDispatchMessageFormatter</SPAN> xmlDispatchMessageFormatter { <SPAN style="COLOR: blue">get</SPAN>; <SPAN style="COLOR: blue">set</SPAN>; }</P>
<P style="MARGIN: 0px" mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> DeserializeRequest(System.ServiceModel.Channels.<SPAN style="COLOR: #2b91af">Message</SPAN> message, <SPAN style="COLOR: blue">object</SPAN>[] parameters)</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">NotImplementedException</SPAN>();</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px" mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> System.ServiceModel.Channels.<SPAN style="COLOR: #2b91af">Message</SPAN> SerializeReply(<SPAN style="COLOR: #2b91af">MessageVersion</SPAN> messageVersion, <SPAN style="COLOR: blue">object</SPAN>[] parameters, <SPAN style="COLOR: blue">object</SPAN> result)</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #2b91af">Message</SPAN> request = <SPAN style="COLOR: #2b91af">OperationContext</SPAN>.Current.RequestContext.RequestMessage;</P>
<P style="MARGIN: 0px" mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">// This code is based on ContentTypeBasedDispatch example in WCF REST Starter Kit Samples</SPAN></P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">// It calls either </SPAN></P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #2b91af">HttpRequestMessageProperty</SPAN> prop = (<SPAN style="COLOR: #2b91af">HttpRequestMessageProperty</SPAN>)request.Properties[<SPAN style="COLOR: #2b91af">HttpRequestMessageProperty</SPAN>.Name];</P>
<P style="MARGIN: 0px" mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">string</SPAN> accepts = prop.Headers[<SPAN style="COLOR: #2b91af">HttpRequestHeader</SPAN>.Accept];</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (accepts != <SPAN style="COLOR: blue">null</SPAN>)</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (accepts.Contains(<SPAN style="COLOR: #a31515">"text/xml"</SPAN>) || accepts.Contains(<SPAN style="COLOR: #a31515">"application/xml"</SPAN>))</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> xmlDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">else</SPAN> <SPAN style="COLOR: blue">if</SPAN> (accepts.Contains(<SPAN style="COLOR: #a31515">"application/json"</SPAN>))</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> jsonDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">else</SPAN></P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">string</SPAN> contentType = prop.Headers[<SPAN style="COLOR: #2b91af">HttpRequestHeader</SPAN>.ContentType];</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (contentType != <SPAN style="COLOR: blue">null</SPAN>)</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (contentType.Contains(<SPAN style="COLOR: #a31515">"text/xml"</SPAN>) || contentType.Contains(<SPAN style="COLOR: #a31515">"application/xml"</SPAN>))</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> xmlDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">else</SPAN> <SPAN style="COLOR: blue">if</SPAN> (contentType.Contains(<SPAN style="COLOR: #a31515">"application/json"</SPAN>))</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> jsonDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> xmlDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</P>
<P style="MARGIN: 0px" mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; }</P></DIV>
<P mce_keep="true">It's pretty nifty and it requires no changes to the app logic.&nbsp; You need to use a custom ServiceHost and use a custom attribute on each Operation.&nbsp; Because it uses the HTTP headers and not the URI itself to determine content-type of the response, I think it has some nice benefits over the approach I described in April. </P>
<P mce_keep="true">Damian's got a full VS2008 solution will all the boilerplate code.</P>
<P mce_keep="true">check it out. </P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>It just got easier to build REST apps in .NET</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/it-just-got-easier-to-build-rest-apps-in-net</link>
      <pubDate>Wed, 29 Oct 2008 17:48:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/10/29/it-just-got-easier-to-build-rest-apps-in-net/</guid>
      <description><![CDATA[The REST starter kit that we launched at PDC is now live! ::&nbsp;https://www.msdn.com/wcf/rest ....]]></description>
      <content:encoded><![CDATA[<P>The REST starter kit that we launched at PDC is now live! ::&nbsp;<A href="https://www.msdn.com/wcf/rest" mce_href="https://www.msdn.com/wcf/rest">https://www.msdn.com/wcf/rest</A> . </P>
<P>The WCF REST Starter Kit is a set of features, Visual Studio templates, samples and guidance that help people build REST apps using WCF.&nbsp; WCF, part of the .NET Framework, got some enhancements for REST support in the .NET&nbsp;3.5 release.&nbsp; This starter kit is a bunch of blueprints and supporting material to make it easier to use what is in the Framework for REST. </P>
<P>Like, blueprints and guidelines for how to do caching, security, error handling, help page support, conditional PUT, push style streaming, type based dispatch and semi-structured XML support.&nbsp; Whoa! </P>
<P>The WCF REST Starter Kit also provides Visual Studio templates for creating REST style services such as an Atom feed service, a REST-RPC hybrid service, Resource singleton and collection services and an Atom Publishing Protocol service. In addition, there are samples, documentation and other guidance that help to use these new capabilities. </P>
<P>The goal is to provide a toolset that simplifies building RESTful services today, and to take feedback from the developer community on the features provided in the WCF REST Starter Kit that will shape future REST capabilities in WCF 4.0. </P>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft joins AMQP</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/microsoft-joins-amqp</link>
      <pubDate>Fri, 24 Oct 2008 17:04:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/10/24/microsoft-joins-amqp/</guid>
      <description><![CDATA[Microsoft joins AMQP
It's very good to see this. For those that don't know, AMQP is the Advanced...]]></description>
      <content:encoded><![CDATA[
<p><a href="https://news.cnet.com/8301-1001_3-10074575-92.html" mce_href="https://news.cnet.com/8301-1001_3-10074575-92.html">Microsoft joins AMQP</a></p>
<p>It's very good to see this. For those that don't know, AMQP is the <a href="https://jira.amqp.org/confluence/display/AMQP/Advanced+Message+Queuing+Protocol" mce_href="https://jira.amqp.org/confluence/display/AMQP/Advanced+Message+Queuing+Protocol">Advanced Message Queuing Protocol</a>, a nascent middleware standard that describes an interoperable protocol for application messaging systems.  Driven primarily by companies, and not by vendors, AMQP aims to introduce new innovation, more competition, and better interop between messaging subsystems.&nbsp; <br></p>
<p>If you've read any of my other blog postings you know that interop and messaging systems are near and dear to my heart.&nbsp; This is very good indeed for customers who build and run enterprise information systems with a great deal of heterogeneity. Imagine if MSMQ and the messaging infrastructure on RedHat Enterprise Linux used the same on-the-wire protocol, and supported the same service semantics.&nbsp; This would mean your messaging clients could talk to either message service with full interoperability and switchability.&nbsp; </p><p>Some nice possibilities here. Great to see it being driven so much by the companies themselves. <br></p>
]]></content:encoded>
    </item>
    <item>
      <title>IIRF v1.2.15 is released - open source URL Rewriting on IIS6</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/iirf-v1-2-15-is-released-open-source-url-rewriting-on-iis6</link>
      <pubDate>Wed, 15 Oct 2008 10:21:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/10/15/iirf-v1-2-15-is-released-open-source-url-rewriting-on-iis6/</guid>
      <description><![CDATA[I have previously written about IIRF.&nbsp;&nbsp; Here I go again:&nbsp; IIRF has now has been...]]></description>
      <content:encoded><![CDATA[<P>I have <A class="" href="https://blogs.msdn.com/dotnetinterop/archive/2008/06/18/rewriting-urls-on-iis5-iis6-or-iis7-mod-rewrite-on-iis.aspx" mce_href="https://blogs.msdn.com/dotnetinterop/archive/2008/06/18/rewriting-urls-on-iis5-iis6-or-iis7-mod-rewrite-on-iis.aspx">previously written about IIRF</A>.&nbsp;&nbsp; Here I go again:&nbsp; IIRF has now has been updated to v1.2.15.&nbsp; </P>
<P>IIRF is <STRONG><A class="" href="https://www.codeplex.com/IIRF" mce_href="https://www.codeplex.com/IIRF">Ionic's Isapi Rewrite Filter</A>.&nbsp; </STRONG>It&nbsp;is a small, cheap, easy to use, URL rewriting ISAPI filter that combines a good price (free!) with good features. It is fast and powerful. It works on IIS 5.0, 5.1, 6.0, and 7.0.</P>
<P>You may have heard about the <A class="" href="https://blogs.iis.net/bills/archive/2008/05/31/urlrewrite-module-for-iis7.aspx" mce_href="https://blogs.iis.net/bills/archive/2008/05/31/urlrewrite-module-for-iis7.aspx">Rewriting Module for IIS7</A>&nbsp;from Microsoft.&nbsp; This is not that thing.&nbsp; This is a rewriter for IIS6 or 7.&nbsp; </P>
<P>It works with regular expressions. It's fast.&nbsp; It's written in C. It's open source.&nbsp; It does not require the .NET Framework.&nbsp; It works with PHP, Ruby, ColdFusion, JSP, ASP.NET, and anything else you can run on IIS. </P>
<P>Check it out. </P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>DotNetZip revs to v1.6 – now with Unicode support</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/dotnetzip-revs-to-v1-6-now-with-unicode-support</link>
      <pubDate>Tue, 14 Oct 2008 17:54:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/10/14/dotnetzip-revs-to-v1-6-now-with-unicode-support/</guid>
      <description><![CDATA[The v1.6 release of DotNetZip is now available.&nbsp; DotNetZip is the open source Zip Library for...]]></description>
      <content:encoded><![CDATA[<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The v1.6 release of DotNetZip is now available.&nbsp; DotNetZip is the open source Zip Library for .NET, available at <A href="https://www.codeplex.com/DotNetZip" mce_href="https://www.codeplex.com/DotNetZip"><SPAN style="COLOR: blue; TEXT-DECORATION: underline">https://www.codeplex.com/DotNetZip</SPAN></A> . </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Major new features: </SPAN></P>
<UL>
<LI><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Unicode support, as well as support for arbitrary code pages. Now you can build zip files that have names with Unicode characters. </SPAN></LI>
<LI><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Large file support.&nbsp; Full streaming architecture means you can zip large files without loading them into memory all at one time. </SPAN></LI>
<LI><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Partial Trust&nbsp; - for running on shared hosetd ASP.NET servers&nbsp; </SPAN></LI></UL>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DotNetZip is still small, fast, and the easiest .NET zip library to use. Check this sample code:</SPAN></P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 2pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 2pt; FONT-SIZE: 9pt; BACKGROUND: white; PADDING-BOTTOM: 2pt; BORDER-LEFT: windowtext 1pt solid; COLOR: black; LINE-HEIGHT: 98%; PADDING-TOP: 2pt; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: Consolas, Courier New"><PRE>      <SPAN style="COLOR: #a020f0">using</SPAN> (<SPAN style="COLOR: #228b22">var</SPAN> <SPAN style="COLOR: #b8860b">zip</SPAN> = <SPAN style="COLOR: #a020f0">new</SPAN> ZipFile())
      {
        <SPAN style="COLOR: #5f9ea0">zip</SPAN>.AddDirectory(directory);
        <SPAN style="COLOR: #5f9ea0">zip</SPAN>.Save(targetZip);
      }
</PRE></DIV>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">It is 100% managed code. People love it: </SPAN></P>
<P style="TEXT-ALIGN: center"><IMG alt="" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/dotnetinterop/101408_2152_DotNetZipre1.png" original-url="https://blogs.msdn.com/blogfiles/dotnetinterop/101408_2152_DotNetZipre1.png" mce_src="https://blogs.msdn.com/blogfiles/dotnetinterop/101408_2152_DotNetZipre1.png"> </P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DotNetZip is powerful, too: it does password-protected zip files, zip comments, self-extracting zips, zip-to-stream, stream-to-zip, and more.&nbsp; You can use it in any .NET app - WinForms, console app, ASP.NET page, etc.&nbsp; In ASP.NET, you can write a zip archive directly to Response.OutputStream as a download to the browser client. On the codeplex site, there are lots of examples and the documentation is solid. </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DotNetZip is free, but is <A href="https://en.wikipedia.org/wiki/Donationware" mce_href="https://en.wikipedia.org/wiki/Donationware"><SPAN style="COLOR: #666666; TEXT-DECORATION: underline">donationware</SPAN></A>. For those who are happy with DotNetZip, I am <A href="https://cheeso.members.winisp.net/DotNetZipDonate.aspx" mce_href="https://cheeso.members.winisp.net/DotNetZipDonate.aspx"><SPAN style="COLOR: #666666; TEXT-DECORATION: underline">accepting donations</SPAN></A> on behalf of my favorite charity. </SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Eclipse tools for Silverlight and .NET</title>
      <link>https://docs.microsoft.com/archive/blogs/dotnetinterop/eclipse-tools-for-silverlight-and-net</link>
      <pubDate>Mon, 13 Oct 2008 16:00:00 GMT</pubDate>
      <dc:creator><![CDATA[cheeso]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dotnetinterop/2008/10/13/eclipse-tools-for-silverlight-and-net/</guid>
      <description><![CDATA[There is now an Eclipse project, Eclipse4SL,&nbsp;to produce tools that work with Microsoft...]]></description>
      <content:encoded><![CDATA[<P>There is now an Eclipse project, <A class="" href="https://www.eclipse4sl.org/" mce_href="https://www.eclipse4sl.org/">Eclipse4SL</A>,&nbsp;to produce tools that work with <A class="" href="https://www.microsoft.com/silverlight" mce_href="https://www.microsoft.com/silverlight">Microsoft Silverlight</A>.&nbsp; See <A class="" href="https://blogs.msdn.com/neilhut/archive/2008/10/13/eclipse-tools-for-silverlight.aspx" mce_href="https://blogs.msdn.com/neilhut/archive/2008/10/13/eclipse-tools-for-silverlight.aspx">Neil Hutson's blog post</A> for some details. </P>
<BLOCKQUOTE>
<P>For those of you who have day jobs and find it hard to keep up with all the code-names and product names coming out of Microsoft, Silverlight is the name a cross-browser, cross-platform, and cross-device plug-in for rich interactive applications for the Web. <EM>Huh?</EM>&nbsp; Break it down: </P>
<OL>
<LI><STRONG>Silverlight is a browser plug-in</STRONG>: Runs in IE, Firefix, Opera, and more.&nbsp; </LI>
<LI><STRONG>As a plug-in, Silverlight provides a runtime</STRONG>, which is at it's core, .NET based.&nbsp; It is a lightweight version (subset) of the .NET Framework.&nbsp;When you write declarative code, you'll be using a .NET langauge &nbsp;&nbsp;</LI>
<LI><STRONG>Silverlight is cross-platform</STRONG>: Microsoft produces versions to run on Windows and Mac and the Mono project is doing <A class="" href="https://www.mono-project.com/Moonlight" mce_href="https://www.mono-project.com/Moonlight">Moonlight for Linux</A>.&nbsp; </LI>
<LI><STRONG>Silverlight is for Rich Interactive apps</STRONG>.&nbsp; This means high-def video, audio, hypertext, dynamic data.&nbsp;&nbsp;&nbsp;</LI></OL>
<P>Bottom line, Silverlight is like Adobe's Flash, but built on a broad platform (.NET and the CLR) with mainstream language support (C# and VB) as opposed to a relatively narrow platform and runtime requiring ActionScript. </P></BLOCKQUOTE>
<P>Because Silverlight uses a lightweight NET runtime, if the <A class="" href="https://www.eclipse4sl.org/" mce_href="https://www.eclipse4sl.org/">Eclipse4SL project</A> succeeds, developers will be able to use Eclipse&nbsp;tools to create .NET applications. How about that!&nbsp; You will be able to edit <A class="" href="https://www.eclipse4sl.org/images/About_xaml.png" mce_href="https://www.eclipse4sl.org/images/About_xaml.png">XAML</A> and <A class="" href="https://www.eclipse4sl.org/images/About_CS.png" mce_href="https://www.eclipse4sl.org/images/About_CS.png">C# in Eclipse</A>!&nbsp;&nbsp; </P>
<P>Milestone 1 for Eclipse4SL is set for this week: October 14th there'll be a CTP of the tools. Feature complete in December.&nbsp; Nice!&nbsp; I love to see this. Love it, love it, love it. </P>
<P>From the Eclipse4SL website, Interop is a key criterion for success:&nbsp; <EM><STRONG>Increased Interoperability:</STRONG> Eclipse will contain functionality that will help Java Developers build Silverlight applications that work better with Java Web Services using REST, SOAP, JSON and other standards.&nbsp;&nbsp;&nbsp;&nbsp;</EM>There's a company called Soyatec, a longtime Eclipse Foundation member,&nbsp;doing the analysis and development work. </P>
<P>For my part, I'm so glad we're getting to the point where we all can work together collaboratively to produce interesting stuff for customers.&nbsp;&nbsp; Next milestone:&nbsp; when a proejct like this doesn't warrant blog posts entitled "<A class="" href="https://dev.eclipse.org/blogs/mike/2008/10/13/interesting-times-indeed/" mce_href="https://dev.eclipse.org/blogs/mike/2008/10/13/interesting-times-indeed/">interesting times indeed</A>."&nbsp; </P>
<P>:)</P>]]></content:encoded>
    </item>
  </channel>
</rss>