IIS as a web application server is perfectly suited for .net, .net core, asp.net applications. Our core ESB runs on IIS and has hundreds of gigabytes of data moved through it every day spread across millions of transactions. We have other mission critical applications that deliver our results to patients and doctors relying on IIS web application servers. If you stay in the Microsoft development stack, IIS is a top tier, efficient, and reliable web server.
If you have one user or 1000's of users (especially using Windows), Windows Server is a no-brainer! The only reason I would suggest going with a Linux server is if you have old hardware (Windows Server is more process intensive than Linux). But, Linux is open-source, so anyone can publish updates/security updates, but on the flip side, malicious people also have full access to Linux's codebase allowing for much easier writing of exploitations/viruses/malware/ransomware.
A big advantage that we use all the time is reviewing the logs that automatically get generated in IIS. It has helped us troubleshoot various problems in our applications over the years.
IIS integrates really well with Visual Studio and TFS. We are able to quickly deploy new applications and changes to applications when requested by the business.
IIS has proven that it is easy to configure and maintain with minimal effort.
User and device management out of the box. Active directory is a proven system for doing this and works just as well as it always has.
ADFS providing integration into many third-party applications using SAML authentication. We use this heavily to make user experience as simple and straightforward as we can.
Local DHCP. It's another one of these systems that is very easy to setup and use out of the box and requires very little maintenance, if any. The system is almost unchanged throughout the years and so anyone with server experience can manage it.
Windows Server is extremely complex, and while newer versions have eased the initial setup process, setting up a server is still a very time consuming and difficult task.
The complexity of Windows Server also makes troubleshooting any problems that arise extremely difficult, both in tracking down the actual issue and then resolving the issue. Often times a problem can manifest itself in more than one way, making searching for the specific problem also difficult.
Windows Server is also very expensive, with complex and confusing licensing terms. In fact, Microsoft provides a 32-page PDF guide on Windows Server licensing, which is in and of itself dense and confusing to follow. To make matters more complicated, there multiple different version of Windows Server itself - Nano, Essentials, Standard and Datacenter edition, and each edition has different licensing terms. Licensing terms include items such as the physical processor's cores of the server, how many users will be accessing the server (called a CAL - client access license), and a plethora of other items.
Microsoft's support for Windows Server can be extremely frustrating at times. While Microsoft hosts a very active user forum, Microsoft employees who frequent those forums often provide only stock answers to questions (without actually reading the details) or no answers at all. For more in-depth - phone support can be quite expensive.
Upgrading a Windows Server from one major version to another (i.e. 2012 to 2016) is a frustratingly complex and dangerous procedure, as many things can go wrong during the upgrading, essentially breaking the entire setup. In fact, Microsoft doesn't even suggest doing an in-place upgrade, but to perform a backup of the existing server, doing a clean install of the new version, and migrating the information from the older version to the new version. In general, it is not even recommended to upgrade from one version to another as the risk significantly outweigh the benefits.
We have no intention to replace all applications running on top of the IIS platform. Not all applications support other platforms and not all support staff are skilled in Linux/Apache platform support. Whereas IIS may not be the best performing or most secure web platform available, for the aforementioned reasons, it is impossible not to continue use of this product.
I've carefully reviewed the servers and services currently running on Windows Server 2012, and given the opportunity would renew them as is going forward. There are two systems I currently have in place, one is a very large Linux implementation for a large ecommerce site, and one is a very large backup solution front ended by FTP servers running Linux. Neither are well suited for Windows, but the overall network infrastructure is and will be Windows Server for the foreseeable future.
In general, Microsoft IIS is an alright product. It comes natively with Windows Server. It has good enough GUI to set things up & tweak things around. Once properly setup, it runs stably enough. And with enough Powershell magic, having a CI/CD pipeline to automatically deploy a new version of the application is doable.
Everything can (and should) be done through the easy to use/navigate GUI. There is no need for archaic command prompt use to administer the server. But, it is there if you have very specific needs for batch files, etc. that are not covered in the all extensive GUI.
ARR (application request routing) in Microsoft IIS Server enables the web-admins to increase the web app reliability and availability through the rule based routing and load balancing of HTTP requests which in turn provides highly available server. IIS 7.0 Manager also provides kernel as well as user mode caching for faster performance and in case if the server fails, the IIS server has good amount of details logged in its log files which help understand and debug the cause quickly. Load balancing facilitates IIS server to fight against availability issues.
In my experience, I have never had significant issues with IIS performance. Sometimes I've experienced issues with loading time, but it is mostly related to the web site code. However Amazon, Microsoft and Google providing free cloud services with very limited resources, and in that scenario, "heavy" websites on IIS could be the issue. In other situations - performance is good.
As mentioned earlier there is so much documentation or guides or stack overflow questions out there that someone will have faced the same or very similar scenario to what you are going through that you will almost certainly find a solution to what you are after.
It has been my experience that unless there is a flaw or bug with Microsoft Windows Server, you will have to pay extra for support beyond the support web site. That said, unofficial support on the thousands of technical websites makes self-help support readily available to any technician with an internet connection. Microsoft's support website is also fairly robust, but I find using a popular search engine often returns knowledgebase articles more quickly that Microsoft's search.
Make sure that you have detailed processes in place for every server instance you plan to install/upgrade, if possible get the base OS loaded and Windows Updates applied ahead of time, and if using a VM take a snapshot prior to installing each role, as well as along the way.
On Windows, Microsoft IIS is easier to implement and maintain than Apache web service. Normally if you need to host PHP or other apache native content on a Windows server, it's recommended to use WAMP or equivalent software to simplify the installation, administration, and configuration of resources. However, you can use Microsoft IIS and other web services on the same server, taking care to keep separate folders and port usage for each system.
Windows Server is more cost-effective and skills are easier to find to support the products. The deployment and management of the product can be automated with Microsoft SCCM. In my opinion, Linux seems to be more secured but takes more time and effort to learn than Windows Server. However, there are more Windows Server skills available in the job market.
Microsoft IIS Server is scalable if the underlying server configuration is done correctly. Use x64 edition v/s 32bit and using 32bit mode application pools are some of the tweaks to be done to make the IIS server scalable. There are too many small configurations need to be carried out in order to make a highly scalable IIS server hence not giving full score in this area.
Speed of development. You don't need to be an expert to expose your website through some DNS
Robust, there has never been any downtime because of IIS itself.
The ease of use can have (and has had) some negative impact because it's too easy to implement something, and then forget. When a server is taken down, those unthoughtful implementations come to light the hard way.