Migrating an ASP.Net App to Azure - asp.net

I'm getting close to finishing a public-facing ASP.Net app and I'm starting to weigh deployment options. I'm an ASP.Net/SQLServer veteran but noob when it comes to Azure. I'm wondering how others have felt about the learning curve to effectively migrate a local dev ASP.Net/SQLServer apps into Azure cloud.
More specifically:
How steep is the learning curve towards understanding administration and programming concepts, and do you think it's worth the investment?
What is Microsoft's support like if I have catastrophic problems from my cloud infrastructure and my live site is down? My expectation is a large price tag for a not-so-urgent SLA.
Will my non-Azure ASP.Net app require significant modification and/or coupling to run in the Azure environment?
Thanks

I answered a similar question a while back, here. Azure has evolved since then:
Azure's AppFabric Cache is currently in CTP (community technology preview) and will go live some time later this year (sorry, I can't quote a date). With a single configuration change, you'll be able to enable the asp.net session state provider without changing any code, and have your session state available to all of your web role instances.
With Azure v1.3 which rolled out in November, you have have the ability to run tasks at startup with elevated privileges (e.g. to run an MSI to install some prerequisite control suite).
For monitoring, you can take advantage of Microsoft System Center, which now supports Azure directly. Alternatively, you can look into 3rd-party options such as AzureWatch.
With Azure's extra-small instance, you can run a site for approx. $44 monthly. You mentioned catastrophic failures and SLA. With Azure, you need a minimum of two instances for SLA to take effect (this is because your virtual machines are located in physically different areas of the data center, in separate fault domains). So you're looking at approx. $90 / month to run a site with 99.95% uptime. Only you can determine whether this is worth it to you. Yes, you can host with a simple hosting provider for significantly less (such as GoDaddy). However, if your site fails there, you have to wait for it to be detected and then installed on a separate box. Also, you share each server with potentially dozens of other tenants, which will impact your site's performance. With Azure, at most 8 tenants will occupy a box, depending on how many cores you configure your virtual machines to use. And it's incredibly simple to scale up or down to handle traffic increases and decreases.

My personal experience is that there isn't much documentation and you have to search through blogs / forums to find answers for more advanced questions. If you have a nicely design app then there shouldn't be much problem with porting - you can google for Azure version of ASP.NET providers, ie. membership.
The biggest disadvantage may be cost: you have to do your maths but for me it turned out that a VPS hosting is much cheaper than Azure.
I would say that unless you get considerable savings on infrastructure don't move to Azure for just the sake of doing it. A hosted server with SQL and IIS will give you less problems and a bit more freedom.

I see an excellent answer by David Makogon already. The following might be helpful for you as well. The last episode of the Connected Show podcast was about migrating Wold Maps to Azure. If you are considering moving to Azure it is certainly worth listening to, as they explain the challenges they faced during the migration.

You could give a look at Moving Applications to the Cloud on the Microsoft Windows Azure Platform in MSDN.
Cheers.

Related

Alfresco Community Enterprise Feature Comparison

