<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Will's Blog &#187; ASP.NET</title>
	<atom:link href="http://will.hughesfamily.net.au/category/aspnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://will.hughesfamily.net.au</link>
	<description>Travel, Photography, Geek Stuff</description>
	<lastBuildDate>Sat, 19 Nov 2011 14:26:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>JIRA, Fisheye and IIS7 using Application Request Routing</title>
		<link>http://will.hughesfamily.net.au/20100112/jira-fisheye-and-iis7-using-application-request-routing/</link>
		<comments>http://will.hughesfamily.net.au/20100112/jira-fisheye-and-iis7-using-application-request-routing/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 21:39:27 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://will.hughesfamily.net.au/?p=1020</guid>
		<description><![CDATA[Atlassian already have some documentation on how to integrate IIS and JIRA. Unfortunately it requires installing some ISAPI components, and a whole lot of fiddling around. I wanted to see if I could get Application Request Routing to do the same job. Turns out, yes, you can &#8211; here&#8217;s how. 1. Make sure JIRA is [...]]]></description>
			<content:encoded><![CDATA[<p>Atlassian already have some documentation on <a href="http://confluence.atlassian.com/display/JIRA/Integrating+JIRA+with+IIS">how to integrate IIS and JIRA</a>.</p>
<p>Unfortunately it requires installing some ISAPI components, and a whole lot of fiddling around.</p>
<p>I wanted to see if I could get Application Request Routing to do the same job. Turns out, yes, you can &#8211; here&#8217;s how.</p>
<p>1. Make sure JIRA is installed and working on your server.</p>
<blockquote><p>Let&#8217;s say that it&#8217;s at http://example.com:8080/</p>
<p>I want to access JIRA via: http://jira.example.com/ &#8211; but IIS7 is already using port 80 on that server.</p></blockquote>
<p>2. Alter your <strong>conf/server.xml</strong> file in JIRA.</p>
<blockquote><p>Find the /Server/Service/Connector element, and add two attributes:</p>
<p>proxyName=&#8221;jira.example.com&#8221;</p>
<p>proxyPort=&#8221;80&#8243;</p>
<p>The Connector element should now look something like</p>
<pre> &lt;Connector port="8080" enableLookups="false" proxyName="jira.example.com" proxyPort="80"&gt;</pre>
</blockquote>
<p>3. Restart the JIRA Service.</p>
<p>4. Install, if you havn&#8217;t already, Application Request Routing 2.0, along with URL Rewriting 2.0</p>
<p>5. Enable Proxying on ARR:</p>
<ul>
<li>From the IIS7 Console, click on {ServerName}.</li>
<li>Open Application Request Routing.</li>
<li>From the Actions pane on the right hand side, Select  &#8216;Server Proxy Settings&#8217;</li>
<li>Check &#8216;Enable Proxy&#8217;</li>
<li>Set HTTP Version to &#8216;HTTP/1.1&#8242;</li>
</ul>
<p>6. Add a new site &#8216;jira.example.com&#8217;, with bindings for http://jira.example.com</p>
<p>7. Add a new URL Rewrite Rule for jira.example.com</p>
<ul>
<li>From the IIS7 Console, click on jira.example.com</li>
<li>Open URL Rewrite</li>
<li>From the Actions pane on the right hand side, select &#8216;Add Rules&#8217;</li>
<li>Choose &#8216;Blank Rule&#8217;</li>
<li>Set Match Rule to:</li>
<blockquote>
<li>Requested URL Matches the Pattern</li>
<li>Using Regular Expressions</li>
<li>Pattern: (.*)</li>
<li>Ignore Case: checked</li>
</blockquote>
<li>Set Action to:</li>
<blockquote>
<li>Action Type: Rewrite</li>
<li>Rewrite URL: http://example.com:8080/{R:1}</li>
<li>Append query string: checked</li>
</blockquote>
<li>Stop processing of subsequent rules: checked</li>
</ul>
<p>8. Now, with any luck &#8211; you should be able to access JIRA via http://jira.example.com  - if not, something isn&#8217;t set correctly.</p>
<p>Setting up Fisheye is almost as simple.</p>
<p>Say Fisheye is set up on http://example.com:8060 and I want to access it via http://fisheye.example.com</p>
<p>Repeat steps 4-8 above, substituting &#8216;fisheye&#8217; for &#8216;jira&#8217;, and then verify you can access fisheye from http://fisheye.example.com</p>
<p>If you&#8217;re also doing .NET Development, or have .cs/.aspx/.asmx files in your repository, then you&#8217;ll also need to do the following.</p>
<blockquote><p>Edit the web.config for fisheye.jira.com</p>
<p>Add the following to just before &lt;/system.webServer&gt;</p>
<pre>&lt;handlers&gt;
 &lt;remove name="WebServiceHandlerFactory-ISAPI-2.0-64" /&gt;
 &lt;remove name="WebServiceHandlerFactory-ISAPI-2.0" /&gt;
 &lt;remove name="PageHandlerFactory-ISAPI-2.0" /&gt;
 &lt;remove name="PageHandlerFactory-ISAPI-2.0-64" /&gt;
 &lt;remove name="PageHandlerFactory-Integrated" /&gt;
 &lt;remove name="WebServiceHandlerFactory-Integrated" /&gt;
 &lt;remove name="SimpleHandlerFactory-ISAPI-2.0-64" /&gt;
 &lt;remove name="SimpleHandlerFactory-ISAPI-2.0" /&gt;
 &lt;remove name="SimpleHandlerFactory-Integrated" /&gt;
 &lt;remove name="CGI-exe" /&gt;
 &lt;remove name="ISAPI-dll" /&gt;
&lt;/handlers&gt;
&lt;staticContent&gt;
 &lt;mimeMap fileExtension=".cs" mimeType="text/plain" /&gt;
&lt;/staticContent&gt;
&lt;security&gt;
 &lt;requestFiltering&gt;
  &lt;fileExtensions&gt;
   &lt;remove fileExtension=".config" /&gt;
   &lt;remove fileExtension=".csproj" /&gt;
   &lt;remove fileExtension=".cs" /&gt;
   &lt;add fileExtension=".cs" allowed="true" /&gt;
   &lt;add fileExtension=".csproj" allowed="true" /&gt;
   &lt;add fileExtension=".config" allowed="true" /&gt;
  &lt;/fileExtensions&gt;
 &lt;/requestFiltering&gt;
&lt;/security&gt;</pre>
</blockquote>
<p>If there are any additional filetypes that are in your Fisheye repository that generate 404 errors when navigating, then add them to the fileExtensions section. First as a &#8216;Remove&#8217;, and then an &#8216;Add&#8217; with allowed=true. You&#8217;ll also need to probably add a mimeMap entry too.</p>
<p>Thanks to <a href="http://twitter.com/ohcrap">@OhCrap</a> for the pointers on enabling .cs serving with IIS7.</p>
]]></content:encoded>
			<wfw:commentRss>http://will.hughesfamily.net.au/20100112/jira-fisheye-and-iis7-using-application-request-routing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributed Object Caching: Memcached &amp; Velocity</title>
		<link>http://will.hughesfamily.net.au/20080627/distributed-object-caching-memcached-velocity/</link>
		<comments>http://will.hughesfamily.net.au/20080627/distributed-object-caching-memcached-velocity/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 14:35:49 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://will.hughesfamily.net.au/20080627/distributed-object-caching-memcached-velocity/</guid>
		<description><![CDATA[I&#8217;m working on a new project at work where we&#8217;re dealing with data that updates frequently, at unpredictable times, used in across several different front-end services, and needs to scale to pretty decent traffic levels without going nuts on buying more hardware. So, given all that, one of the things we&#8217;re looking at is using [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a new project at work where we&#8217;re dealing with data that updates frequently, at unpredictable times, used in across several different front-end services, and needs to scale to pretty decent traffic levels without going nuts on buying more hardware. </p>
<p>So, given all that, one of the things we&#8217;re looking at is using a distributed object caching layer, such as memcached.&nbsp; If you&#8217;re not sure what this technology does, the quick summary is that it is used to store commonly accessed data in memory on your servers. One of the most common uses is to cache results from database queries.&nbsp; </p>
<p><a href="http://www.danga.com/memcached/">memcached</a> started it&#8217;s life at <a href="http://www.danga.com/">Danga Interactive</a> to solve issues scaling <a href="http://www.livejournal.com/">LiveJournal</a> at 20 million+ pageviews per day. It has a proven track record in the Unix world, and a fairly significant base of knowledge on what works and various workarounds and solutions. </p>
<p>Whilst memcached is from Unix, there are also Windows based ports of the server, and also <a href="https://sourceforge.net/projects/memcacheddotnet/">.NET clients</a> so using it in our environment shouldn&#8217;t be an issue from the technical side.&nbsp; </p>
<p>Recently Microsoft also announced their entry into this space with a project code named <a href="http://blogs.msdn.com/velocity/">Velocity</a>. It&#8217;s pretty similar to memcached, but also has some additional functions allowing things like Tagging and Regionalising (Partitioning) data.&nbsp; There&#8217;s also more support at the moment for different cache expiry methods, and the roadmap includes additional redundancy bits too. </p>
<p>For anyone who is considering how their applications will scale up, there&#8217;s plenty more to read on the subject. </p>
<p>Dare Obasanjo has a post from July 2007 about <a href="http://www.25hoursaday.com/weblog/2007/07/05/ASPNETCachingVsMemcachedSeekingEfficientDataPartitioningLookupAndRetrieval.aspx">memcached on Windows</a>, and also more recently about <a href="http://www.25hoursaday.com/weblog/2008/06/06/VelocityADistributedInMemoryCacheFromMicrosoft.aspx">Velocity</a>.&nbsp; Scott Hanselman (Who I&#8217;m happy to say is coming to Tech.Ed Australia 2008!) has a podcast up about <a href="http://www.hanselman.com/blog/HanselminutesPodcast116DistributedCachingWithMicrosoftsVelocity.aspx">Velocity</a>, talking with Anil Nori &#8211; one of the smart fellows responsible for Velocity.</p>
<p>I&#8217;ll write some more on this as we progress down the build of this application.</p>
]]></content:encoded>
			<wfw:commentRss>http://will.hughesfamily.net.au/20080627/distributed-object-caching-memcached-velocity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

