Microsoft Dotnet Development
Dot Net Development
.NET Framework is a software framework developed by Microsoft that runs primarily on Microsoft Windows. It includes a large library and provides language across several programming languages. Programs written for the .NET Framework execute in a software environment, known as the Common Language Runtime (CLR), an application virtual machine that provides services such as security, memory management, and exception handling. Our team's Dot Net Development experts have done extensive development in ASP.NET, ADO.Net & VB.NET and C#. Our vast expertise in Dot Net Development Solutions can bring you abundant business solutions for designing, developing and integrating this platform. Our experts here can take down and understand your requirements and demonstrate the capabilities of Dot Net Development.
Leonsoft team of Dot Net Development experts proficiently use advanced Dot Net Development control to accelerate the project development life cycle. If you want your Dot Net Development outsourced, datametrics is your best choice. Leonsoft's Dot Net Development puts you a step ahead of the industry and competition, rather than just trying to take you on par with them.
Advantages of .Net Development :
- Can support different levels of verification services such as Passwords, wallets, and smart cards.
- Can support directory services that can answer XML based questions.
- .NET can also permit a wide variety of Internet devices to access data and applications.
- It has an ability to track visitors and report on the most requested web pages.
- Easy integration of any software into the Internet.
Microsoft Competency Unit
Our team of senior, highly skilled and qualified professionals has hands on experience and is made up of Microsoft Certified individuals (MCAD/ MCP/ MCSD) competent to work on Microsoft technology platforms. Leo Technosoft designs and builds quality solutions developed using the complete Dotnet architecture and cloud computing with microsoft datametrics platform which provides a reliable, scalable environment for developing robust SaaS applications.
We capitalize on this next-generation technology by:
- Incorporating the most pioneering design and development practices based on Microsoft Technology
- Ensuring that our MCU team members are well-informed and adept with the latest Microsoft cutting edge technologies
- Offering services that cover the entire lifecycle of solutions offered by Microsoft
- .NET Framework :
.NET Framework :
The .NET Framework (pronounced dot net) is a software framework developed by Microsoft that runs primarily on Microsoft Windows. It includes a large library and provides language interoperability (each language can use code written in other languages) across several programming languages. Programs written for the .NET Framework execute in a software environment (as contrasted to hardware environment), known as the Common Language Runtime (CLR), an application virtual machine that provides services such as security, memory management, and exception handling. The class library and the CLR together constitute the .NET Framework.
The .NET Framework's Base Class Library provides user interface, data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications. Programmers produce software by combining their own source code with the .NET Framework and other libraries. The .NET Framework is intended to be used by most new applications created for the Windows platform. Microsoft also produces an integrated development environment largely for .NET software called Visual Studio.
Microsoft started development of the .NET Framework in the late 1990s, originally under the name of Next Generation Windows Services (NGWS). By late 2000 the first beta versions of .NET 1.0 were released.
Version 3.0 of the .NET Framework is included with Windows Server 2008 and Windows Vista. Version 3.5 is included with Windows 7 and Windows Server 2008 R2, and can also be installed on Windows XP and Windows Server 2003. On 12 April 2010, .NET Framework 4 was released alongside Visual Studio 2010.
The .NET Framework family also includes two versions for mobile or embedded device use. A reduced version of the framework, the .NET Compact Framework, is available on Windows CE platforms, including Windows Mobile devices such as smartphones. Additionally, the .NET Micro Framework is targeted at severely resource-constrained devices.
Because computer systems commonly require interaction between newer and older applications, the .NET Framework provides means to access functionality implemented in newer and older programs that execute outside the .NET environment. Access to COM components is provided in the System.Runtime.InteropServices and System.EnterpriseServices namespaces of the framework; access to other functionality is achieved using the P/Invoke feature.
Common Language Runtime engine :
The Common Language Runtime (CLR) serves as the execution engine of the .NET Framework. All .NET programs execute under the supervision of the CLR, guaranteeing certain properties and behaviors in the areas of memory management, security, and exception handling.
Language independence :
The .NET Framework introduces a Common Type System, or CTS. The CTS specification defines all possible datatypes and programming constructs supported by the CLR and how they may or may not interact with each other conforming to the Common Language Infrastructure (CLI) specification. Because of this feature, the .NET Framework supports the exchange of types and object instances between libraries and applications written using any conforming .NET language.
Base Class Library :
The Base Class Library (BCL), part of the Framework Class Library (FCL), is a library of functionality available to all languages using the .NET Framework. The BCL provides classes that encapsulate a number of common functions, including file reading and writing, graphic rendering, database interaction, XML document manipulation, and so on. It consists of classes, interfaces of reusable types that integrates with CLR(Common Language Runtime).
Simplified deployment :
The .NET Framework includes design features and tools which help manage the installation of computer software to ensure it does not interfere with previously installed software, and it conforms to security requirements.
The design addresses some of the vulnerabilities, such as buffer overflows, which have been exploited by malicious software. Additionally, .NET provides a common security model for all applications.
While Microsoft has never implemented the full framework on any system except Microsoft Windows, it has engineered the framework to be platform-agnostic, and cross-platform implementations are available for other operating systems (see Silverlight and the Alternative implementations section below). Microsoft submitted the specifications for the Common Language Infrastructure (which includes the core class libraries, Common Type System, and the Common Intermediate Language),the C# language, and the C++/CLI language to both ECMA and the ISO, making them available as official standards. This makes it possible for third parties to create compatible implementations of the framework and its languages on other platforms.
Visual overview of the Common Language Infrastructure (CLI)
Common Language Infrastructure (CLI)
The purpose of the Common Language Infrastructure (CLI) is to provide a language-neutral platform for application development and execution, including functions for Exception handling, Garbage Collection, security, and interoperability. By implementing the core aspects of the .NET Framework within the scope of the CLI, this functionality will not be tied to a single language but will be available across the many languages supported by the framework. Microsoft's implementation of the CLI is called the Common Language Runtime, or CLR.
The CIL code is housed in CLI assemblies. As mandated by the specification, assemblies are stored in the Portable Executable (PE) format, common on the Windows platform for all DLL and EXE files. The assembly consists of one or more files, one of which must contain the manifest, which has the metadata for the assembly. The complete name of an assembly (not to be confused with the filename on disk) contains its simple text name, version number, culture, and public key token. Assemblies are considered equivalent if they share the same complete name, excluding the revision of the version number. A private key can also be used by the creator of the assembly for strong naming. The public key token identifies which public key an assembly is signed with. Only the creator of the keypair (typically the .NET developer signing the assembly) can sign assemblies that have the same strong name as a previous version assembly, since he is in possession of the private key. Strong naming is required to add assemblies to the Global Assembly Cache
.NET has its own security mechanism with two general features: Code Access Security (CAS), and validation and verification. Code Access Security is based on evidence that is associated with a specific assembly. Typically the evidence is the source of the assembly (whether it is installed on the local machine or has been downloaded from the intranet or Internet). Code Access Security uses evidence to determine the permissions granted to the code. Other code can demand that calling code is granted a specified permission. The demand causes the CLR to perform a call stack walk: every assembly of each method in the call stack is checked for the required permission; if any assembly is not granted the permission a security exception is thrown.
- Class Library
- Namespaces in the BCL
The .NET Framework includes a set of standard class libraries. The class library is organized in a hierarchy of namespaces. Most of the built-in APIs are part of either System.* or Microsoft.* namespaces. These class libraries implement a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, among others. The .NET class libraries are available to all CLI compliant languages. The .NET Framework class library is divided into two parts: the Base Class Library and the Framework Class Library
The Base Class Library (BCL) includes a small subset of the entire class library and is the core set of classes that serve as the basic API of the Common Language Runtime. The classes in mscorlib.dll and some of the classes in System.dll and System.core.dll are considered to be a part of the BCL. The BCL classes are available in both .NET Framework as well as its alternative implementations including .NET Compact Framework, Microsoft Silverlight and Mono.
The Framework Class Library (FCL) is a superset of the BCL classes and refers to the entire class library that ships with .NET Framework. It includes an expanded set of libraries, including Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation among others. The FCL is much larger in scope than standard libraries for languages like C++, and comparable in scope to the standard libraries of Java.
Memory management :
The .NET Framework CLR frees the developer from the burden of managing memory (allocating and freeing up when done); it handles memory management itself by detecting when memory can be safely freed. Instantiations of .NET types (objects) are allocated from the managed heap; a pool of memory managed by the CLR. As long as there exists a reference to an object, which might be either a direct reference to an object or via a graph of objects, the object is considered to be in use. When there is no reference to an object, and it cannot be reached or used, it becomes garbage, eligible for collection. NET Framework includes a garbage collector which runs periodically, on a separate thread from the application's thread, that enumerates all the unusable objects and reclaims the memory allocated to them.
The .NET Garbage Collector (GC) is a non-deterministic, compacting, mark-and-sweep garbage collector. The GC runs only when a certain amount of memory has been used or there is enough pressure for memory on the system. Since it is not guaranteed when the conditions to reclaim memory are reached, the GC runs are non-deterministic. Each .NET application has a set of roots, which are pointers to objects on the managed heap (managed objects). These include references to static objects and objects defined as local variables or method parameters currently in scope, as well as objects referred to by CPU registers. When the GC runs, it pauses the application, and for each object referred to in the root, it recursively enumerates all the objects reachable from the root objects and marks them as reachable. It uses CLI metadata and reflection to discover the objects encapsulated by an object, and then recursively walk them. It then enumerates all the objects on the heap (which were initially allocated contiguously) using reflection. All objects not marked as reachable are garbage. This is the mark phase. Since the memory held by garbage is not of any consequence, it is considered free space. However, this leaves chunks of free space between objects which were initially contiguous. The objects are then compacted together to make used memory contiguous again. Any reference to an object invalidated by moving the object is updated by the GC to reflect the new location. The application is resumed after the garbage collection is over.
The GC used by .NET Framework is also generational. Objects are assigned a generation; newly created objects belong to Generation 0. The objects that survive a garbage collection are tagged as Generation 1, and the Generation 1 objects that survive another collection are Generation 2 objects. The .NET Framework uses up to Generation 2 objects. Higher generation objects are garbage collected less frequently than lower generation objects. This helps increase the efficiency of garbage collection, as older objects tend to have a longer lifetime than newer objects. Thus, by eliminating older (and thus more likely to survive a collection) objects from the scope of a collection run, fewer objects need to be checked and compacted.
- C Sharp :
C# (pronounced see sharp) is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, procedural, generic, object-oriented (class-based), and component-oriented programming disciplines. It was developed by Microsoft within its .NET initiative and later approved as a standard by Ecma (ECMA-334) and ISO (ISO/IEC 23270:2006). C# is one of the programming languages designed for the Common Language Infrastructure.
C# is intended to be a simple, modern, general-purpose, object-oriented programming language. Its development team is led by Anders Hejlsberg. The most recent version is C# 5.0, which was released on August 15, 2012.
The ECMA standard lists these design goals for C#:
The C# language is intended to be a simple, modern, general-purpose, object-oriented programming language. The language, and implementations thereof, should provide support for software engineering principles such as strong type checking, array bounds checking, detection of attempts to use uninitialized variables, and automatic garbage collection. Software robustness, durability, and programmer productivity are important.
The language is intended for use in developing software components suitable for deployment in distributed environments.
Source code portability is very important, as is programmer portability, especially for those programmers already familiar with C and C++. Support for internationalization is very important.
C# is intended to be suitable for writing applications for both hosted and embedded systems, ranging from the very large that use sophisticated operating systems, down to the very small having dedicated functions.
Although C# applications are intended to be economical with regard to memory and processing power requirements, the language was not intended to compete directly on performance and size with C or assembly language.
Name :C-sharp musical note (left)
The name "C sharp" was inspired by musical notation where a sharp indicates that the written note should be made a semitone higher in pitch. This is similar to the language name of C++, where "++" indicates that a variable should be incremented by 1.
Due to technical limitations of display (standard fonts, browsers, etc.) and the fact that the sharp symbol (U+266F ? music sharp sign (HTML: ♯)) is not present on the standard keyboard, the number sign (U+0023 # number sign (HTML: #)) was chosen to represent the sharp symbol in the written name of the programming language. This convention is reflected in the ECMA-334 C# Language Specification. However, when it is practical to do so (for example, in advertising or in box art), Microsoft uses the intended musical symbol.
The "sharp" suffix has been used by a number of other .NET languages that are variants of existing languages, including J# (a .NET language also designed by Microsoft that is derived from Java 1.1), A# (from Ada), and the functional programming language F#. The original implementation of Eiffel for .NET was called Eiffel#, a name retired since the full Eiffel language is now supported. The suffix has also been used for libraries, such as Gtk# (a .NET wrapper for GTK+ and other GNOME libraries), Cocoa# (a wrapper for Cocoa).
During the development of the .NET Framework, the class libraries were originally written using a managed code compiler system called Simple Managed C (SMC). In January 1999, Anders Hejlsberg formed a team to build a new language at the time called Cool, which stood for "C-like Object Oriented Language". Microsoft had considered keeping the name "Cool" as the final name of the language, but chose not to do so for trademark reasons. By the time the .NET project was publicly announced at the July 2000 Professional Developers Conference, the language had been renamed C#, and the class libraries and ASP.NET runtime had been ported to C#.
C#'s principal designer and lead architect at Microsoft is Anders Hejlsberg, who was previously involved with the design of Turbo Pascal, Embarcadero Delphi (formerly CodeGear Delphi, Inprise Delphi and Borland Delphi), and Visual J++. In interviews and technical papers he has stated that flaws in most major programming languages (e.g. C++, Java, Delphi, and Smalltalk) drove the fundamentals of the Common Language Runtime (CLR), which, in turn, drove the design of the C# language itself.
James Gosling, who created the Java programming language in 1994, and Bill Joy, a co-founder of Sun Microsystems, the originator of Java, called C# an "imitation" of Java; Gosling further claimed that "[C# is] sort of Java with reliability, productivity and security deleted." Klaus Kreft and Angelika Langer (authors of a C++ streams book) stated in a blog post that "Java and C# are almost identical programming languages. Boring repetition that lacks innovation," "Hardly anybody will claim that Java or C# are revolutionary programming languages that changed the way we write programs," and "C# borrowed a lot from Java - and vice versa. Now that C# supports boxing and unboxing, we'll have a very similar feature in Java." Anders Hejlsberg has argued that C# is "not a Java clone" and is "much closer to C++" in its design.
Since the release of C# 2.0 in November 2005, the C# and Java languages have evolved on increasingly divergent trajectories, becoming somewhat less similar. One of the first major departures came with the addition of generics to both languages, with vastly different implementations. C# makes use of reification to provide "first-class" generic objects that can be used like any other class, with code generation performed at class-load time. By contrast, Java's generics are essentially a language syntax feature, and they do not affect the generated byte code, because the compiler performs type erasure on the generic type information after it has verified its correctness.
Furthermore, C# has added several major features to accommodate functional-style programming, culminating in the LINQ extensions released with C# 3.0 and its supporting framework of lambda expressions, extension methods, and anonymous types. These features enable C# programmers to use functional programming techniques, such as closures, when it is advantageous to their application. The LINQ extensions and the functional imports help developers reduce the amount of "boilerplate" code that is included in common tasks like querying a database, parsing an xml file, or searching through a data structure, shifting the emphasis onto the actual program logic to help improve readability and maintainability.
C# used to have a mascot called Andy (named after Anders Hejlsberg). It was retired on Jan 29, 2004.
C# was originally submitted for review to the ISO subcommittee JTC 1/SC 22 under ISO/IEC 23270:2003, which is now withdrawn. It was then approved under ISO/IEC 23270:2006.
- ASP.NET :
ASP.NET is a server-side Web application framework designed for Web development to produce dynamic Web pages. It was developed by Microsoft to allow programmers to build dynamic web sites, web applications and web services. It was first released in January 2002 with version 1.0 of the .NET Framework, and is the successor to Microsoft's Active Server Pages (ASP) technology. ASP.NET is built on the Common Language Runtime (CLR), allowing programmers to write ASP.NET code using any supported .NET language. The ASP.NET SOAP extension framework allows ASP.NET components to process SOAP messages.
After four years of development, and a series of beta releases in 2000 and 2001, ASP.NET 1.0 was released on January 5, 2002 as part of version 1.0 of the .NET Framework. Even prior to the release, dozens of books had been written about ASP.NET, and Microsoft promoted it heavily as part of its platform for Web services. Scott Guthrie became the product unit manager for ASP.NET, and development continued apace, with version 1.1 being released on April 24, 2003 as a part of Windows Server 2003. This release focused on improving ASP.NET's support for mobile devices.
ASP.NET Web pages, known officially as Web Forms, are the main building blocks for application development. Web forms are contained in files with a ".aspx" extension; these files typically contain static (X)HTML markup, as well as markup defining server-side Web Controls and User Controls where the developers place all the rc content for the Web page. Additionally, dynamic code which runs on the server can be placed in a page within a block , which is similar to other Web development technologies such as PHP, JSP, and ASP. With ASP.NET Framework 2.0, Microsoft introduced a new code-behind model which allows static text to remain on the .aspx page, while dynamic code remains in an .aspx.vb or .aspx.cs or .aspx.fs file (depending on the programming language used).
A directive is special instructions on how ASP.NET should process the page. The most common directive is <%@ Page %> which can specify many attributes used by the ASP.NET page parser and compiler.
User controls are encapsulations of sections of pages which are registered and used as controls in ASP.NET.etc.
Programmers can also build custom controls for ASP.NET applications. Unlike user controls, these controls do not have an ASCX markup file, having all their code compiled into a dynamic link library (DLL) file. Such custom controls can be used across multiple Web applications and Visual Studio projects.
ASP.NET uses a visited composites rendering technique. During compilation, the template (.aspx) file is compiled into initialization code which builds a control tree (the composite) representing the original template. Literal text goes into instances of the Literal control class, and server controls are represented by instances of a specific control class. The initialization code is combined with user-written code (usually by the assembly of multiple partial classes) and results in a class specific for the page. The page doubles as the root of the control tree.
Actual requests for the page are processed through a number of steps. First, during the initialization steps, an instance of the page class is created and the initialization code is executed. This produces the initial control tree which is now typically manipulated by the methods of the page in the following steps. As each node in the tree is a control represented as an instance of a class, the code may change the tree structure as well as manipulate the properties/methods of the individual nodes. Finally, during the rendering step a visitor is used to visit every node in the tree, asking each node to render itself using the methods of the visitor. The resulting HTML output is sent to the client.
After the request has been processed, the instance of the page class is discarded and with it the entire control tree. This is a source of confusion among novice ASP.NET programmers who rely on the class instance members that are lost with every page request/response cycle.
ASP.NET applications are hosted by a Web server and are accessed using the stateless HTTP protocol. As such, if an application uses stateful interaction, it has to implement state management on its own. ASP.NET provides various functions for state management. Conceptually, Microsoft treats "state" as GUI state. Problems may arise if an application needs to keep track of "data state"; for example, a finite-state machine which may be in a transient state between requests (lazy evaluation) or which takes a long time to initialize. State management in ASP.NET pages with authentication can make Web scraping difficult or impossible.
Application state is held by a collection of shared user-defined variables. These are set and initialized when the Application_OnStart event fires on the loading of the first instance of the application and are available until the last instance exits. Application state variables are accessed using the Applications collection, which provides a wrapper for the application state. Application state variables are identified by name.
Server-side Session state is held by a collection of user-defined session variables that are persistent during a user session. These variables, accessed using the Session collection, are unique to each session instance. The variables can be set to be automatically destroyed after a defined time of inactivity even if the session does not end. Client-side user session is maintained by either a cookie or by encoding the session ID in the URL itself.
ASP.NET supports three modes of persistence for server-side session variables:
- In-Process Mode
- The session variables are maintained within the ASP.NET process. This is the fastest way; however, in this mode the variables are destroyed when the ASP.NET process is recycled or shut down.
ASP State Mode
ASP.NET runs a separate Windows service that maintains the state variables. Because state management happens outside the ASP.NET process, and because the ASP.NET engine accesses data using .NET Remoting, ASPState is slower than In-Process. This mode allows an ASP.NET application to be load-balanced and scaled across multiple servers. Because the state management service runs independently of ASP.NET, the session variables can persist across ASP.NET process shutdowns. However, since session state server runs as one instance, it is still one point of failure for session state. The session-state service cannot be load-balanced, and there are restrictions on types that can be stored in a session variable.
State variables are stored in a database, allowing session variables to be persisted across ASP.NET process shutdowns. The main advantage of this mode is that it allows the application to balance load on a server cluster, sharing sessions between servers. This is the slowest method of session state management in ASP.NET.
ASP.NET session state enables you to store and retrieve values for a user as the user navigates ASP.NET pages in a Web application. HTTP is a stateless protocol. This means that a Web server treats each HTTP request for a page as an independent request. The server retains no knowledge of variable values that were used during previous requests. ASP.NET session state identifies requests from the same browser during a limited time window as a session, and provides a way to persist variable values for the duration of that session. By default, ASP.NET session state is enabled for all ASP.NET applications.
Alternatives to session state include the following:
- Application state, which stores variables that can be accessed by all users of an ASP.NET application.
- Profile properties, which persists user values in a data store without expiring them.
- ASP.NET caching, which stores values in memory that is available to all ASP.NET applications.
- View state, which persists values in a page.
The query string and fields on an HTML form that are available from an HTTP request. For a comparison of different state-management options, see ASP.NET State Management Recommendations. Session
View state refers to the page-level state management mechanism, utilized by the HTML pages emitted by ASP.NET applications to maintain the state of the Web form controls and widgets. The state of the controls is encoded and sent to the server at every form submission in a hidden field known as __VIEWSTATE. The server sends back the variable so that when the page is re-rendered, the controls render at their last state. At the server side, the application may change the viewstate, if the processing requires a change of state of any control. The states of individual controls are decoded at the server, and are available for use in ASP.NET pages using the ViewState collection.
The main use for this is to preserve form information across postbacks. View state is turned on by default and normally serializes the data in every control on the page regardless of whether it is actually used during a postback. This behavior can (and should) be modified, however, as View state can be disabled on a per-control, per-page, or server-wide basis.
Developers need to be wary of storing sensitive or private information in the View state of a page or control, as the base64 string containing the view state data can easily be de-serialized. By default, View state does not encrypt the __VIEWSTATE value. Encryption can be enabled on a server-wide (and server-specific) basis, allowing for a certain level of security to be maintained.
ASP.NET offers a "Cache" object that is shared across the application and can also be used to store various objects. The "Cache" object holds the data only for a specified amount of time and is automatically cleaned after the session time-limit elapses.
Other means of state management that are supported by ASP.NET are cookies, caching, and using the query string.
When first released, ASP.NET lacked a template engine. Because the .NET Framework is object-oriented and allows for inheritance, many developers would define a new base class that inherits from "System.Web.UI.Page", write methods there that render HTML, and then make the pages in their application inherit from this new class. While this allows for common elements to be reused across a site, it adds complexity and mixes source code with markup. Furthermore, this method can only be visually tested by running the application - not while designing it. Other developers have used include files and other tricks to avoid having to implement the same navigation and other elements in every page.
Child pages use those ContentPlaceHolder controls, which must be mapped to the place-holder of the master page that the content page is populating. The rest of the page is defined by the shared parts of the master page, much like a mail merge in a word processor. All markup and server controls in the content page must be placed within the ContentPlaceHolder control.
When a request is made for a content page, ASP.NET merges the output of the content page with the output of the master page, and sends the output to the user.
The master page remains fully accessible to the content page. This means that the content page may still manipulate headers, change title, configure caching etc. If the master page exposes public properties or methods (e.g. for setting copyright notices) the content page can use these as well.
ASP.NET aims for performance benefits over other script-based technologies (including classic ASP) by compiling the server-side code to one or more DLL files on the Web server. This compilation happens automatically the first time a page is requested (which means the developer need not perform a separate compilation step for pages). This feature provides the ease of development offered by scripting languages with the performance benefits of a compiled binary. However, the compilation might cause a noticeable but short delay to the Web user when the newly edited page is first requested from the Web server, but will not again unless the page requested is updated further.
The ASPX and other resource files are placed in a virtual host on an Internet Information Services server (or other compatible ASP.NET servers; see Other implementations, below). The first time a client requests a page, the .NET Framework parses and compiles the file(s) into a .NET assembly and sends the response; subsequent requests are served from the DLL files. By default ASP.NET will compile the entire site in batches of 1000 files upon first request. If the compilation delay is causing problems, the batch size or the compilation strategy may be tweaked.
Developers can also choose to pre-compile their "codebehind" files before deployment, using MS Visual Studio, eliminating the need for just-in-time compilation in a production environment. This also eliminates the need of having the source code on the Web server. It also supports pre-compile text.
Standard dotnet Frameworks :
- Base One Foundation Component Library (BFC) is a RAD framework for building .NET database and distributed computing applications.
- DotNetNuke is an open-source solution which comprises both a web application framework and a content management system which allows for advanced extensibility through modules, skins, and providers.
- Castle MonoRail, an open-source MVC framework with an execution model similar to Ruby on Rails. The framework is commonly used with Castle ActiveRecord, an ORM layer built on NHibernate.
- Spring.NET, a port of the Spring framework for Java.
- Survey Project is an open-source web-based survey and form engine framework written in ASP.NET and C#
- Carbon MVVM is an open-source MVVM framework based on ASP.NET
Microsoft has released some extension frameworks that plug into ASP.NET and extend its functionality. Some of them are:
- ASP.NET AJAX
- An extension with both client-side as well as server-side components for writing ASP.NET pages that incorporate AJAX functionality.
- ASP.NET MVC Framework
- An extension to author ASP.NET pages using the model - view - controller (MVC) architecture.
- ASP.NET Razor view engine
- An alternative view to Web Forms designed for use with MVC since release 3.
- ASP.NET Dynamic Data
- A scaffolding extension to build data driven web applications
- ASP.NET Web API
- An HTTP API framework for exposing web services.
- ASP.NET SignalR
- A real-time communications framework for bi-directional communication between client and server.
- Microsoft Visual Studio Express :
Microsoft Visual Studio Express
Microsoft Visual Studio Express is a set of freeware integrated development environments (IDE) developed by Microsoft that are lightweight versions of the Microsoft Visual Studio product line. Express Editions were conceived beginning with Visual Studio 2005. The idea of Express editions is to provide streamlined, easy-to-use and easy-to-learn IDEs for users other than professional software developers, such as hobbyists and students.
The first versions of Visual Studio 2005 Express were released on October 2005 and the Service Pack 1 versions were released on December 2006. Visual Studio 2005 Express Editions run on Windows 2000 SP4 and above Windows NT-based platforms. In response to popular demand since their original release, Microsoft has stated that these editions will always remain free-of-charge. Visual Studio 2008 Express editions were released in November 2007 and their SP1 on August 11, 2008. Visual Studio 2008 and 2010 Express Editions require Windows XP SP3 or a later Windows version; Windows 2000 is no longer supported for development but can be a target platform if using 2008 Express. Windows Phone support is only available on Windows Vista or a later Windows version. Microsoft may make previous versions of Visual Studio Express unavailable. Visual Studio 2005 Express editions are not available for download from Microsoft's website.
Visual Studio 2010 Express Editions were released in April 2010 alongside Visual Studio 2010. Free registration is mandatory in order to continue using Visual Studio 2010 Express Editions beyond 30 days. Earlier with Visual Studio 2005 and 2008 Express Editions, registration was not required for the ISO version but was required for the web download version.
The Visual Studio 2005, 2008, and 2010 Express IDEs were geared toward single project types. For example, where the full retail editions supported multiple project types within a solution, with the Express editions you might develop a web application in Visual Web Developer Express that consumed a class library developed and built separately in Visual C# Express.
Visual Studio 2005, 2008, and 2010 Express consisted of the following separate products :
- Visual Basic Express
- Visual C++ Express
- Visual C# Express
- Visual J# Express (2005 only)
- Visual Web Developer Express
- Visual Studio Express for Windows Phone (2010 only)
- SQL Server Express
The version shipping with Visual Studio 2005 will be supported until 2015 as per the product life-cycle strategy.
Visual Basic Express
Visual Basic 2005/2008 (but not Visual Basic 2010) Express Edition contains the Visual Basic 6.0 converter that makes it possible to upgrade Visual Basic 6.0 projects to the Visual Basic.NET. The Express Editions (2005 and 2008) mostly have the same following limitations: (Specific 2008 Express editions limitations here)
- No IDE support for databases other than SQL Server Express and Microsoft Access
- No support for Web Applications with ASP.NET (this can instead be done with Visual Web Developer Express, though the non-Express version of Visual Studio allows both web and windows applications from the same IDE)
- No support for developing for mobile devices (no templates or emulator)
- No Crystal Reports
- Fewer project templates (for example, Windows services template and Excel Workbook template)
- Limited options for debugging and breakpoints
- No support for creating Windows Services (can be gained through download of a project template).
- No support for OpenMP
- Limited deployment options for finished programs
- Visual Basic Express lacks some advanced features of the standard versions. For example, there is no Outlining feature Hide selection to collapse/expand selected text.
Despite the fact that it is a stripped-down version of Visual Studio, some improvements were made upon Visual Basic 2008 from Visual Basic 2005. Visual Basic 2008 Express includes the following improvements over Visual Basic 2005 Express:
- Includes the visual Windows Presentation Foundation designer codenamed "Cider"
- Debugs at runtime
- Better IntelliSense support
- Fixes common spelling errors
- Corrects most forms of invalid syntax
- Provides suggestions to class names when specified classes are not found
Visual Web Developer Express
Visual Studio 2005 lacks certain features, such as the Accessibility Checker, the ability to create standalone Class Library Projects (which can be done by the other language-specific Express Editions), the extensibility support necessary to load third-party add-ins, macros and some other features.
Visual Studio 2008 Express Web Developer SP1 supports both class library and Web Application projects, which were not supported in Visual Studio 2005 Express. It also includes a new integrated HTML designer based on Microsoft Expression Web. However, the functionality to publish self-developed websites is not present in this edition.
Visual C++ Express
The Visual C++ Express Edition can be used to compile .NET as well as Win32 applications. The Windows Platform SDK compilers and core files are included which can be used to build applications that use the Win32 API. Applications using either MFC or ATL are not supported by Visual C++ Express. Although the libraries can be obtained from some older versions of Windows SDK and Windows Driver Kit, allowed usage of those libraries are limited.
However, natively compiling 64-bit applications through the IDE is not supported without some involved configurations. If the freely available full version of the Windows SDK is installed, 64-bit applications can be built on the command line using the x64 cross-compiler (Cl.exe) supplied with the SDK. True integration of 64-bit compilers to the Visual C++ 2008 Express Edition is possible, but remains cumbersome. In Visual C++ Express 2010 however, it is as simple as changing the Platform Toolset to the Windows SDK instead of the built-in v100.
Since Visual Studio Express 2012 for Windows Desktop, 64-bit desktop application build is supported without needing to install an older version of the Windows SDK.
Visual C++ 2008 and 2010 Express does not include a resource editor. The higher-end commercial editions of Visual Studio, specifically the Professional and Team Suite editions, have these features.
Many open source projects have started providing project files created with Visual C++ Express; noteworthy examples include the Ogre and Irrlicht engines. Modding kits for commercial engines, such as Valve's Source engine, are also supporting this development system.
The limitations of Visual C++ Express are :
- No resource editor.
- No built-in MFC support.
- No built-in ATL support.
- No profiling support.
- No built-in x64 compiler for editions. (A 64-bit compiler is included with Windows SDK or Visual Studio Express 2012.)
- No support for OpenMP.
- No support for add-ins or IDE macros.
Ability to attach the debugger to an already-running process is possible by enabling Tools -> Settings -> Expert settings (starting with 2010).
No option for crash dump generation (Debug->Save Dump As).
While Microsoft lists memory windows as unavailable in Express editions of Visual Studio 2010, third parties have reported that they are available when Expert Settings are enabled.
Visual C# Express
Visual C# Express is an easy-to-use, free, lightweight, integrated development environment (IDE) designed for beginning developers, students, and hobbyists interested in building console-based applications, class libraries, Windows Forms and Windows Presentation Foundation applications. It can be used to create applications and games (when combined with the XNA Game Studio) for Windows, Xbox 360 and Zune.
There is a substantial community for C# Express due to the many game enthusiasts that are taking up programming.
The list of breakpoints where the user could control the breakpoint features has been removed, so that now the user can only toggle breakpoints. The following refactoring modes were also removed:
- Encapsulate field
- Promote local to parameter
- Reorder parameters
- Remove parameters
- Extract interface
This effectively reduces the refactoring capabilities of Visual C# Express to Renaming and Extracting Methods.
Developers state the reason of this removal as "to simplify the C# Express user experience". However this created a controversy as some end users claim it is an important feature, and instead of simplifying it cripples the user experience.
The ability to attach the debugger to an already-running process has also been removed, hindering scenarios such as writing Windows services and re-attaching a debugger under ASP.NET when errors under the original debugging session cause breakpoints to be ignored.
Additionally it has been observed that the express version requires that the time between builds be greater than approximately 20 seconds. If a project is rapidly modified and rebuilt the target will not be updated even though the source has been modified and saved.
- Microsoft Macro Assembler :
Microsoft Macro Assembler
The Microsoft Macro Assembler (MASM) is an x86 assembler that uses the Intel syntax for MS-DOS and Microsoft Windows. Beginning with MASM 8.0 there are two versions of the assembler - one for 16-bit and 32-bit assembly sources, and another (ML64) for 64-bit sources only.
MASM is maintained by Microsoft, but since version 6.12 has not been sold as a separate product, it is instead supplied with various Microsoft SDKs and C compilers. Recent versions of MASM are included with Microsoft Visual Studio.
The earliest versions of MASM date back to 1981.
Up to version 5.0, MASM was available as an MS-DOS application only. Versions 5.1 and 6.0 were available as both MS-DOS and OS/2 applications.
Version 6.0, released in 1992, added high-level programming support and a more C-like syntax. By the end of the year, version 6.1A updated the memory management to be compatible with code produced by Visual C++. In 1993 full support for 32-bit applications and the Pentium instruction set was added. The MASM binary at that time was shipped as a "bi-modal" DOS-extended binary (using the Phar Lap TNT DOS extender).
Versions 6.12 to 6.14 were implemented as patches for version 6.11. These patches changed the type of the binary to native PE format; version 6.11 is the last version of MASM that will run under MS-DOS.
By the end of 1997 MASM fully supported Windows 95 and included some AMD-specific instructions.
In 1999 Intel released macros for SIMD and MMX instructions, which were shortly after supported natively by MASM. With the 6.15 release in 2000, Microsoft discontinued support for MASM as a separate product, instead subsuming it into the Visual Studio toolset. Though it was still compatible with Windows 98, current versions of Visual Studio were not. Support for 64-bit processors was not added until the release of Visual Studio 2005, with MASM 8.0.
Object module formats supported by MASM
Early versions of MASM generated object modules using the OMF format, which was used to create binaries for MS-DOS or OS/2. Since version 6.1, MASM is able to produce object modules in the Portable Executable (PE/COFF) format. PE/COFF is compatible with recent Microsoft C compilers, and object modules produced by either MASM or the C compiler can be routinely intermixed and linked into Win32 and Win64 binaries.
- Visual Basic :
Visual Basic is a third-generation event-driven programming language and integrated development environment (IDE) from Microsoft for its COM programming model first released in 1991. Visual Basic is designed to be relatively easy to learn and use. Visual Basic was derived from BASIC and enables the rapid application development (RAD) of graphical user interface (GUI) applications, access to databases using Data Access Objects, Remote Data Objects, or ActiveX Data Objects, and creation of ActiveX controls and objects. The scripting language VBScript is a subset of Visual Basic.
A programmer can create an application using the components provided by the Visual Basic program itself. Programs written in Visual Basic can also use the Windows API, but doing so requires external function declarations. Though the program has received criticism for its perceived faults, version 3 of Visual Basic was a runaway commercial success, and many companies offered third party controls greatly extending its functionality.
The final release was version 6 in 1998. Microsoft's extended support ended in March 2008 and the designated successor was Visual Basic .NET (now known simply as Visual Basic).
A dialect of Visual Basic, Visual Basic for Applications (VBA), is used as a macro or scripting language within several Microsoft applications, including Microsoft Office.
Like the BASIC programming language, Visual Basic was designed to be easily learned and used by beginner programmers. The language not only allows programmers to create simple GUI applications, but to also develop complex applications. Programming in VB is a combination of visually arranging components or controls on a form, specifying attributes and actions of those components, and writing additional lines of code for more functionality. Since default attributes and actions are defined for the components, a simple program can be created without the programmer having to write many lines of code. Performance problems were experienced by earlier versions, but with faster computers and native code compilation this has become less of an issue.
Although VB programs can be compiled into native code executables from version 5 onwards, they still require the presence of runtime libraries of approximately 1 MB in size. Runtime libraries are included by default in Windows 2000 and later, however for earlier versions of Windows, i.e. 95/98/NT, runtime libraries must be distributed together with the executable.
Forms are created using drag-and-drop techniques. A tool is used to place controls (e.g., text boxes, buttons, etc.) on the form (window). Controls have attributes and event handlers associated with them. Default values are provided when the control is created, but may be changed by the programmer. Many attribute values can be modified during run time based on user actions or changes in the environment, providing a dynamic application. For example, code can be inserted into the form resize event handler to reposition a control so that it remains centered on the form, expands to fill up the form, etc. By inserting code into the event handler for a keypress in a text box, the program can automatically translate the case of the text being entered, or even prevent certain characters from being inserted.
Visual Basic can create executables (EXE files), ActiveX controls, or DLL files, but is primarily used to develop Windows applications and to interface database systems. Dialog boxes with less functionality can be used to provide pop-up capabilities. Controls provide the basic functionality of the application, while programmers can insert additional logic within the appropriate event handlers. For example, a drop-down combination box will automatically display its list and allow the user to select any element. An event handler is called when an item is selected, which can then execute additional code created by the programmer to perform some action based on which element was selected, such as populating a related list.
Alternatively, a Visual Basic component can have no user interface, and instead provide ActiveX objects to other programs via Component Object Model (COM). This allows for server-side processing or an add-in module.
The runtime recovers unused memory using reference counting which depends on variables passing out of scope or being set to "Nothing", resulting in the very common problem of memory leaks. There is a large library of utility objects, and the language provides basic object oriented support. Unlike many other programming languages, Visual Basic is generally not case sensitive, although it will transform keywords into a standard case configuration and force the case of variable names to conform to the case of the entry within the symbol table. String comparisons are case sensitive by default.
The Visual Basic compiler is shared with other Visual Studio languages (C, C++), but restrictions in the IDE do not allow the creation of some targets (Windows model DLLs) and threading models.
Performance and other issues
Earlier versions of Visual Basic (prior to version 5) compiled the code to P-Code only. The P-Code is interpreted by the language runtime. The benefits of P-Code include portability and smaller binary file sizes, but it usually slows down the execution, since having a runtime adds an additional layer of interpretation. However, small amounts of code and algorithms can be constructed to run faster than compiled native code.
Visual Basic applications require Microsoft Visual Basic runtime MSVBVMxx.DLL, where xx is the relevant version number, either 50 or 60. MSVBVM60.dll comes as standard with Windows in all editions after Windows 98 while MSVBVM50.dll comes with all editions after Windows 95. A Windows 95 machine would however require inclusion with the installer of whichever dll was needed by the program.
Visual Basic 5 and 6 can compile code to either native or P-Code but in either case the runtime is still required for built in functions and forms management.
- Criticisms levelled at Visual Basic editions prior to VB.NET include:
- Versioning problems associated with various runtime DLLs, known as DLL hell
- Poor support for object-oriented programming
- Inability to create multi-threaded applications, without resorting to Windows API calls
- Inability to create Windows services
- Variant types have a greater performance and storage overhead than strongly typed programming languages
- Dependency on complex and fragile COM Registry entries
- The development environment is no longer supported by Microsoft.
- Visual C++ :
Microsoft Visual C++ (often abbreviated as MSVC or VC++) is a commercial (free version available), integrated development environment (IDE) product from Microsoft for the C, C++, and C++/CLI programming languages. It features tools for developing and debugging C++ code, especially code written for the Microsoft Windows API, the DirectX API, and the Microsoft .NET Framework.
Many applications require redistributable Visual C++ packages to function correctly. These packages are often installed independently of applications, allowing multiple applications to make use of the package while only having to install it once. These Visual C++ redistributable and runtime packages are mostly installed for standard libraries that many applications use.
The predecessor to Visual C++ was called Microsoft C/C++. There was also a Microsoft QuickC 2.5 and a Microsoft QuickC for Windows 1.0.
Microsoft C 1.0, based on Lattice C, was Microsoft's first C product in 1983. It was not K&R C.
- C 2.0 added large model support.
- C 3.0 was the first version developed inside Microsoft. It was extremely compatible with K&R and the later ANSI standard. It was being used inside Microsoft (for Windows and Xenix development) in early 1984. It shipped as a product in 1985.
- C 4.0 added optimizations and CodeView, a source level debugger.
- C 5.0 added loop optimizations and Huge Model (arrays bigger than 64k) support. Microsoft Fortran and the first 32 bit compiler for 80386 were also part of this project.
- C 5.1 released in 1988 allowed compiling programs for OS/2 1.x.
- C 6.0 released in 1989. It added global flow analysis, a source browser, and a new debugger, and included an optional C++ front end.
- C/C++ 7.0 was released in 1992. Added built-in support for C++ and MFC 1.0.
Visual C++ 1.0 (original name: Visual C++ 32-bit Edition) was the first version for 32-bit development. Although released when 16-bit 1.5 was available, it did not include support for OLE2 and ODBC. It was also available in a bundle called Visual C++ 16/32-bit Suite, which included Visual C++ 1.5
Visual C++ 2.0, which included MFC 3.0, was the first version to be 32-bit only. In many ways, this version was ahead of its time, since Windows 95, then codenamed "Chicago", was not yet released, and Windows NT had only a small market share. As a result, this release was almost a "lost generation". Microsoft included and updated Visual C++ 1.5 as part of the 2.x releases up to 2.1, which included Visual C++ 1.52, and both 16-bit and 32-bit version of the Control Development Kit (CDK) were included. Visual C++ 2.x also supported Win32s development. It is available through Microsoft Developer Network. There was a Visual C++ 2.0 RISC Edition for MIPS and Alpha processors, as well as a cross-platform edition for the Macintosh (68000 instruction set).
Visual C++ 2.1 and 2.2 were updates for 2.0 available through subscription.
Visual C++ 4.0, released on 12/11/1995 which included MFC 4.0, was designed for Windows 95 and Windows NT. To allow support of legacy (Windows 3.x/DOS) projects, 4.0 came bundled with the Visual C++ 1.52 installation CD. Updates available through subscription included Visual C++ 4.1, which came with the Microsoft Game SDK (later released separately as the DirectX SDK), and Visual C++ 4.2. Version number 3.0 was skipped to achieve version number parity between Visual C++ 4.0 and MFC 4.0
Visual C++ 4.2 did not support Windows 3.x (Win32s) development. This was the final version with a cross-platform edition for the Macintosh available and it differed from the 2.x version in that it also allowed compilation for the PowerPC instruction set.
Visual C++ 5.0, which included MFC 4.21 and was released 4/28/1997, was a major upgrade from 4.2. Available in four editions:
Visual C++ 6.0 (commonly known as VC6), which included MFC 6.0, was released in 1998. The release was somewhat controversial since it did not include an expected update to MFC. Visual C++ 6.0 is still quite popular and often used to maintain legacy projects. There are, however, issues with this version under Windows XP, especially under the debugging mode (for example, the values of static variables do not display). The debugging issues can be solved with a patch called the "Visual C++ 6.0 Processor Pack". Version number: 12.00.8804
Visual C++ .NET 2002 (known also as Visual C++ 7.0), which included MFC 7.0, was released in 2002 with support for link time code generation and debugging runtime checks, .NET 1.0, and Visual C# and Managed C++. The new user interface used many of the hot keys and conventions of Visual Basic, which accounted for some of its unpopularity among C++ developers. Version number: 13.00.9466
Visual C++ .NET 2003 (known also as Visual C++ 7.1), which included MFC 7.1, was released in 2003 along with .NET 1.1 and was a major upgrade to Visual C++ .NET 2002. It was considered a patch to Visual C++ .NET 2002. Accordingly, the English language upgrade version of Visual Studio .NET 2003 shipped for minimal cost to owners of the English language version of Visual Studio .NET 2002. This was the last version to support Windows 95 and NT 4.0 as a target.
eMbedded Visual C++ in various versions was used to develop for some versions of the Windows CE operating system. Initially it replaced a development environment consisting of tools added onto Visual C++ 6.0. eMbedded Visual C++ was replaced as a separate development environment by Microsoft Visual Studio 2005.
32-bit and 64-bit versions
Visual C++ 2005 (known also as Visual C++ 8.0), which included MFC 8.0, was released in November 2005. This version supports .NET 2.0 and dropped Managed C++ for C++/CLI. Managed C++ for CLI is still available via compiler options though. It also introduced OpenMP. With Visual C++ 2005, Microsoft also introduced Team Foundation Server. Visual C++ 8.0 has problems compiling MFC AppWizard projects that were created using Visual Studio 6.0, so maintenance of legacy projects can be continued with the original IDE if rewriting was not feasible. Visual C++ 2005 is the last version to be able to target Windows 98 and Windows Me.
The Visual C++ compiler ABI have historically changed between major compiler releases.This is especially the case for STL containers, where container sizes have varied a lot between compiler releases. Microsoft therefore recommends against using C++ interfaces at module boundaries when one want to enable client code compiled using a different compiler version. Instead of C++, Microsoft recommends using C or COM interfaces, that are designed to have a stable ABI between compiler releases.
Visual C++ ships with different versions of C runtime libraries. This means users can compile their code with any of the available libraries. However, this can cause some problems when using different components (DLLs, EXEs) in the same program. A typical example is a program using different libraries. The user should use the same C Run-Time for all the program's components unless the implications are understood. Microsoft recommends using the multithreaded, dynamic link library (/MD or /MDd compiler option) to avoid possible problems.
Although the product originated as an IDE for the C programming language, the compiler's support for that language conforms only to the original edition of the C standard, dating from 1989. The later revisions of the standard, C99 and C11, are not supported. According to Herb Sutter, the C compiler is only included for "historical reasons" and is not planned to be further developed. Users are advised to either use only the subset of the C language that is also valid C++, and then use the C++ compiler to compile their code, or to just use a different compiler such as Intel C++ Compiler or the GNU Compiler Collection instead.
- Visual Basic .NET :
Visual Basic .NET
Microsoft Visual Basic 2010 Express, an integrated development environment that implements Visual Basic .NET. Visual Basic .NET (VB.NET) is an object-oriented computer programming language that can be viewed as an evolution of the classic Visual Basic (VB), implemented on the .NET Framework. Microsoft currently supplies two main editions of IDEs for developing in Visual Basic: Microsoft Visual Studio 2012, which is commercial software and Visual Basic Express Edition 2012, which is free of charge. The command-line compiler, VBC.EXE, is installed as part of the freeware .NET Framework SDK. Mono also includes a command-line VB.NET compiler. The most recent version is VB 2012, which was released on August 15, 2012.
There are 6 versions of Visual Basic .NET implemented by the Visual Basic team.
Visual Basic .NET (2002) (VB 7.0)
The first version of Visual Basic .NET, which runs on .NET framework 1.0. The most important feature is Managed code, which contrasts with Visual Basic 6.0 and before.
Visual Basic .NET 2003 (VB 7.1)
Visual Basic .NET 2003 was released with version 1.1 of the .NET Framework. New features included support for the .NET Compact Framework and a better VB upgrade wizard. Improvements were also made to the performance and reliability of the .NET IDE (particularly the background compiler) and runtime. In addition, Visual Basic .NET 2003 was available in the Visual Studio.NET Academic Edition (VS03AE). VS03AE is distributed to a certain number of scholars from each country without cost.
Visual Basic 2005 (VB 8.0)
Visual Basic 2005 was the name used to refer to Visual Basic .NET, as Microsoft decided to drop the .NET portion of the title. For this release, Microsoft added many features, including:
- Design-time expression evaluation.
- The My pseudo-namespace (overview, details), which provides:
- easy access to certain areas of the .NET Framework that otherwise require significant code to access
- dynamically generated classes (notably My.Forms)
- Improvements to the VB-to-VB.NET converter
- The Using keyword, simplifying the use of objects that require the Dispose pattern to free resources
- Just My Code, which when debugging hides (steps over) boilerplate code written by the Visual Studio .NET IDE and system library code
- Data Source binding, easing database client/server development
The above functions (particularly My) are intended to reinforce Visual Basic .NET's focus as a rapid application development platform and further differentiate it from C#.
Visual Basic 2008 (VB 9.0)
Visual Basic 9.0 was released together with the Microsoft .NET Framework 3.5 on 19 November 2007. For this release, Microsoft added many features, including:
- A true conditional operator, "If(condition as boolean, truepart, falsepart)", to replace the "IIf" function.
- Anonymous types
- Support for LINQ
- Lambda expressions
- XML Literals
- Type Inference
- Extension methods
Visual Basic 2010 (VB 10.0)
In April 2010, Microsoft released Visual Basic 2010. Microsoft had planned to use the Dynamic Language Runtime (DLR) for that release but shifted to a co-evolution strategy between Visual Basic and sister language C# to bring both languages into closer parity with one another. Visual Basic's innate ability to interact dynamically with CLR and COM objects has been enhanced to work with dynamic languages built on the DLR such as IronPython and IronRuby. The Visual Basic compiler was improved to infer line continuation in a set of common contexts, in many cases removing the need for the "_" line continuation character. Also, existing support of inline Functions was complemented with support for inline Subs as well as multi-line versions of both Sub and Function lambdas.
Visual Basic 2012 (VB 11.0)
The latest version of Visual Basic .NET, which runs on .NET framework 4.5. Async Feature, Iterators, Call Hierarchy, Caller Information and Global Keyword in Namespace Statements are some of the major features introduced in this version of VB.
- Microsoft Visual SourceSafe :
Microsoft Visual SourceSafe
Microsoft Visual SourceSafe (VSS) is a source control software package oriented towards small software development projects. Like most source control systems, SourceSafe creates a virtual library of computer files. While most commonly used for source code, SourceSafe can actually handle any type of file in its database, but prior versions have been shown to be unstable when confronted with large amounts of non-textual data (images, binary executables, etc.).
SourceSafe was originally created by a company called One Tree Software. One Tree SourceSafe had gone through several releases in their 1.x to 2.x cycles, supporting DOS, OS/2 (with a Presentation Manager GUI), Windows, Windows NT, Mac, and Unix. When Microsoft bought OneTree in 1994, they immediately ceased development on all versions except for Windows. Microsoft "Visual SourceSafe 3.1", a Windows 16-bit-only, rebranded One Tree 3.0 version, was briefly available before Microsoft released a Version 4.0.
SourceSafe was initially not a client/server Source Code Management, but rather a local only SCM. Architecturally, this serves as both a strength and weakness of design, depending on the environment it is used in. It allows a single user system to be set up with less configuration than that of some other SCM systems. In addition, the process of backing up can be as simple as copying all of the contents of a single directory tree. For multi-user environments, however, it lacks many important features found in other SCM products, including support for atomic commits of multiple files (CVS has the same problem as it is built upon the original RCS). SourceSafe inherits its shared functionality using direct remote file system access to all the files in the repository. This, together with a bug where the code is using old memory after a call to reallocate, are contributing factors to why SS databases sometimes go bad.
Starting with VSS 2005, Microsoft has added a client-server mode. In this mode, clients do not need write access to a SMB share where they can potentially damage the SS database. Instead, files must be accessed through the VSS client tools - the VSS windows client, the VSS command-line tool, or some application that integrates with or emulates these client tools.
- Microsoft Dynamics :
Microsoft Dynamics is a line of enterprise resource planning (ERP) and customer relationship management (CRM) software applications. Microsoft Dynamics applications are delivered through a network of reselling partners who provide specialized services.
- Microsoft Dynamics AX (formerly Axapta)
- Microsoft Dynamics GP (formerly Great Plains Software)
- Microsoft Dynamics NAV (formerly Navision)
- Microsoft Dynamics SL (formerly Solomon IV)
- Microsoft Dynamics CRM is a customer relationship management application from Microsoft that provides sales, service, and marketing capabilities.
- Microsoft Dynamics CRM is sold as on-premises software or as a software as a service offering called Microsoft Dynamics CRM Online.
Microsoft Dynamics ERP is a family of enterprise resource planning products primarily geared toward midsize organizations as well as subsidiaries and divisions of larger organizations. Microsoft Dynamics ERP includes four primary products:
Microsoft Dynamics CRM
Operating system Windows Server 2003/2008 (Server), Microsoft Windows (Clients)
Available in Arabic, Basque, Bulgarian, Catalan, Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Hebrew, Hindi, Hungarian, Italian, Japanese, Kazakh, Korean, Latvian, Lithuanian, Norwegian (Bokmål), Polish, Portuguese (Brazil), Portuguese (Portugal), Romanian, Russian, Serbian (Latin), Slovak, Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian
Microsoft Dynamics CRM is a customer relationship management software package developed by Microsoft. Out of the box, the product focuses mainly on Sales, Marketing, and Service (help desk) sectors, but Microsoft has been marketing Dynamics CRM as an XRM platform and has been encouraging partners to use its proprietary (.NET based) framework to customize it to meet many different demands.
The Microsoft Dynamics family of business applications includes other related products such as Microsoft Dynamics AX (ERP application), Microsoft Dynamics GP, (ERP application) Microsoft Dynamics NAV (ERP application), and Microsoft Dynamics SL (ERP Application) and also Microsoft Dynamics Retail Management System; also known as Dynamics RMS.
Dynamics CRM is a server-client application, which, like Microsoft SharePoint, is primarily an IIS-based web application which also supports extensive web services interfaces. Clients access Dynamics CRM either by using Microsoft Internet Explorer 7 or later web browser or by a thick client plug-in to Microsoft Outlook. The most recent release added full support for the Chrome and Firefox browsers, and limited support for Safari.
The current version of Microsoft Dynamics CRM is 2011.
Microsoft Dynamics CRM 4.0
Microsoft Dynamics CRM comes in 4 versions for installation by a partner/customer; these versions can be highly customized using advanced extensions. The CRM Online version cannot be extensively customized because of security issues.
This edition is only allowed 5 CALs maximum, it is not possible to add more CALs. If more CALs are needed, an upgrade to Professional or Enterprise should be done. Also all the server roles are installed on 1 machine and cannot be separated. You can only create 1 organization in this version and the use of external connectors is not allowed. This version is ideal for small organizations that can use it with the SQL Server Workgroup Edition and on a Windows Small Business Server.
The Professional Edition has the same functionality as the Workgroup Edition except there is no limit on the CALs. If the installation profile calls for supporting either multiple organizations or servers, the Enterprise Edition is required.
Has the same functionality as the Professional Edition but without limits. This version is to be used when multiple divisions should be accessing CRM from one platform.
Service Provider Edition
This edition is actually an Enterprise Edition that is configured to accept Internal user requests from AD and external user requests through IFD (Internet Facing Deployment). This version is mostly implemented by Microsoft Partners that offer Hosted CRM functionality, when letting external users connect to this CRM version through the Internet.
Microsoft Dynamics CRM 2011
Microsoft Dynamics CRM 2011 is available as a cloud offering or an on-premises installation by a partner/customer. As in CRM 4 these versions can be highly customized using advanced extensions. New feature set includes
- Visualizations, Dashboards, Document Management, Grid Filters, Dialogs, Recurring Appointments, Custom Activities, Goal Management, Fetch based Reports, MAPI based Outlook clients, FLS etc.
- Native integration with SharePoint 2010
- Ability to create a query behind a look-up
- Placing of a grid with child records on the parent record
- Auto filter sorting capability like in Microsoft Office Excel
- Microsoft Office Ribbon interface replaces menus
- OData endpoints
- LINQ programming API in the SDK
- WCF services
- Customization can be packaged as solutions
- CRM Online supports plugins in sandboxed mode
- Multiple forms per entity
- Dashboard designer
- Yammer integration
- Lync integration
- Microsoft SharePoint :
Microsoft SharePoint is a Web application platform developed by Microsoft. First launched in 2001, SharePoint has historically been associated with intranet content management and document management, but recent versions have significantly broader capabilities.
SharePoint comprises a multipurpose set of Web technologies backed by a common technical infrastructure. By default, SharePoint has a Microsoft Office-like interface, and it is closely integrated with the Office suite. The web tools are designed to be usable by non-technical users. SharePoint can be used to provide intranet portals, document & file management, collaboration, social networks, extranets, websites, enterprise search, and business intelligence. It also has system integration, process integration, and workflow automation capabilities.
Enterprise application software (e.g. ERP or CRM packages) often provide some SharePoint integration capability, and SharePoint also incorporates a complete development stack based on web technologies and standards-based APIs. As an application platform, SharePoint provides central management, governance, and security controls for implementation of these requirements. The SharePoint platform integrates directly into IIS - enabling bulk management, scaling, and provisioning of servers, as is often required by large organizations or cloud hosting providers.
In 2008, the Gartner Group put SharePoint in the "leaders" quadrant in three of its Magic Quadrants (for search, portals, and enterprise content management). SharePoint is used by 78% of Fortune 500 companies. Between 2006 to 2011, Microsoft sold over 36.5 million user licenses. Microsoft has two versions of SharePoint available at no cost, but it sells premium editions with additional functionality, and provides a cloud service edition as part of their Office 365 platform (previously BPOS). The product is also sold through a cloud model by many third-party vendors.
The SharePoint wheel
Pawan Satope and Shailesh Patel(Sharepoint gurus) refers to the "SharePoint Wheel" to describe what SharePoint's tools can facilitate inside organizations. The wheel refers to six outcomes:
Sites: A site is a contextual work environment. Once SharePoint is configured, these sites can be created without any requirement for specialized knowledge. A context for a site may be organization-wide, or it may be specific to an individual team or group.
Communities: A community is a place where communication and understanding happens. Communities can occur around any context, and will typically develop around either shared knowledge, or shared activities (such as collaboration).
Content: SharePoint provides management of documents and work items that need to be stored, found, collaborated on, updated, managed, documented, archived, traced or restored - in accordance with relevant compliance or governance policies.
Search: Look for relevant communities, content, people, or sites: search is based on keywords, refinement, and content analysis.
Insights: Information from any part of the organization can be surfaced inside useful contexts, providing information that can improve effectiveness.
Composites: SharePoint enables no-code integration of data, documents and processes to provide composite applications ("mash-ups" based on internal data).
The most common uses of SharePoint include:
A SharePoint intranet portal is a way to centralize access to enterprise information and applications on a corporate network. It is a tool that helps a company manage its data, applications and information more easily. This has organizational benefits such as increased employee engagement, centralizing process management, reducing new staff on-boarding costs, and providing the means to capture and share tacit knowledge (e.g. via tools such as wikis/blogs).
Enterprise content and document management
SharePoint is often used to store and track electronic documents or images of paper documents. It is usually also capable of keeping track of the different versions created by different users. In addition to being a platform for digital record management systems that meet government and industry compliance standards, SharePoint also provides the benefit of a central location for storing and collaborating on documents, which can significantly reduce emails and duplicated work in an organization.
SharePoint can be used to provide password-protected, web-facing access to people outside an organization. Organizations often use functionality like this to integrate third parties into supply chain or business processes, or to provide a shared collaboration environment.
SharePoint provides an Alternative Access Mapping, or AAM, which allows the same 'site' to be surfaced via a number of different URLs, each URL can have its own authentication technology allowing the same site to be both an intranet on one network while an extranet to outside users.
Using the 'Publishing' features, SharePoint can be used to manage larger public websites.
Configuration and Customization
- SharePoint offers a fluent ribbon user-interface that should be familiar to users of Microsoft Office 2007 and later. This interface provides a general user interface for manipulating data, page editing ability, and the ability to add functionality to sites without difficulty.
- Manipulate content in lists & libraries, pages and sites.
- Copy, create, delete, or rename lists & libraries, pages, sites and web-parts
- Manage user permissions, and view document/page version histories
- Manage definitions and properties of lists & libraries, pages, sites and web-parts & many others
A SharePoint Site is a collection of pages, lists, and libraries configured for the purpose of achieving an express goal. A site may contain sub-sites, and those sites may contain further sub-sites. Typically, sites need to be created from scratch, but sites can also be created according to packaged functionality. Examples of Site templates in SharePoint include: blogs, collaboration (team) sites, documents, and meetings.
Sites have navigation, themes/branding, custom permissions, workflows, and have the ability to be configured or customized in a number of ways. In order to achieve a greater degree of maintainability, sites typically inherit site-level settings from their parent sites.
Lists & libraries
Lists and libraries are stored in SharePoint Sites. A List can be thought of as a collection of pieces of information - all of which (typically) have the same properties. This could be considered similar to a database table. For instance, you can have a list of links called "my links", where each item has a URL, a name, and a description.
Lists have many features such as workflows, item-level or list-level permission, version history tracking, multiple content-types, external data sources, and many more features. Some of these features depend on the version of SharePoint that is installed.
SharePoint supports the creation of multiple views of a list or library, including Gantt chart and calendar views. Views can define columns to show, rankings, aggregation and establish criteria for inclusion in the list. Views can be personal or distributed to a group of users.
From 2007 on, lists also support item (document or record) level security permissions, where each list item can have a unique permission level. This feature can cause problems in viewing large lists, and Microsoft recommends that for 2007 a list have no more than 1,000 unique permissions defined, and in 2010 that limit is 5,000.
A Library is a list where each item in the list refers to a file that is stored in SharePoint. Libraries have all the same behaviors as lists, but because libraries contain files, they have extra features. One of these is the ability to be opened and modified through a compatible WebDAV client (e.g. Windows Explorer).
Microsoft SharePoint comes with some pre-defined list and library definitions. These include: Announcement Lists, Blogs, Contacts, Discussion Boards, Document Libraries, External Content (BCS) lists, Pages, Surveys, and Tasks.
Some of these pre-defined lists have additional integration. For example, lists based on the contact content-type, and lists created using the calendar list template can be synced directly with Microsoft Outlook.
Web-parts are sections that can be inserted into Pages in SharePoint sites. These sections are UI Widgets whose typical uses are
- Displaying content defined in the web-part's settings (e.g. custom content or an iFrame)
- Displaying items from Lists/Libraries (this can be customizable in SharePoint Designer, using XSLT & CAML)
- Providing access to features in the SharePoint platform (e.g. Search)
- Providing a user interface into other products (e.g. Microsoft Reporting Services, Microsoft Office PerformancePoint Server or a variety of third party systems).
- Web-parts based on completely custom code can be built in Microsoft Visual Studio 2010 and uploaded by end-users to SharePoint as packaged,
- sandboxed features. Due to the prevalence of SharePoint, third-party vendors often provide SharePoint web-parts for intranet sites.
- Web-parts also support connections to other web-parts on the page, providing the ability to construct relatively complex pages without the need to build additional code.
- SharePoint Web-parts were formerly implemented separately from ASP.NET Web-parts, but as of SharePoint 2007, SharePoint's Web-parts are now based on it.
SharePoint has three primary page content-types: Wiki pages, Web-part pages, and Publishing Pages. Unlike prior versions of SharePoint, the default page type is a 'Wiki Page', which enables free-form editing based on the ribbon toolbar. It is possible to insert Web-parts into any page type.
SharePoint Foundation contains a limited search engine. Microsoft produces a free product called Microsoft Search Server Express to complement SharePoint Foundation. Different SharePoint search versions offer different features, including the ability to search within documents and - except in cloud environments - across external data sources (such as file systems). You can read a SharePoint Enterprise Search features deep comparison.
Compliance, standards and integration
- SharePoint integrates with Microsoft Office 2007 and 2010. "Microsoft Office SharePoint Server 2007" (MOSS 2007), the previous version of SharePoint, was considered part of the Microsoft Office Suite.
- SharePoint uses Microsoft's OpenXML document standard for integration with Microsoft Office. Document metadata is also stored using this format.
- SharePoint 2010 can be used to achieve compliance with many document retention, record management, document ID and discovery laws.
- SharePoint 2007 and 2010 are compatible with CMIS - the Content Management Interoperability Standard, using Microsoft's CMIS Connector.
- SharePoint 2010 by default produces valid XHTML 1.0 that is compliant with WCAG 2.0 AA accessibility standards.
- SharePoint 2010's server control output is primarily driven by XSLT and can be modified using the proprietary SharePoint Designer tool, or with any text editor.
- SharePoint 2010 can use claims-based authentication, relying on SAML tokens for security assertions. SharePoint provides an open authentication plugin model.
- SharePoint 2013 adds support for XLIFF to support the localization of content in SharePoint. Also added support for AppFabric.
The SharePoint platform is a flexible, n-tier service-oriented architecture (SOA). It can be scaled down to operate entirely from one machine, or scaled up to be managed across hundreds of machines.
A SharePoint farm is a logical grouping of SharePoint servers that share common resources. A farm will typically operate stand-alone, but it can also subscribe to functionality from another farm, or provide functionality to another farm. Each farm has its own central configuration database, which is managed through either a PowerShell interface, or a Central Administration website (which relies partially on PowerShell's infrastructure). Each server in the farm is able to directly interface with the central configuration database. Servers use this to configure services (e.g. IIS, windows features, database connections) to match the requirements of the farm, and to report server health issues, resource allocation issues, etc.
Web Applications (WAs) are top-level containers for content in a SharePoint farm, and are typically the interface through which a user interacts with SharePoint. A web application is associated with a set of access mappings or URLs which are defined in the SharePoint central management console, then automatically replicated into the IIS configuration of every server configured in the farm. WAs are typically independent of each other, have their own application pools, and can be restarted independently in Internet Information Services.
A site collection is used to provide a grouping of 'SharePoint Sites'. Each web application will typically have at least one site collection. Site collections may be associated with their own content databases, or they may share a content database with other site collections in the same web application.
Service Applications (SAs) provide granular pieces of SharePoint functionality to other web and service applications in the farm. Examples of service applications include the User Profile Sync service, and the Search Indexing service. An SA can be turned off, exist on one server, or be load-balanced across many servers in a farm. SAs are designed to be as independent as possible, so that - depending on the SA - restarting an SA, experiencing an SA failure, or misconfiguring an SA may not necessarily prevent the farm from operating. Each SA enabled on the farm typically has its own process that requires a certain amount of RAM to operate, and typically also has its own configuration database and Active Directory (AD) service account. SharePoint Server and SharePoint Enterprise include all the SharePoint Foundation SAs, as well as additional SAs.
Administration and security
The modular nature of SharePoint's architecture enables a secure 'least-privileges' execution permission best practice. SharePoint Central Administration (the CA) is a web application that typically exists on a single server in the farm, however it is also able to be deployed for redundancy to multiple servers. This application provides a complete centralized management interface for web & service applications in the SharePoint farm, including AD account management for web & service applications. In the event of the failure of the CA, Windows PowerShell is typically used on the CA server to reconfigure the farm.
The structure of the SharePoint platform enables multiple WAs to exist on a single farm. In a shared (cloud) hosting environment, owners of these WAs may require their own management console. The SharePoint 'Tenant Administration' (TA) is an optional web application used by web application owners to manage how their web application interacts with the shared resources in the farm.
A summary of the SharePoint versions can be found here.
Microsoft SharePoint Foundation
The underlying technology for all SharePoint sites. SharePoint Foundation is available for free on-premises deployment and was called Windows SharePoint Services in previous versions. You can use SharePoint Foundation to quickly create many types of sites where you can collaborate on Web pages, documents, lists, calendars, and data. It is dependent on various hardware/software requirements, including a proper license for Microsoft Windows Server. It contains all of the core functionality and architecture drawn on by the commercial versions of the package. Downloading SharePoint Foundation 2010 requires a mandatory registration, but this has beeen omitted for the 2013 version.
Microsoft Search Server Express
Microsoft's Search Server Express is a free, modified distribution of SharePoint 2010 Foundation. The installer for this package installs SharePoint 2010 Foundation, plus a limited subset of enterprise search features and enterprise document management features typically only found in paid versions of SharePoint.
- Microsoft SQL Server :
Microsoft SQL Server
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database, it is a software product whose primary function is to store and retrieve data as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). There are at least a dozen different editions of Microsoft SQL Server aimed at different audiences and for different workloads (ranging from small applications that store and retrieve data on the same computer, to millions of users and computers that access huge amounts of data from the Internet at the same time). Its primary query languages are T-SQL and ANSI SQL.
Microsoft makes SQL Server available in multiple editions, with different feature sets and targeting different users. These editions are Mainstream editions :
SQL Server 2008 R2 Datacenter is the full-featured edition of SQL Server and is designed for datacenters that need the high levels of application support and scalability. It supports 256 logical processors and virtually unlimited memory. Comes with StreamInsight Premium edition. The Datacenter edition has been retired in SQL Server 2012, all its features are available in SQL Server 2012 Enterprise Edition.
SQL Server Enterprise Edition includes both the core database engine and add-on services, with a range of tools for creating and managing a SQL Server cluster. It can manage databases as large as 524 petabytes and address 2 terabytes of memory and supports 8 physical processors. SQL 2012 Enterprise Edition supports 160 Physical Processors
SQL Server Standard edition includes the core database engine, along with the stand-alone services. It differs from Enterprise edition in that it supports fewer active instances (number of nodes in a cluster) and does not include some high-availability functions such as hot-add memory (allowing memory to be added while the server is still running), and parallel indexes.
WebSQL Server Web Edition is a low-TCO option for Web hosting. Business Intelligence
Introduced in SQL Server 2012 and focusing on Self Service and Corporate Business Intelligence. It includes the Standard Edition capabilities and Business Intelligence tools: PowerPivot, Power View, the BI Semantic Model, Master Data Services, Data Quality Services and xVelocity in-memory analytics.
SQL Server Workgroup Edition includes the core database functionality but does not include the additional services. Note that this edition has been retired in SQL Server 2012.
SQL Server Express Edition is a scaled down, free edition of SQL Server, which includes the core database engine. While there are no limitations on the number of databases or users supported, it is limited to using one processor, 1 GB memory and 4 GB database files (10 GB database files from SQL Server Express 2008 R2). It is intended as a replacement for MSDE. Two additional editions provide a superset of features not in the original Express Edition. The first is SQL Server Express with Tools, which includes SQL Server Management Studio Basic. SQL Server Express with Advanced Services adds full-text search capability and reporting services.
The protocol layer implements the external interface to SQL Server. All operations that can be invoked on SQL Server are communicated to it via a Microsoft-defined format, called Tabular Data Stream (TDS). TDS is an application layer protocol, used to transfer data between a database server and a client. Initially designed and developed by Sybase Inc. for their Sybase SQL Server relational database engine in 1984, and later by Microsoft in Microsoft SQL Server, TDS packets can be encased in other physical transport dependent protocols, including TCP/IP, Named pipes, and Shared memory. Consequently, access to SQL Server is available over these protocols. In addition, the SQL Server API is also exposed over web services.
Data storage is a database, which is a collection of tables with typed columns. SQL Server supports different data types, including primary types such as Integer, Float, Decimal, Char (including character strings), Varchar (variable length character strings), binary (for unstructured blobs of data), Text (for textual data) among others. The rounding of floats to integers uses either Symmetric Arithmetic Rounding or Symmetric Round Down (Fix) depending on arguments: SELECT Round(2.5, 0) gives 3.
Microsoft SQL Server also allows user-defined composite types (UDTs) to be defined and used. It also makes server statistics available as virtual tables and views (called Dynamic Management Views or DMVs). In addition to tables, a database can also contain other objects including views, stored procedures, indexes and constraints, along with a transaction log. A SQL Server database can contain a maximum of 231 objects, and can span multiple OS-level files with a maximum file size of 260 bytes. The data in the database are stored in primary data files with an extension .mdf. Secondary data files, identified with a .ndf extension, are used to store optional metadata. Log files are identified with the .ldf extension.
Storage space allocated to a database is divided into sequentially numbered pages, each 8 KB in size. A page is the basic unit of I/O for SQL Server operations. A page is marked with a 96-byte header which stores metadata about the page including the page number, page type, free space on the page and the ID of the object that owns it. Page type defines the data contained in the page - data stored in the database, index, allocation map which holds information about how pages are allocated to tables and indexes, change map which holds information about the changes made to other pages since last backup or logging, or contain large data types such as image or text. While page is the basic unit of an I/O operation, space is actually managed in terms of an extent which consists of 8 pages. A database object can either span all 8 pages in an extent ("uniform extent") or share an extent with up to 7 more objects ("mixed extent"). A row in a database table cannot span more than one page, so is limited to 8 KB in size. However, if the data exceeds 8 KB and the row contains Varchar or Varbinary data, the data in those columns are moved to a new page (or possibly a sequence of pages, called an Allocation unit) and replaced with a pointer to the data.
For physical storage of a table, its rows are divided into a series of partitions (numbered 1 to n). The partition size is user defined; by default all rows are in a single partition. A table is split into multiple partitions in order to spread a database over a cluster. Rows in each partition are stored in either B-tree or heap structure. If the table has an associated index to allow fast retrieval of rows, the rows are stored in-order according to their index values, with a B-tree providing the index. The data is in the leaf node of the leaves, and other nodes storing the index values for the leaf data reachable from the respective nodes. If the index is non-clustered, the rows are not sorted according to the index keys. An indexed view has the same storage structure as an indexed table. A table without an index is stored in an unordered heap structure. Both heaps and B-trees can span multiple allocation units.
SQL Server buffers pages in RAM to minimize disc I/O. Any 8 KB page can be buffered in-memory, and the set of all pages currently buffered is called the buffer cache. The amount of memory available to SQL Server decides how many pages will be cached in memory. The buffer cache is managed by the Buffer Manager. Either reading from or writing to any page copies it to the buffer cache. Subsequent reads or writes are redirected to the in-memory copy, rather than the on-disc version. The page is updated on the disc by the Buffer Manager only if the in-memory cache has not been referenced for some time. While writing pages back to disc, asynchronous I/O is used whereby the I/O operation is done in a background thread so that other operations do not have to wait for the I/O operation to complete. Each page is written along with its checksum when it is written. When reading the page back, its checksum is computed again and matched with the stored version to ensure the page has not been damaged or tampered with in the meantime.
Concurrency and locking
SQL Server allows multiple clients to use the same database concurrently. As such, it needs to control concurrent access to shared data, to ensure data integrity when multiple clients update the same data, or clients attempt to read data that is in the process of being changed by another client. SQL Server provides two modes of concurrency control: pessimistic concurrency and optimistic concurrency. When pessimistic concurrency control is being used, SQL Server controls concurrent access by using locks. Locks can be either shared or exclusive. Exclusive lock grants the user exclusive access to the data - no other user can access the data as long as the lock is held. Shared locks are used when some data is being read - multiple users can read from data locked with a shared lock, but not acquire an exclusive lock. The latter would have to wait for all shared locks to be released. Locks can be applied on different levels of granularity on entire tables, pages, or even on a per-row basis on tables. For indexes, it can either be on the entire index or on index leaves. The level of granularity to be used is defined on a per-database basis by the database administrator. While a fine grained locking system allows more users to use the table or index simultaneously, it requires more resources. So it does not automatically turn into higher performing solution. SQL Server also includes two more lightweight mutual exclusion solutions latches and spinlocks which are less robust than locks but are less resource intensive. SQL Server uses them for DMVs and other resources that are usually not busy. SQL Server also monitors all worker threads that acquire locks to ensure that they do not end up in deadlocks in case they do, SQL Server takes remedial measures, which in many cases is to kill one of the threads entangled in a deadlock and rollback the transaction it started. To implement locking, SQL Server contains the Lock Manager. The Lock Manager maintains an in-memory table that manages the database objects and locks, if any, on them along with other metadata about the lock. Access to any shared object is mediated by the lock manager, which either grants access to the resource or blocks it.
SQL Server also provides the optimistic concurrency control mechanism, which is similar to the multiversion concurrency control used in other databases. The mechanism allows a new version of a row to be created whenever the row is updated, as opposed to overwriting the row, i.e., a row is additionally identified by the ID of the transaction that created the version of the row. Both the old as well as the new versions of the row are stored and maintained, though the old versions are moved out of the database into a system database identified as Tempdb. When a row is in the process of being updated, any other requests are not blocked (unlike locking) but are executed on the older version of the row. If the other request is an update statement, it will result in two different versions of the rows both of them will be stored by the database, identified by their respective transaction IDs.
The main mode of retrieving data from an SQL Server database is querying for it. The query is expressed using a variant of SQL called T-SQL, a dialect Microsoft SQL Server shares with Sybase SQL Server due to its legacy. The query declaratively specifies what is to be retrieved. It is processed by the query processor, which figures out the sequence of steps that will be necessary to retrieve the requested data. The sequence of actions necessary to execute a query is called a query plan. There might be multiple ways to process the same query. For example, for a query that contains a join statement and a select statement, executing join on both the tables and then executing select on the results would give the same result as selecting from each table and then executing the join, but result in different execution plans. In such case, SQL Server chooses the plan that is expected to yield the results in the shortest possible time. This is called query optimization and is performed by the query processor itself.
SQL Server includes a cost-based query optimizer which tries to optimize on the cost, in terms of the resources it will take to execute the query. Given a query, then the query optimizer looks at the database schema, the database statistics and the system load at that time. It then decides which sequence to access the tables referred in the query, which sequence to execute the operations and what access method to be used to access the tables. For example, if the table has an associated index, whether the index should be used or not - if the index is on a column which is not unique for most of the columns (low "selectivity"), it might not be worthwhile to use the index to access the data. Finally, it decides whether to execute the query concurrently or not. While a concurrent execution is more costly in terms of total processor time, because the execution is actually split to different processors might mean it will execute faster. Once a query plan is generated for a query, it is temporarily cached. For further invocations of the same query, the cached plan is used. Unused plans are discarded after some time.
SQL Server also allows stored procedures to be defined. Stored procedures are parameterized T-SQL queries, that are stored in the server itself (and not issued by the client application as is the case with general queries). Stored procedures can accept values sent by the client as input parameters, and send back results as output parameters. They can call defined functions, and other stored procedures, including the same stored procedure (up to a set number of times). They can be selectively provided access to. Unlike other queries, stored procedures have an associated name, which is used at runtime to resolve into the actual queries. Also because the code need not be sent from the client every time (as it can be accessed by name), it reduces network traffic and somewhat improves performance. Execution plans for stored procedures are also cached as necessary.
Microsoft SQL Server 2005 includes a component named SQL CLR ("Common Language Runtime") via which it integrates with .NET Framework. Unlike most other applications that use .NET Framework, SQL Server itself hosts the .NET Framework runtime, i.e., memory, threading and resource management requirements of .NET Framework are satisfied by SQLOS itself, rather than the underlying Windows operating system. SQLOS provides deadlock detection and resolution services for .NET code as well. With SQL CLR, stored procedures and triggers can be written in any managed .NET language, including C# and VB.NET. Managed code can also be used to define UDT's (user defined types), which can persist in the database. Managed code is compiled to CLI assemblies and after being verified for type safety, registered at the database. After that, they can be invoked like any other procedure. However, only a subset of the Base Class Library is available, when running code under SQL CLR. Most APIs relating to user interface functionality are not available.
When writing code for SQL CLR, data stored in SQL Server databases can be accessed using the ADO.NET APIs like any other managed application that accesses SQL Server data. However, doing that creates a new database session, different from the one in which the code is executing. To avoid this, SQL Server provides some enhancements to the ADO.NET provider that allows the connection to be redirected to the same session which already hosts the running code. Such connections are called context connections and are set by setting context connection parameter to true in the connection string. SQL Server also provides several other enhancements to the ADO.NET API, including classes to work with tabular data or a single row of data as well as classes to work with internal metadata about the data stored in the database. It also provides access to the XML features in SQL Server, including XQuery support. These enhancements are also available in T-SQL Procedures in consequence of the introduction of the new XML Datatype (query,value,nodes functions).
- Visual Basic for Applications :
Visual Basic for Applications
Visual Basic for Applications (VBA) is an implementation of Microsoft's event-driven programming language Visual Basic 6 and its associated integrated development environment (IDE).
Visual Basic for Applications enables building user defined functions, automating processes and accessing Windows API and other low-level functionality through dynamic-link libraries (DLLs). It supersedes and expands on the abilities of earlier application-specific macro programming languages such as Word's WordBasic. It can be used to control many aspects of the host application, including manipulating user interface features, such as menus and toolbars, and working with custom user forms or dialog boxes.
As its name suggests, VBA is closely related to Visual Basic and uses the Visual Basic Runtime Library, but it can normally only run code within a host application rather than as a standalone program. It can, however, be used to control one application from another via OLE Automation. For example, it is used to automatically create a Word report from Excel data, which are automatically collected by Excel from polled observation sensors. VBA has the ability to use (but not create) (ActiveX/COM) DLLs, and later versions add support for class modules.
VBA is built into most Microsoft Office applications, including Office for Mac OS X (apart from version 2008) and other Microsoft applications such as Microsoft MapPoint and Microsoft Visio, as well as being at least partially implemented in other applications such as AutoCAD, WordPerfect and ArcGIS.
Code written in VBA is compiled to a proprietary intermediate language called P-code (packed code), which the hosting applications (Access, Excel, Word, Outlook, and PowerPoint) store as a separate stream in COM Structured Storage files (e.g., .doc or .xls) independent of the document streams. The intermediate code is then executed by a virtual machine (hosted by the hosting application). Despite its resemblance to many old BASIC dialects (particularly Microsoft BASIC, from which it is indirectly derived), VBA is incompatible with any of them except Visual Basic, where source-code of VBA modules and classes can be directly imported, and which shares the same library and virtual machine. Compatibility ends with Visual Basic version 6, VBA is incompatible with Visual Basic .NET (VB.NET). VBA is proprietary to Microsoft and, apart from the COM interface, is not an open standard.
Interaction with the host application uses OLE Automation. Typically, the host application provides a type library and application programming interface (API) documentation which document how VBA programs can interact with the application. This documentation can be examined from inside the VBA development environment using its Object Browser.
Visual Basic for Applications programs which are written to use the OLE Automation interface of one application cannot be used to automate a different application, even if that application hosts the Visual Basic runtime, because the OLE Automation interfaces will be different. For example, a VBA program written to automate Microsoft Word cannot be used with a different word processor, even if that word processor hosts VBA.
Conversely, multiple applications can be automated from the one host by creating Application objects within the VBA code. References to the different libraries must be created within the VBA client before any of the methods, objects, etc. become available to use in the application. These application objects create the OLE link to the application when they are first created. Commands to the different applications must be done explicitly through these application objects in order to work correctly.
VBA code written in Microsoft Access can establish references to the Excel, Word and Outlook libraries; this will allow creating an application that runs a query in Access, exports the results to Excel, formats the text, then writes a mail merge document in Word that it automatically e-mails to each member of the original query through Outlook.
VBA programs can be attached to a menu button, a macro, a keyboard shortcut, or an OLE/COM event, such as the opening of a document in the application. The language provides a user interface in the form of UserForms, which can host ActiveX controls for added functionality.
- RIA Applications
- WOA Architecture
- Content Writing
- Php Solutions
- Lamp Solutions
- Dotnet Solutions
- J2ee Solutions
- Portal Solutions
- Joomla - Mvc
- Struts 1.3
- Struts 2.0
- Java Server Faces
- Spring Mvc
- Spring Webflow
- Ruby on Rails
- Moo Tools
- Adobe Flex
- Yahoo! User Interface Library (YUI)
- GWT (Googel Web Toolkit)
- SEO Optimization
- SEO Branding
- SEO Consulting
- PPC (Pay Per Click )
- SMS Service
- Web Hosting
A solid working knowledge of productivity software and other IT tools has become a basic foundation for success in virtually any career. Beyond that, however, I don't think you can overemphasise the importance of having a good background in maths and science.....
"Every software system needs to have a simple yet powerful organizational philosophy (think of it as the software equivalent of a sound bite that describes the system's architecture)... A step in thr development process is to articulate this architectural framework, so that we might have a stable foundation upon which to evolve the system's function points. "
"All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change"
"The ultimate measurement is effectiveness, not efficiency "
"It is argued that software architecture is an effective tool to cut development cost and time and to increase the quality of a system. "Architecture-centric methods and agile approaches." Agile Processes in Software Engineering and Extreme Programming.
"Java is C++ without the guns, knives, and clubs "
"When done well, software is invisible"
"Our words are built on the objects of our experience. They have acquired their effectiveness by adapting themselves to the occurrences of our everyday world."
"I always knew that one day Smalltalk would replace Java. I just didn't know it would be called Ruby. "
"The best way to predict the future is to invent it."
"In 30 years Lisp will likely be ahead of C++/Java (but behind something else)"
"Possibly the only real object-oriented system in working order. (About Internet)"
"Simple things should be simple, complex things should be possible. "
"Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines."
"Model Driven Architecture is a style of enterprise application development and integration, based on using automated tools to build system independent models and transform them into efficient implementations. "
"The Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs. "
"Software Engineering Economics is an invaluable guide to determining software costs, applying the fundamental concepts of microeconomics to software engineering, and utilizing economic analysis in software engineering decision making. "
"Ultimately, discovery and invention are both problems of classification, and classification is fundamentally a problem of finding sameness. When we classify, we seek to group things that have a common structure or exhibit a common behavior. "
"Perhaps the greatest strength of an object-oriented approach to development is that it offers a mechanism that captures a model of the real world. "
"The entire history of software engineering is that of the rise in levels of abstraction. "
"The amateur software engineer is always in search of magic, some sensational method or tool whose application promises to render software development trivial. It is the mark of the professional software engineer to know that no such panacea exist "
Core Values ?Agile And Scrum Based Architecture
Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration.....more
Core Values ?Total quality management
Total Quality Management / TQM is an integrative philosophy of management for continuously improving the quality of products and processes. TQM is based on the premise that the quality of products and .....more
Core Values ?Design that Matters
We are more than code junkies. We're a company that cares how a product works and what it says to its users. There is no reason why your custom software should be difficult to understand.....more
Core Values ?Expertise that is Second to None
With extensive software development experience, our development team is up for any challenge within the Great Plains development environment. our Research works on IEEE international papers are consider....more
Core Values ?Solutions that Deliver Results
We have a proven track record of developing and delivering solutions that have resulted in reduced costs, time savings, and increased efficiency. Our clients are very much ....more
Core Values ?Relentless Software Testing
We simply dont release anything that isnt tested well. Tell us something cant be tested under automation, and we will go prove it can be. We create tests before we write the complementary production software......more
Core Values ?Unparalled Technical Support
If a customer needs technical support for one of our products, no-one can do it better than us. Our offices are open from 9am until 9pm Monday to Friday, and soon to be 24hours. Unlike many companies, you are able to....more
Core Values ?Impressive Results
We have a reputation for process genius, fanatical testing, high quality, and software joy. Whatever your business, our methods will work well in your field. We have done work in Erp Solutions ,e-commerce, Portal Solutions,IEEE Research....more
Why Choose Us ?
The intellectual commitment of our development team is central to the leonsoft ability to achieve its mission: to develop principled, innovative thought leaders in global communities.Read More
Today's most successful enterprise applications were once nothing more than an idea in someone's head. While many of these applications are planned and budgeted from the beginning.Read More
We constantly strive to redefine the standard of excellence in everything we do. We encourage both individuals and teams to constantly strive for developing innovative technologies....Read More
If our customers are the foundation of our business, then integrity is the cornerstone. Everything we do is guided by what is right. We live by the highest ethical standards.....Read More