I've seen this question but the answers are simply not good enough. I've searched the web and could find a clear listing of the main differences.
I am particularly surprised to see contradictions in the above link, that holds only 4 short answers.
So the question is, beyond support, what are (all) the differences between Alfresco Community and Enterprise editions (for the current versions of course)?
Are there functional or technical features that available in the Enterprise edition, that are not in the community edition?
I find it strange that it's so difficult to get a clear list. Looking at the forums to find this answer is not a serious option from a business perspective.
Until now, I found this link to be useful, but it's from 2009.
In particular, I find the platform support interesting, with the community edition supporting only lamp stuff:
Linux
MySQL
Tomcat
OpenLDAP
Firefox
And the enterprise edition supporting:
Windows
SQL Server
WebLogic, WebSphere
AD/Kerberos
IE and Safari
Apparently, these features are only available in the enterprise edition:
JMX monitoring
Runtime admininstration: What's that exactly? And what's in the community edition then?
Runtime indexing consistency check and update: What's in the community edition then?
High performance and availability: How is that implemented and what's in the community edition then?
Storage policies
Open source and proprietary technology stack support: which ones exaclty? Which ones are supported in the community edition?
If anyone could guide me towards serious documentation about these differences, that would be great.
I also went through the wiki but could not find an answer to my questions in there.
differences between Enterprise and Community vary in detail from version to version and are mainly visible for administrators. We see or maintain both flavors of Alfresco in midsize to very large environments and I would say it's more or less a question of taste and budget what the best decision / edition is for you. Excellent skills in infrastructure and java are highly advisable for both editions to run Alfresco in production.
The technical differences are not as dramatic as not being able to provide very similar functionality for the users - so if you're actually in a decision you should focus on a good technical partner, the support services and maybe the fact that you only get official patches in the Enterprise subscription, not on the Community. BTW Alfresco Enterprise is not Open Source but this is not a real point of interest for most end users. You can access the code as a subscription customer but it is not public available/accessible.
The main differences in features are already named more or less:
Administration
Enterprise has more views and setting in the admin web GUI. In Community you can access most configuration only from the command line. This may be a restriction but in real live Administrators prefer the command line and scripting automation.
Enterprise lets you change some Alfresco settings during runtime (most settings still require restart). Some can be change in the GUI and more in the jmx interface. Also you're able to stop and start subsystems like the CIFS protocol server. We use this feature to switch a system in read only mode. This point is meant with "runtime admininstration". Community requires restart of the service for most configuration changes. It is possible to work around this by advanced scripting like groovy or by implementing modules.
Indexing
Runtime indexing consistency check and update is not a self healing functionality as expected. You will have to learn (at least for now) that you have to recreate the Alfresco index from time to time even in Enterprise environments and that it is better to focus on good strategies how to speed recreation or how to setup standby indexes instead of hunting failed indexing transactions using the check and update methods. For major document model changes you need to recreate the index anyway.
High performance and availability
This is mainly the cluster and replication functionality which is no longer available in Community. It's similar to MS Clusters: It's a lot, lot work for very view more availability since some concepts are missing. The price is high in terms of complexity and can end up in loss of robustness. Even with enterprise support it's a hard job to keep a alfresco cluster running - so you need very good arguments why to go this way. But of course: its possible and available!
High performance: There shouldn't be any difference and if - I'm very curious about the explanation.
Technology stack
The main difference is the database support. In the Community you only can choose between MySQL and Postgres (No Oracle or MS SQL for Community). All other technologies are independent from Enterprise or Community (AD, Kerberos, OS, Browser, ...)
Java Container: I believe over 95% of all Alfresco installations run in tomcat. That's the configuration which is documented, tested and scales. Using WebLogic or WebSphere gives you no added value except new challenges - quite the contrary: You have to solve most issues for yourself and can't benefit from others experience.
Storage policies: I'm not pretty sure and should check in 4.2.x if the Content Store Selector / Storage policies is no longer available in the Community, but it was there in the 3.x versions.
[Edit]: storage policies have been removed in Community 4.2.x:
NoSuchBeanDefinitionException: No bean named 'storeSelectorContentStoreBase' is defined
If there is a really need for this functionality someone may re-enable that feature by coding a module for Community.
Regards
This page explains the difference between the editions:
https://wiki.alfresco.com/wiki/Enterprise_Edition
This page is the canonical, comprehensive list of the differences.
If you are considering an Enterprise Subscription and you have a question that isn't answered by what you can find on that page, you should talk to your account rep.
Well, regarding JMX monitoring:
Runtime administration: Alfresco enterprise allows to perform certain actions on Alfresco subsystems without restarting the server. This allows you to be very fast during debugging/developing and also making changes in production environment. Also you can access the JMX interface that supports JMX Remoting.
There is no consistency check or update, until you restart the server (during the startup you have to validate/check/rebuild your indexes). There is an option in alfresco.global.properties (or the original repository.properties config file) for that. If you have some inconsistencies in the Alfresco Community index, you're gonna have a bad time xD.
Alfresco Enterprise has specific license for clustering your architecture, the Community edition doesn't support those systems. Replicate and cluster Alfresco is one of the main improvements in performance/scalability/availability you could achieve.
The storage policies allow you to use Content Store selectors in Alfresco Enterprise. You can manage a primary and a secondary file store, and map/connect these stores in your architecture. The Community Edition allows you only to use one content store at a time.
These include everything inside Alfresco (Spring Framework, Apache-Lucene/Solr, Tomcat, and so on), because with the Enterprise license you have also the full support with everything inside the Alfresco package. The difference is that the Community is based on daily builds, supported by community, and therefor not guaranteed. The Enterprise support helps you resolve many problems that you might encounter during developing and in production environment, not only Alfresco related, but also on some configurations on supported platforms (Windows/Linux), your web application servers, and so on.
Hope it helps.

