Thursday, November 15, 2007

Web Server



Good interviewers always have some hidden agenda behind their questions. Questions are more or less designed around the specific position you are interested in; however, you should expect some common questions irrespective of the job description.



What is a web server?



A Web server is a software program which serves web pages to web users (browsers). A web server delivers requested web pages to users who enter the URL in a web browser. Every computer on the Internet that contains a web site must have a web server program.The computer in which a web server program runs is also usually called a "web server". So, the term "web server" is used to represent both the server program and the computer in which the server program runs.



Characteristics of web servers:



A web server computer is just like any other computer. The basic characteristics of web servers are:



- It is always connected to the internet so that clients can access the web pages hosted by the web server.



- It has an application called 'web server' running always.In short, a 'web server' is a computer which is connected to the internet/intranet and has a software called 'web server'. The web server program will be always running in the computer. When any user try to access a website hosted by the web server, it is actually the web server program which delivers the web page which client asks for.All web sites in the internet are hosted in some web servers sitting in different parts of the world.



Web Server is a hardware or a software ?



From the above definition, you must have landed up in confusion “Web server is a hardware or a software”Mostly, Web server refers to the software program, which serves the clients request. But as we mentioned earlier in this chapter, the computer in which the web server program is also called 'web server".





Now that you are reading this page, have you ever had a thought how the page is made available to the browser?Your answer would be, “I typed in the URL http://www.faqs-for-all.blogspot.com/ and clicked on some link, I dropped into this page.” But what happed behind the scenes to bring you to this page and make you read this line of text.So now, lets see what is actually happening behind the scene. The first you did is, you typed the URL http://www.faqs-for-all.blogspot.com/ in the address bar of your browser and pressed your return key.

We could break this URL into two parts,


