In this post we will discuss about IIS, Application pool, application domain, web farm, web garden, network load balancing.
What is IIS?
IIS was formally known as an Internet information server. IIS is a web server service developed by Microsoft, it provides developers to create, manage configure the application. It supports HTTP, HTTP/2, and HTTPS, FTP, FTPS, SMTP, and NNTP.
Evolution of IIS
Going back to the history of web servers the first Microsoft web server was a research program at EMWAC (European Microsoft Windows NT Academic Center) dated May 30, 1995. It was developed by using C, C++ and assembly level language.
Versions of IIS were released either or alongside with a version of Microsoft windows starting with IIS 1.0,which got a stable release on 29th July 2015 with IIS 10. Versions from IIS 6 and onwards serves best in terms of business needs as security, support, process models and reliability increased.
Higher versions support and provide several improvements relating to performance and in large scale scenarios. IIS 8.0 provides several configurations to optimize non-uniform access memory to run several processes under one application pool.
|Version of IIS||Release with Windows Versions||Features|
|IIS 1.0||Windows NT 3.51||Was an free add-on for Windows NT 3.51|
|IIS 2.0||Windows NT 4.0||Was included with Windows NT 4.0 used for multiuser and multiprocessing.|
|IIS 3.0||Service Pack 2 of Windows NT 4.0||Came up with help to Active Server Pages dynamic scripting environment|
|IIS 4.0||Windows NT 4.0||introduced for MMC-based administration application|
|IIS 5.0||Windows 2000||support for the WebDAV protocol, and enhancements to ASP and Gopher protocol|
|IIS 6.0||Windows Server 2003 and Windows XP Professional x64 Edition||Support for IPv6 and included a new worker process model that increased security and reliability.|
|IIS 7.0||Windows Vista and Windows Server 2008||Supports hierarchical configuration system allowing simpler site deploys and new command-line management options which increased support for the .NET Framework.|
|IIS 7.5||Windows 7 and Windows Server 2008 R2||Came up with improved WebDAV and FTP modules as well as command-line administration in PowerShell and introduced TLS 1.1 and TLS 1.2 support for Analyzer tool and process isolation for application pools.|
|IIS 8.0||Windows Server 2012 and Windows 8||Includes SNI (which bind SSL to hostnames rather than IP addresses), Application Initialization, centralized SSL certificate support, and multicore scaling on NUMA hardware, which adds to new features.|
|IIS 8.5||Windows Server 2012 R2 and Windows 8.1||This version includes Idle worker-Process page-out, Dynamic Site Activation, Enhanced Logging, ETW logging, and Automatic Certificate Rebind.|
|IIS 10||Windows Server 2016 and Windows 10||This version includes and support for HTTP/2|
Benefits of IIS
IIS environment provides developers to develop and support applications. Before hosting we need to plan to avoid key issues like resource, application and hosting requirement and their capacity. We can follow certain steps to avoid server overloading such as:
- Determine project scope
- Characterizing the application like steps involved in creating application inventory.
- Determine necessary version of windows being installed with required configuration.
- Determine location and storage for configuration and content storage.
- Determine fault tolerance for the infrastructure.
- Determine required server resource and application scope for stability and fault-tolerance requirement.
Hosting a web site in IIS
To host a website in IIS we need to perform following steps:
Step-1: Click on Windows + R and then type command inetmgr :
Step-2: Thenit will open Internet Information Services (IIS) Manager.
Step-3: In the left side you will see the machine name, expand local machine and right click on’ Sites’ then open ‘Add Web Sites’.
Step-4: Fill all the necessary details which is as Name of Site, Physical Path of the file where site is located in System, Type of Web site(Generally/Default it should be ‘http’), IP Address of the site, Port number on which site will run, Domain name of site.
Clicking on ok we can host a site using IIS.
What is application pool?
The application pool is grouping of URLs that are routed to one or more worker processes.
An application pool contains one or more than one web application in IIS. It is also possible to create more than one app pool.
Application pool allows isolating application from one another running from the same server. It helps if an error occurs, it won’t take down other applications in the pool as process boundaries separate each work process. It also helps in separating applications that require different levels of security.
How it application pool works?
For a specific application pool, an IIS worker process runs otherwise known as the windows process (w3wp.exe). The web application and is responsible for handling requests sent to webserver from a specific web app or end-user.
Because application pools define a set of web applications that share one or more worker processes, they provide a convenient way to administer a set of web sites and applications and their corresponding worker process. All applications run on the worker process so if any worker process dies or recycled all web apps are going to be effected so the application pool helps in not effecting other worker processes or applications.
The applications are executed by the worker process using window identity, and the window identity is dependent on the application pool identity.
What is an application domain?
It is a virtual process that isolates applications from each other. Each application domain has its own virtual address and scope. Each application runs within its main process boundaries and its application domain boundaries. Application domains are typically created by runtime hosts which are responsible for bootstrapping and common runtime before an application is run.
Application domains provide a more secure n versatile unit of processing that the common language run time can use to provide isolation between applications. We can run several application domains in a single process with the same level of isolations that separate different processes. And running multiple applications within a single process increases the scalability. Isolating is important as it helps in building application security.
Web Farm, Web Garden, Network Load Balancing
When we use multiple servers to host the application with a huge number of incoming traffic, to divide the traffic among them is known as a web farm. Web farming is basically hosting a single website on multiple web servers over load balancers.
Where load balancers balances the request according to server strength, basically server with less requests in the queue will be next to accept the request as to balance the load among the servers.
A single application is hosted on multiple IIS servers, and those are connected with the virtual IP with a load balancer that is exposed to the external world. Web servers may share the same DB server or maybe they can use a replicated server in the back end.
Advantages of web farm
- It provides high availability as load balancer balances by redirecting requests if any server goes down
- It provides a high-performance response for client requests. It provides better scalability and reduce the failure of the application.
- sessions and other resources can be stored in a centralized location to access all servers.
An application that contains multiple worker processes is known as a web garden. Provides better application availability by sharing requests between multiple work processes.
Web garden uses processor affinity where the application can be swapped based on preference and tag setting. Web garden consumes less physical space to configure. For web garden, we have to configure the out process within the same server but for different worker processes.
Network Load Balancing:
It is a device that distributes network or application traffic and load across a cluster of servers. Load balancing improves the responsiveness and availability of applications.
Load balancing aims in optimizing resources, maximize throughput, maximize response time and avoid overload of a single resource. Usually, load balancing involves dedicated software or hardwires.
A load balancer sits between the client and server farm accepting incoming network and application traffic and distributing the traffic among multiple servers and by avoiding being a single point of failure. Load balancing is the most straight forward method of scaling out a web server infrastructure. Different types of methods and algorithms are used for load balancing notable are:
- The least connect method-this is the default method when a virtual server is configured to use the least connection it selects service within the fewest active connection.
- The round-robin method-this method continuously rotates a list of services that are attached to it. When the virtual server receives a request it assigns the connection to the first service in the list and then moves to the bottom of the list.
- The least response time method-this method selects the service with the least active connection and the lowest average response time.
- The least bandwidth method-this method select the service that is currently serving the least amount of traffic measured in MB/S (megabits per second)
- The least packets this method selects the service that has received the fewest packets over a specific period of time.
- The custom load method- using this method the load balancing appliance chooses a service that is not handling any active transactions. If all of the services in the load balancing setup are handling active transactions then the appliance selects the service with the smallest load.
You may like following SharePoint tutorials:
- What is host header?
- SharePoint CSOM Tutorial
- Create SharePoint web application (Central Admin & PowerShell)
- Errors were found when compiling the workflow
- What is Business Intelligence? How Business Intelligence is Helpful for Business Growth?
- SharePoint 2013 No item exists at URL. It may have been deleted or renamed by another user
- Add-Type : Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information
I hope this article will be helpful to learn Introduction to IIS, Application Pool, Application Domain, Web Farm, Web Garden, and Network Load Balancing.
Hello Everyone!! I am Bhawana a SharePoint MVP and having about 10+ years of SharePoint experience as well as in .Net technologies. I have worked in all the versions of SharePoint from wss to Office 365. I have good exposure in Customization and Migration using Nintex, Metalogix tools. Now exploring more in SharePoint 2016 🙂 Hope here I can contribute and share my knowledge to the fullest. As I believe “There is no wealth like knowledge and no poverty like ignorance”