Development and Test Environment Best Practices?

This question is for ASP.NET and SQL Server developers. What are your best practices with respect to setting up your development and test environment? I'm interesting in the following issues:
How many tiers do you recommend and what goes on on each tier? Just dev, test, and production or perhaps dev, test, staging, and production?
Which types of applications and/or servers should run on actual physical hardware and which can get away with a VM?
What are your strategies for loosely coupling users from web sites, web developers from their web/app/DB servers, and DB developers from their DB servers?
How do developers stay "DRY?" (no deodorant jokes, please ;)
What are the pros and cons to putting web, app, and DB servers on their own machines? Does putting servers on separate machines in order to minimize contention for a machine's resources trump any NIC and network latencies that might be introduced by putting them on different machines?
How do you configure your web apps to minimize contention for resources (e.g. virtual directories, separate application pools, etc.)
How and how often do you refresh your databases on each tier? Do you just refresh the data or both the data and objects?
Thanks.
I can't comment on all of these but here's what i've found to work best in my experience.
1) Depends on your resources but ideally i like to have 4.
Dev is hyper flexible and owned by your dev team. It can get updated whenever they feel is best or as features are completed.
QA is updated on a scheduled or delivery basis depending on your process. If you do waterfall its updated when your in the testing phase, if you do iterative agile its updated each iteration. It should mimic prod as closely as possible but you may be able to get away with some compromise (see #2)
Staging should be identical in every way to prod. It should even use real production data if possible (potentially restored from a recent backup of the true production environment.) It should be used for acceptance testing prior to any release.
& Prod
2) Dev can be on a VM usually. QA can too most of the time. Staging and prod should match. I've seen folks run prod on VMs before, it depends on your resources and the demand for your app.
3) Our devs use a backup of prod on local SQL servers for development. This keeps everyone off of a central dev SQL server. Dev web and dev sql are separate boxes (just out of necessity they manage a bunch of projects.) same with QA, Staging and Prod.
4) A lot of testing and communication. If you have one small / medium team this isnt that hard. If you have lots of teams look at something like scrum, formal code reviews, something to keep communication going between teams. Don't treat DRY issues like suggested fixes, treat them like bugs, that need to be fixed. You'll spend way more time maintaining the code than writing it up front so treat maintenance as a 1st class citizen and make sure management is on board with that.
5 & 6) Not really qualified to comment
7) Dev whenever the teams need to, QA and up on a schedule depending on deployments. QA is every iteration / sprint, Staging and Prod is every release.

What is the Reason large sites don't use MySQL with ASP.NET?