1.The protocol we are going to use to connect to the server (http)
2.The server name (http://www.faqs-for-all.blogspot.com/)

The browser breaks up the URL into these parts and then it tries to communicate with the server looking up for the server name. Actually, server is identified through an IP address but the alias for the IP address is maintained in the DNS Server or the Naming server. The browser looks up these naming servers, identifies the IP address of the server requested and gets the site and gets the HTML tags for the web page. Finally it displays the HTML Content in the browser.


Where is my web server ?

When you try to access a web site, you don't really need to know where the web server is located. The web server may be located in another city or country, but all you need to do is, type the URL of the web site you want to access in a web browser. The web browser will send this information to the internet and find the web server. Once the web server is located, it will request the specific web page from the webserver program running in the server. Web server program will process your request and send the resulting web page to your browser. It is the responsibility of your browser to format and display the webpage to you.


How many web servers are needed for a web site?

Typically, there is only one web server required for a web site. But large web sites like Yahoo, Google, MSN etc will have millions of visitors every minute. One computer cannot process such huge numbers of requests. So, they will have hundreds of servers deployed in different parts of the world so that can provide a faster response.


How many websites can be hosted in one server?

A web server can hosted hundreds of web sites. Most of the small web sites in the internet are hosted on shared web servers. There are several web hosting companies who offer shared web hosting. If you buy a shared web hosting from a web hosting company, they will host your web site in their web server along with several other web sites for a Fee.Examples of web server applications1. IIS2. ApacheFind A web server can hosted hundreds of web sites. Most of the small web sites in the internet are hosted on shared web servers. There are several web hosting companies who offer shared web hosting. If you buy a shared web hosting from a web hosting company, they will host your web site in their web server along with several other web sites for a Fee.

Examples of web server applications

1. IIS

2. Apache


Acronyms in .NET


ADO - ActiveX Data Object - Microsoft ActiveX Data Objects (ADO) is a collection of Component Object Model objects for accessing different types of data sources.

AJAX - Asynchronouse Javascript and XML - Ajax is a web development technology used for creating interactive web pages with fast data rendering by enabling partial postbacks on a web page (That means a section of the web page is rendered again, instead of the complete web page. This is achieved using Javascript, XML, JSON (Javascript Notation Language) and the XMLHttpRequest object in javascript.

ASP - Active Server Pages - Microsoft's Server side script engine for creating dynamic web page.

C# - C Sharp - Microsoft Visual C# is an object oriented programming language based on the .NET Framework. It includes features of powerful languages like C++, Java, Delphi and Visual Basic.

CAO - Client Activated Object - Objects created on the server upon the client's request. This is used in Remoting.

CCW - COM Callable Wrapper - This component is used when a .NET component needs to be used in COM.

CIL - Common Intermediate Language - Its actually a low level human readable language implementation of CLI. All .NET-aware languages compile the source oode to an intermediate language called Common Intermediate Language using the language specific compiler.

CLI - Common Language Infrastructure - This is a subset of CLR and base class libraries that Microsoft has submitted to ECMA so that a third-party vendor can build a .NET runtime on another platform.

CLR - Common Language Runtime - It is the main runtime machine of the Microsoft .NET Framework. It includes the implementation of CLI. The CLR runs code in the form of bytes, called as bytecode and this is termed MSIL in .NET.

CLS - Common Language Specification - A type that is CLS compliant, may be used across any .NET language. CLS is a set of language rules that defines language standards for a .NET language and types declared in it. While declaring a new type, if we make use of the [CLSCompliant] attribute, the type is forced to conform to the rules of CLS.

COFF - Common Object File Format - It is a specification format for executables.

COM - Component Object Model - reusable software components. The tribe of COM components includes COM+, Distributed COM (DCOM) and ActiveX® Controls.

CSC.exe - C Sharp Compiler utility

CTS - Common Type System - It is at the core of .NET Framework's cross-language integration, type safety, and high-performance code execution. It defines a common set of types that can be used with many different language syntaxes. Each language (C#, VB.NET, Managed C++, and so on) is free to define any syntax it wishes, but if that language is built on the CLR, it will use at least some of the types defined by the CTS.

DBMS - Database Management System - a software application used for management of databases.

DISCO - Discovery of Web Services. A Web Service has one or more. DISCO files that contain information on how to access its WSDL.

DLL - Dynamic Link Library - a shared reusable library, that exposes an interface of usable methods within it.

DOM - Document Object Model - is a language independent technology that permits scripts to dynamically updated contents of a document (a web page is also a document).

ECMA - European Computer Manufacturer's Association - Is an internation organisation for computer standards.

GC - Garbage Collector - an automatic memory management system through which objects that are not referenced are cleared up from the memory.

GDI - Graphical Device Interface - is a component in Windows based systems, that performs the activity of representing graphical objects and outputting them to output devices.

GAC - Global Assembly Cache - Is a central repository of reusable libraries in the .NET environment.

GUI - Graphic User Interface - a type of computer interface through which user's may interact with the Computer using different types of input & output devices with a graphical interface.

GUID - Globally Unique Identifier - is a unique reference number used in applications to refer an object.

HTTP - Hyper Text Transfer Protocol - is a communication protocol used to transfer information in the internet. HTTP is a request-response protocol between servers and clients.

IDE - Integrated Development Environment - is a development environment with source code editor with a compiler(or interpretor), debugging tools, designer, solution explorer, property window, object explorer etc.

IDL - Interface Definition Language - is a language for defining software components interface.

ILDASM - Intermediate Language Disassembler - The contents of an assembly may be viewed using the ILDASM utility, that comes with the .NET SDK or the Visual Studio.NET. The ildasm.exe tool may also be used in the command line compiler.

IIS - Internet Information Server - Is a server that provides services to websites and even hosts websites.

IL - Intermediate Language - is the compiled form of the .NET language source code. When .NET source code is compiled by the language specific compiler (say we compile C# code using csc.exe), it is compiled to a .NET binary, which is platform independent, and is called Intermediate Language code. The .NET binary also comprises of metadata.

JIT - Just in Time (Jitter) - is a technology for boosting the runtime performance of a system. It converts during runtime, code from one format into another, just like IL into native machine code. Note that JIT compilation is processor specific. Say a processor is X86 based, then the JIT compilation will be for this type of processor.

MBR - MarshallByReference - The caller recieves a proxy to the remote object.

MBV - MarshallByValue - The caller recieves a copy of the object in its own application domain.

MDI - Multiple Document Interface - A window that resides under a single parent window.

MSIL - Microsoft Intermediate Language - now called CIL.

Orcas - Codename for Visual Studio 2008

PE - Portable Executable - an exe format file that is portable.

RAD - Rapid Application Development

RCW - Runtime Callable Wrapper - This component is used when a .NET needs to use a COM component.

SAX - Simple API for XML - It is a serial access parser API for XML. The parser is event driven and the event gets triggered when an XML feature is encountered.

SDK - Software Development Kit

SMTP - Simple Mail Transfer Protocol - a text based protocol for sending mails.

SN.exe - Strong Name Utility - a tool to make strong named assemblies.

SQL - Structured Query Language - a language for management of data in a relational structure.

SOAP - Simple Object Access Protocol - a protocol used for exchange of xml based messages across networks.

TCP - Transmission Control Protocol - data exchange protocol across networks using streamed sockets.

UI - User Interface

URI - Uniform Resource Identifier

URL - Uniform Resource Locator

UDDI - Universal Description, Discovery and Integration - it is a platform independent business registration across the internet.

WAP - Wireless Access Protocol - a protocol that enables access to the internet from mobile phones and PDAs.

WC - Windows Cardspace - Part of .NET 3.0 framework, that enables users to secure and store digital identities of a person, and a provision to a unified interface for choosing the identity for a particular transaction, like logging in to a website.

WCF - Windows Communication Foundation - Part of .NET 3.0 framework, that enables communication between applications across machines.

WF - Windows Workflow Foundation - Part of .NET 3.0 framework, used for defining, execution and management of reusable workflows.

WKO - Well Known Object - These are MBR types whose lifetime is controlled by the server's application domain.

WPF - Windows Presentation Foundation - Part of .NET 3.0 framework, is the graphical subsystem of the .NET 3.0 framework.

WSDL - Web Services Description Language - is an XML based language for describing web services.

WML - Wireless Markup Language - is a content format for those devices that use Wireless Application Protocol.

VB.NET - Visual Basic .NET - .NET based language. Its the .NET implementation of VB6, the most widely used language in the world.

VBC.exe - VB.NET Compiler

VES - Virtual Execution System - It provides the environment for execution of managed code. It provides direct support for a set of built in data types, defines a hypothetical machine with an associated machine model and state, a set of control flow constructs, and an exception handling model. To a large extent, the purpose of the VES is to provide the support required to execute the Common Intermediate Language instruction set.

VS - Visual Studio

VSS - Visual Source Safe - An IDE by Microsoft, to maintain source code versions and security.

VSTS - Visual Studio Team Suite - Visual Studio Team System - it is an extended version of Visual Studio .NET. It has a set of collaboration and development tools for software development process.

XML - Extensible Markup Language - is a general purpose well formed markup language.

CLR - CTS - CLS

The .NET Framework provides a runtime environment called the Common Language Runtime or CLR (similar to the Java Virtual Machine or JVM in Java), which handles the execution of code and provides useful services for the implementation of the program.

The Common Language Runtime is the underpinning of the .NET Framework. CLR takes care of code management at program execution and provides various beneficial services such as memory management, thread management, security management, code verification, compilation, and other system services. The managed code that targets CLR benefits from useful features such as cross-language integration, cross-language exception handling, versioning, enhanced security, deployment support, and debugging.

Common Type System (CTS) describes how types are declared, used and managed in the runtime and facilitates cross-language integration, type safety, and high performance code execution.

The Common Language Specification (CLS) is an agreement among language designers and class library designers to use a common subset of basic language features that all languages have to follow.

CLR Execution Model:

To know more about CLR /CTS/ CLS, articles and books - Click here!

Latest Resources:

Common Language Runtime Overview Good introduction to the CLR.

The Common Language Infrastructure (CLI) The Shared Source CLI provides developers with the source code for a working CLI implementation.

Common Language Runtime (CLR) Fundamentals To understand the fundamental concepts of programming in the Common Language Runtime (CLR) environment.

This article About the Common Language Runtime (CLR) provides fine, clear points about the CLR.