<br><br><div class="gmail_quote">On Sat, Mar 7, 2009 at 6:05 AM, Hiawatha <span dir="ltr">&lt;<a href="mailto:imaudi@comcast.net">imaudi@comcast.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Hi all - I&#39;m investigating the possibility of porting a site from<br>
.NET/Windows Server to Apache/Mono and am doing some homework about running<br>
Mono applications on the web.  As it stands, it seems the two choices are<br>
XSP, which is designed to be a test/debug server and not for highly scalable<br>
production applications, or mod_mono which is a module that is compiled into<br>
Apache.  From what I understand, mod_mono requires mod_mono_server which<br>
answers inbound requests over a TCP/IP socket.  I&#39;m having a hard time<br>
understanding this design. First off, for every inbound socket opened in<br>
Apache, a new socket is opened for mod_mono_server, along with all the<br>
overhead on the network stack.  In the Windows world, IIS hosts the CLR in<br>
process and the two are very tightly integrated.  What&#39;s stopping Mono from<br>
incorporating this design?<br>
</blockquote><div><br>The main issue is the lack of reliability on such solution.<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
I&#39;m assuming Java does not have a separate Java server which Apache forwards<br>
requests to.</blockquote><div><br>You&#39;re wrong. All java web application are hosted on separate processes, this is true for<br>all major containers (tomcat, jetty, webfear and so on).<br><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
Can&#39;t Apache just be configured to natively run Mono applications in<br>
process?  Would this be a massive architectural change to the Mono runtime?<br>
As it stands right now, I don&#39;t see a possibility for any MySpace/Facebook<br>
level web applications running on Mono because I simply can&#39;t see mod_mono<br>
being able to scale to that level.<br>
</blockquote><div><br>This is a minor issue that should pose no scalability issues on itself.<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Perhaps some of the hard core Mono runtime guys can comment, I&#39;m sure<br>
they&#39;re 843x smarter than I am and there&#39;s very good reasons why mod_mono<br>
was designed the way it is, but I&#39;m wondering how this compares with PHP,<br>
Java, etc which all seem to be tightly integrated in with Apache.  Are there<br>
any plans to incorporate the Mono runtime directly into Apache, or maybe<br>
write a highly performant Mono server similar to Sun&#39;s Java Web Server?  I&#39;m<br>
not trying to criticize any design decisions, I&#39;m very new to Mono and UNIX<br>
server architecture and am just trying to understand the reasons behind<br>
this.  Thanks!!</blockquote><div><br>The cost of doing local IPC, be it with unix sockets or tcp/ip, is minimal. The cost<br>in terms of reliability is, on the other hand, big.<br></div></div><br>This is a very common setup, it&#39;s the recommended way with Java, Ruby and Python, at least.<br>
<br>The advantage is that the target running the application can crash without making the whole<br>machine unavailable. The other is that it&#39;s easier to periodically restart the back-end to be<br>sure things like memory leaks don&#39;t bring the machine down.<br>
<br>In the end, it&#39;s a choice that gives a very small performance penalty in trade of a huge reliability gain.<br>It&#39;s much better this way and I don&#39;t see any compelling reason to move to a worse configuration.<br>
<br><br>