I have read this article from High Scalability about Stack Overflow and other large websites. Many large high traffic .NET sites such as plentyoffish.com, MySpace and Stack Overflow all use .NET technologies and use SQL Server for their database. In the article it says a source in Stack Overflow said:
As you add more and more database
servers the SQL Server license costs
can be outrageous. So by starting
scale up and gradually going scale out
with non-open source software you can
be in a world of financial hurt.
Why don't these sites use MySQL instead of SQL Server?
Adding into what AJ said... Remember Facebook also pays C programmers to hack up MySQL code and also PHP code to get things to really work "well" for the amount of traffic they get.
Facebook already made statements in the past and this year about having wished they made a better choice.
As a matter of fact, for coding they're now compiling their PHP down to C++ code using HipHopPHP and about 90% of their servers are running the C++ binaries instead of the PHP scripts.
Their MySQL database might save them a dime or two, but the costs to maintain it, scale it, etc. is extremely intense.
A product like Oracle however would really allow you to scale seamlessly compared to MySQL.
I have a site right now that uses a lot of bandwidth on my database, large number of queries, and the truth is, scaling is a pain in the neck with MySQL and their Clustering product isn't that great and requires a license. Oracle right now has the best "grid" database setup but the costs are insane there...
Also, I code C# as well.. Let me tell you it's MUCH easier to integrate enterprise level sites with SQL Server compared to MySQL.
I would guess that it's probably because it's really really easy to get started making a site with ASP.NET hooked into SQL Server. And for the sites you mentioned, speed to market was probably more important than getting the architecture "right" (not to say that SQL Server is or isn't the right choice - just that speed to market is the priority). Remember that a developer's job is to release software.
So long as one avoids using too many database specific features, it will be relatively straightforward to switch to a different database with moderate effort. But why bother unless your site becomes super-popular?
Edit: And if you become super-popular, you may even want to venture into the land of NoSQL.
While this doesn't directly answer your questions I really have to refute your comment about outrageous licensing costs. ALL ENTERPRISE grade commercial software comes with a high price tag because it has the VALUE for it. If it doesn't have that value, it wouldn't be a successful product.
SQL Server's pricing is extremely competitive and has a very substantially lower TCO than Oracle. Another reason a decision to use MS SQL Server would be made is that most shops that develop on the Microsoft stack are Windows Server shops. MS SQL Server is built specifically for Windows Server so it can integrate as flawless as possible with the operating system. Many other products are not primarily and solely developed for Windows Server so this results in feature differences and environmental bugs.
These enviromental issues can be further compounded with the fact that large scale shops will employ primarily system administrators that have long backgrounds in that specific stack so in a .NET shop most system administrators are all most fluent in Windows Server, having to support multiple operating systems becomes a large cost especially in the risk management side when you're a large scale business.
To repeat what others have said. I work in a corporation and money, so to speak, does not matter that much when it comes to these matters. Decisions are made on the basis of "What kind of support can we get from the vendor", "How many skilled people are in the market", "What are the vendors reputation", etc.
I think there are two distinct groups for adopters of MySQL or SQL Server.
Large websites that are privately owned that does not have additional financial resources. These websites will typically run MySQL. Naturally.
Large websites built by corporations. These sites will run whatever is the accepted database technology within the corporation. Money does not dictate this decision, but more of who can support this software and development.
No Microsoft SQL Server Management Studio. For real. A lot of stuff is done there instead of raw SQL that happens in Open Source software world.
Things are much easier to deal with when the technology stack is homogeneous.
If you want MySQL support for Linq-to-SQL, good luck. It's still very much immature. With SQL Server, it's a matter of drag and drop. Literally.
You can also conduct Database queries from within Visual Studio for SQL Server. I've never tried it for any other database, but I'm not convinced you'd be able to.
It's great to say 'Oh, MySQL is so much cheaper than SQL Server.' Yes, it is. But I'm not sure the integration costs are worth it; not to mention having to rely on Yet Another Vendor to provide support if something goes wrong.
You use what you know...
(IMHO) The Microsoft tool stack is brilliant. It works well, we learn with it and grow with it, as the technology grows. It becomes easier to use as you become accustomed to it (its quirks and idiosyncrasies).
MySQL is also a brilliant tool. It works, and works well. We could all have religious wars as to what tool is best, but remember it is just a tool to get a job done.
Now let's factor in the cost of the software - Plenty of Fish 2 years ago made $7M, do you really think they care how much their database/server software costs? SO is on BizSpark $0 cost for 3 years (that's got to hurt).
For the sceptics, FaceBook runs MySQL on/for 30K servers and MySQL Enterprise Unlimited Licences cost $40k so this is not necessarily cheap either.
I don't know about you, but for me when I make a ton of cash, I really won't care how much it "costs", because I am making more with it, than without it!
I would say because of the following:
Microsoft is very well integrated while used with Microsoft products ;
Though using SQL Server, a free Express edition is available and can be used to host sites ;
With the .NET Framework coming through, Microsoft gained a lot of terrain over its competitors in schools an so, thus making SQL Server a well known database engine ;
Microsoft products works better with other Microsoft products ;
There are two ways of licensing SQL Server, per client (CAL), and per server processors or something like that. For sites hosts, perhaps is there an advantage of using SQL Server this way ;
Other database engines such as MySQL, PostgreSQL, Firebird, etc. all have their syntaxic differences, thus making SQL Server TSQL somehow a wise choice as for the number of persons being able to interact with SQL Server more easily ;
There might be some other politic related reasons for using SQL Server over other less costly solutions.
I would like to mention that some are using SQL Server, yes, but they use SQL Server Express Edition. Though they are whether aware or not that publishing or commercialising a solution with SQL Server Express Edition makes, according to the EULA of Microsoft for this product, your solution a free solution as well, as the EULA states that you need to provide your solution to your customer, and your customer is free to share your commercial solution with whom who wishes because it is sat on SQL Server Express. Although this is stated, some continue to use SQL Server Express without informing their customers about this information. Most of common clients won't know about this and they will respect their contract with the solution's supplier.
Furthermore, as I think I have above-written, some don't care about the price, but they have political reasons for using commercial products such as SQL Server and other software products. There are some places where the money isn't the most important factor, but service after sale, etc. They want specialized engineers or support teams directly, not necessarily what offers MySQL-like communities.
Hope this enlights a bit.
It's just culture. People group themselves. It's natural. People who prefer open-source, will naturally choose LAMP (Linux, Apache, MySQL and PHP) for the same kind of project that people who prefer corporate support choose Microsoft IIS, Microsoft SQL Server and Microsoft .NET for. There is a good deal of human psychology involved in this, make no mistake about it. There is nothing prohibiting one from using IIS with PHP and MySQL, or Apache with Microsoft SQL Server, but the way it goes is as described above.
Shorter put, large sites do use either, but yes, not often the two you mentioned together.
I believe George has it on mark: "homogeneous".
Most of Microsoft's technologies are built to work together. There are direct hooks between .NET and SQL Server to provide additional functionality like cache management that just don't exist between .NET and MySQL.
IIRC, MySQL doesn't have built in cache management which is why Ehcache and memcached exist.
re Joshua's comment: "A product like Oracle however would really allow you to scale seamlessly compared to MySQL." Years ago, Sabre picked MySQL over Oracle for some high scale projects based on cost and feature set. AFAIK, it's still picked over Oracle unless you can prove through cost/benefit analysis why Oracle is the better choice for a project.
I think it really boils down to functionality, user knowledge base and interoperability.
Sometimes SQL Server is the better match, sometimes it's MySQL, sometimes it's Oracle.
Less compatibility issues when you single source.
MS SQL Server is the "default" database for ASP.NET apps (see LINQ to SQL, ADO.NET, ApplicationServices etc)
Immature .NET tools for other databases. For example, you don't have to worry about a feature or functionality not being supported if you stick with MS SQL Server, other databases might not have full support (e.g. DbLInq, etc.).
MS SQL Server is also free to get started, (SQL Server Express) and once you're ready to go public, it's hard to change the Data layer.
I'm in the process of writing an ASP.NET MVC2 site with MySQL as the backend (mainly due to licensing costs) I've implemented DbLinq, but it also means writing a custom Membership/Role provider, and general tweaking of the data layer. It's definitely doable, but it's not as simple as sticking with MS SQL Server. I'm also hoping to move the site over to Mono 2.7 (once it's released) running on a Linux server to sidestep the server licensing issues as well.
The real reason is people usually go with MS SQL Server as .NET comes from the same brand. For instance PHP people always prefer MySQL over other databases. It's all mind set and people don't want to take any risk.
Any large enterprise site isn't going to care about licensing costs that much. What they want is fast, reliable data access and access to company technical support. They also want something that can easily be partioned to scale and that is designed for huge databases. They also want the easy availablity of performance tuning specialists, datawarehousing and Business Intelligence specialists, database developers, and database administrators. SQL Server and Oracle both meet these criteria. I really don't see MySQL as having as many people qualified to design and monitor large systems. I am Not sure how it stacks up on the partitioning and scalibility though.
Well, for one thing there are other, better, free databases (e.g., PostgreSQL). For another, the Microsoft ecosystem is designed to suck you in, getting you to spend more and more with the guys from Redmond.

Advatages to using virutalization for web development

It's one of those things I see a lot but never really think of. Do you think for the purpose of web application development (specifically ASP.NET WebForms/MVC). Do you think it's advantageous to do such a thing and if so, what kind of advantages come out of it?
By virtualization I mean using products like Hyper-V to separate the server context like your SQL and Web Server, etc.
First question is, virtualization of what? Do you mean server virtualization? Do you mean running VMWare on each dev's laptop with multiple OSes? Do you mean moving everything to the cloud?
Virtualization of servers, in web app context, is not really different from that in general IT - most of the servers on the Internet, including StackOverload's, are bought to handle peak loads and spend most of the time idling away the cycles, so virtualizing them makes sense when you have more than a certain amount.
VMWare on the desktop (or other parallels on other operating systems) is superb because a) your devs can run a full instance of your server environment, including multiple virtual servers connnected in a virtual network - this is about as close to the real thing that you can get, minus hardware costs and minus devs messing with each other's servers. For clients, you can use Linux and multiple Windows installs to test various browsers, font sizes, etc. quickly - also a big win.
Moving everything to the cloud makes sense in many cases, but is probably a topic for a separate full-sized question :)
One big advantage I see is, that every developer can have his/her own sandbox to work on. If someone messes up his/her sandbox he/she can take a clean image and all is OK again. So I guess that means that there is room to experiment without losing valuable time getting back to the normal setup, you can simply do a rollback.
I'm in doubt a bit on whether you should use virtualisation for production environments. Depending on the application of course.
The only time I would use a virtual for ASP.Net development was if the app required specific setup, such as relying on installed software, wierd settings or particular shares. Every developer has their own webserver and can run their own database so if it's a "basic" webapp I don't see much value in virtuals.. it's pretty hard to break anything with a basic web app deployment :)
With a virtual server, you can test your code in a production-like environment. It is also possible to quickly revert back to the original setup. For many applications, it is useful in that time period just after you write the code, but before it goes to production.
I'm a fan of virtualizaion and use it in testing and production (VMWare and Hyper-v) but over the last year I find it less important on a dev machine. TFS provides me with all the backup/rollback ability that I need, multiple versions of .net can now exist on the same machine and VS2008 can target all those versions.
In a development environment a virtual environment is useful to put several different servers on one box, you can have an instance for your web app, one for your services, one for database, etc. That way it mimics your production environment if you are using separate servers.
One of the benefits of using virtualization in production is that your application is not tied to a specific machine. If you wanted to move your web server instance to another box, it is trivial to do so. You don't need to install or configure things on the new server and hope that everything is set up properly.
One problem I have had though in testing virtual instances is that it can run slower for some applications, specifically engineering apps that like running the CPU at 100%. So test before you leap.

Can Windows Web Server 2008 be used to host games?

I'm currently using a linux server, we run a couple of web sites of it, PHP apps with MySQL, the usual. Since the server is privately owned by some friends and myself (we do have it hosted at a professional datacenter though), from time to time we also use it to host our smallish counter-strike source and call of duty 4 matches by running the released dedicated game server packages.
I've recently subscribed to DevExpress' excellent WinForms and ASP.Net component suite, and is contemplating moving to Windows to make use of those ASP.Net components. I'm currently trying to decide between the Web and Standard editions of Windows Server, since there is a difference of nearly a thousand bucks (where I come from)
For Windows Web Server 2008, Microsoft has softened the database server restrictions and made it clear there is no need for CALs. But would one be able to run the above mentioned web servers? I've been googling and searching through forums to no avail.
Need some help before I plunk in the cash.
Thanks.
Before I give any opinion, I'll start by answering your core questions:
Yes, you can run dedicated game servers on Windows Server Web ed.
The differences between web and standard:
Web only supports 2 gigs of ram. Standard in 64bit mode can support 32gigs (and more?).
Standard comes with more things that are better suited to local server environments (eg: active directory). If you want LDAP controlled Exchange email, you'll need Standard. Most web server don't need these.
Web (apparently) won't support full-on SQL server versions. Express should run though.
Opinion time.
Dedicated and virtual dedicated monetary overheads on Windows servers are a lot... To the degree where you're paying more for the software than the hardware costs, at least for the first year.
Renting the software (as part of a managed dedicated server or VPS) is initially a lot cheaper, but over the course of a couple of years, will cost you about the same and if you run it longer, it'll eventually cost you more.
Shared Windows hosts can be good. I've been with a company called Hostek (Florida-based) and they've bent over backwards to make hosting a fairly busy site (around 6000 uniques a day) very cheap for me. It can also be atrocious. I've had bad hosting companies too. Shop around.
About a year ago, I dropped Windows at home in favour of Linux. I'm not going to enumerate the many benefits and drawbacks; I'll just tell you that that's when I stopped doing .NET in favour of more open Frameworks. I'm not using Django (a Python-based web framework). While you might not like it (or other frameworks - eg Ruby on Rails), I plead that you do check out what's happening in the open-source world before you plonk for anything Windows related since you already have the infrastructure available for hosting Django/Rails/et al.
If you wanted your own Linux server, VPSs start from around $20pcm. As I said before, severely cheaper than Windows counterparts. I now use Linode to host everything new I make. Highly affordable and they'll easily run dedicated games like your current set-up does.
Mono isn't an option for you. Not yet anyway. It does go some length to help people migrate their applications but it's still pretty sketchy on the ASPNET front. And as a comment says on another answer: the controls you want to use are strictly Windows-only for the moment.
Linux will consume fewer baseline resources than Windows will. On an old server (Windows 2000, IIRC) I had to administer, the core of Windows would consume anywhere from 100-200 megs of RAM. My current Ubuntu server eats 40megs. I'm not sure how much RAM you have to play with on your server but if it's a lower amount, you're going to fit a lot more on a Linux host. (Remember that if you have more than 2gigs, you don't have the choice of the Web Server edition)
It's clear from this that I'm a complete Linux super-enthusiast, but I know my needs differ from yours. ASP.NET is a great platform but it costs a lot of money even if you're splitting it between friends. You could opt for Windows... Or you could go Linux, donate a bit to the projects you use and buy a new plasma or something shiny for the lady.
SPLA? Isn't that for service providers? My friends and I use the hosted services for ourselves (games, email and web), though of course our web sites are publicly viewable by all; but I think that hardly qualifies as "providing a service"?
Unfortunately, staying with Linux would make it such that I would not be able to use my DevExpress components, which is my reason for considering Windows Server in the first place. .NET may be partially supported by Mono, but not fully, and DevExpress makes use of certain features of .NET that aren't (at least as yet) supported by Mono.
We also already own our own dedicated server, so are only looking for a suitable OS.
Still, your reply is appreciated.

Resources