Technologies .NET Framework and Mono

Lecture



The .NET Framework is a software platform, a mobile binary environment released by Microsoft in 2002 and allowing compiled applications to work on any hardware platform in a Windows environment. The platform is based on the Common Language Runtime (CLR) executable (binary) environment, which can execute both regular programs and server-side web applications. NET Framework supports the creation of programs written in different programming languages.

It is believed that the .NET Framework was Microsoft’s response to the highly popular Java platform by Sun Microsystems (now owned by Oracle).

Although .NET is a proprietary technology of Microsoft and is officially designed to work under the operating systems of the Microsoft Windows family, there are independent projects (first of all, Mono and Portable.NET) that allow you to run .NET programs on many other operating systems.

The development of the platform began in 1999. On January 13, 2000, a new company strategy was announced, called Next Generation Windows Services (abbr. NGWS, Russian. New Generation of Windows Services). The new strategy was to combine into a single set the existing and future development of Microsoft to enable users to work with the World Wide Web from wireless devices with Internet access, like from desktops. It was stated that despite the enormous capabilities of home computers, the corporation considers it important to ensure the work of the new generation services on devices other than PCs, that is, netbooks that rely on server support.

Due to the low power of mobile device power sources, applications should be stored and transmitted by servers, whereas at that time almost all user information and software was stored on stationary computers locally. Then the idea of ​​moving to a “server-centric” model had strong support among the leaders of the largest IT-companies, as it promised to provide binding, the end-user dependency on the server.

Microsoft at that time had many reasons for the transition to a new strategy. The company dominated the market of operating systems and web browsers, had a lot of experience in the field of software for the Internet, including portals MSN and WebTV, and also had a share in the companies engaged in the provision of software for rent through the Internet. In addition, the corporation had many different (and often incompatible) environments and programming technologies, since the development of tools for programmers was language-oriented, that is, Visual Basic had its own set of applications, and for C ++ it had its own. Therefore, one of the goals of developing a new platform was the unification of all the most successful developments within a single platform and their unification.

In addition, the task was to follow all current trends in the field of programming at that time. For example, the new platform had to directly support object orientation, type safety, garbage collection, and structural exception handling. In addition, the corporation needed to provide its response to Sun’s increasingly popular Java platform.

According to the plans announced at that time, they included the development of a new version of the operating system, as well as a new version of the development environment for programmers, which would be used to develop web-based applications. In addition, Microsoft Office was supposed to be transferred to the new platform. An example of new services introduced by Microsoft is Passport, an electronic wallet that allows users to register once to make online purchases without having to enter credit card numbers and personal data on various websites.

The basis for the company's new strategy was the development of Windows DNA 2000, introduced in September 1999. Windows DNA 2000 has combined a new version of SQL Server DBMS and new software tools to facilitate the development of web applications.

The first step to the new version of the platform was Windows 2000, which was one of the parts of the Windows Distributed interNet Applications (DNA) 2000 technology, under which the latest three-level programming model scheme, first introduced on Windows NT 4.0, was introduced.

At that time, the scheme consisted of the client side (Windows or web application), a middle level based on COM + components, and a database (usually SQL Server. NGWS had to change the way Windows developed to exclusively use XML as the exchange standard XML was chosen because it was the development of the HTML markup language, which became the main markup language on the World Wide Web, and it also provided a convenient way to describe the data. In the NGWS model, each part of the three-part structure (client application, intermediate oh and database) should interact with the other by means of XML-packets. In order to simplify code development using XML it assumed that the new version of Visual Studio will generate XML-code, freeing developers from having to manually write a XML-code.

For example, it was planned that developers would be able to write an e-commerce website entirely on the new version of Visual Basic, and thanks to the fact that information will be exchanged using XML, developers will be able to create client applications running on Linux, Solaris and Mac OS. . That is, in order for an application or an operating system to interact with each other, it was only necessary to support the standard on their part.

To demonstrate its intention, Microsoft launched the Passport website, by accessing which, the user could get an electronic wallet for free (eWallet), which simplified the process of shopping in online stores.

After six months, Microsoft renamed the platform Microsoft.Net, declaring that “the corporation’s strategy will be entirely determined by the .Net platform,” and all Microsoft products will eventually be rewritten to support this platform. In addition to this, the server applications, such as Microsoft SQL Server, Exchange, BizTalk, should have been affected, and the office suite Microsoft Office had to be converted to Office.Net.

By this time, the publication of a document called Microsoft .NET: Realizing the Next Generation Internet (Microsoft .NET: Creating the next generation Internet) on the official Microsoft website was timed. It gave a general overview of the new platform, and the very emergence of a new platform was described as a kind of “revolution”. This document was the first to describe (albeit briefly) the technical implementation of the platform. So, developers were encouraged to assemble their applications from ready-made blocks instead of manually typing a large mass of code, which should have accelerated software development. Such “building blocks” included, in particular, the following modules:

Identity is a technology that combines Windows authentication and Microsoft Passport, created to provide various levels of security, ranging from passwords and e-wallets to smart cards and biometric identification devices.

On November 12, 2000, Microsoft published on its .NET Framework SDK Beta 1 site, containing everything needed for the first experiments with the new platform. However, due to the “dampness” of the program, the company recommended installing it only on computers intended solely for tests. This SDK could only work in Windows 2000, Windows NT 4.0 (containing NTOP to support ASP.NET), Windows 98 and Windows ME, and stable work with SQL Server 2000 that was released shortly before was not guaranteed at all. This version contained a huge number of errors, starting with installation problems and ending with incomplete support for your own namespace, depending on the version of Windows.

The main idea in developing the .NET Framework was to ensure developer freedom by allowing it to create applications of various types that can run on various types of devices and in different environments.

The second principle was targeting systems running the Microsoft Windows operating system family.

.NET architecture

A program for the .NET Framework, written in any supported programming language, is first translated by the compiler into the common .NET intermediate byte code for the Common Intermediate Language (CIL) (previously called Microsoft Intermediate Language, MSIL). In terms of .NET, an assembly is obtained, English. assembly. Then the code is either executed by the CLR virtual machine, or translated by the NGen.exe utility into the executable code for a specific target processor. Using a virtual machine is preferable, as it saves developers from having to take care of the hardware features. In the case of using the CLR virtual machine, the JIT compiler built into it “just in time” converts the intermediate byte-code into the machine codes of the required processor. Modern dynamic compilation technology allows you to achieve a high level of performance. The CLR virtual machine also takes care of basic security, memory management, and an exception system, saving the developer from some of the work.

The .NET Framework architecture is described and published in the Common Language Infrastructure (CLI) specification developed by Microsoft and approved by ISO and ECMA. The CLI describes the .NET data types, the metadata format about the program structure, the bytecode execution system, and more.

Object classes .NET, available for all supported programming languages, are contained in the Framework Framework Class Library (FCL). FCL includes Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation, and others. The FCL core is called the Base Class Library (BCL).

Development environments

Development environments that support .NET:

  • Microsoft Visual Studio (C #, Visual Basic .NET, Managed C ++, F #)
  • SharpDevelop
  • MonoDevelop
  • Embarcadero RAD Studio (Delphi for .NET); earlier Borland Developer Studio (Delphi for .NET, C #)
  • Zonnon
  • PascalABC.NET

.NET applications can also be developed in a text editor by simply invoking the compiler from the command line.

Version History .NET Framework

Microsoft began developing the .NET Framework in 1999 as “Next Generation Windows Services” (NGWS). In 2000, the first beta version of .NET 1.0 was released.

Version

Version number

release date

Visual studio

Default on Windows

1.0

1.0.3705.0

May 1, 2002

Visual Studio .NET

1.1

1.1.4322.573

April 1, 2003

Visual Studio .NET 2003

Windows Server 2003

2.0

2.0.50727.42

July 11, 2005

Visual Studio 2005

3.0

3.0.4506.30

November 6, 2006

Visual Studio 2005 + Extensions

Windows Vista, Windows Server 2008

3.5

3.5.21022.8

November 9, 2007

Visual Studio 2008

Windows 7, Windows Server 2008 R2

4.0

4.0.30319.1

April 12, 2010

Visual studio 2010

  Technologies .NET Framework and Mono

Genealogical development of technologies. NET Framework

.NET Framework 1.0

The first release of the .NET Framework was released on January 5, 2002 for Windows 98, NT 4.0, 2000 and XP. General support provided by Microsoft ended July 10, 2007, and extended support ended July 14, 2009.

.NET Framework 1.1

The next release of the .NET Framework was released on April 1, 2003 . It was the first version automatically installed with the operating system (Windows Server 2003). For older operating systems, the .NET Framework 1.1 was available as a separate installation package. General support provided by Microsoft ended on October 14, 2008, and extended support will end on October 8, 2013.

.NET Framework 2.0

Version 2.0 was released simultaneously with Visual Studio 2005 , SQL Server 2005 and BizTalk 2006. With the release of version 2.0, support for custom (generic, source, generic) classes, anonymous methods, full support for x64 and IA-64 64-bit platforms was added.

.NET Framework 3.0

The .NET Framework 3.0 version, released in 2006 , was originally named WinFX, which reflected its essence: the .NET Framework 2.0 extension, while preserving all the libraries and adding four new components:

  • Windows Presentation Foundation (WPF) is a presentation graphics engine using XAML
  • Windows Communication Foundation (WCF)
  • Windows Workflow Foundation (WF)
  • Windows CardSpace

.NET Framework 3.5

Released in November 2007 , .NET 3.5, like version 3.0, uses CLR version 2.0. Innovations compared to the .NET Framework 3.0 include:

C # 3.0 and VB.NET 9.0

LINQ language and LINQ to Objects, LINQ to XML and LINQ to SQL providers added

ASP.NET AJAX included.

Expanded WF and WCF functionality.

Added namespace System.CodeDom.

.NET Framework 4.0

Microsoft announced .NET 4.0 on September 29, 2008. The first beta version appeared on May 20, 2009 , along with the beta version of Visual Studio 2010. The innovations include:

  • Parallel Extensions - PLINQ (Parallel LINQ) and Parallel Library (Task Parallel Library), designed to simplify programming for multiprocessor and distributed systems;
  • Innovations in Visual Basic and C #;
  • Technology Managed Extensibility Framework (MEF);
  • Full support for IronPython, IronRuby and F #;
  • Support for the .NET Framework and ASP.NET subsets in the “Server Core” version;
  • Code Contracts support;
  • Oslo modeling tools and M programming language for creating domain-specific languages ​​and models

The final version of the .NET Framework 4.0 was released on April 12, 2010 along with the final version of Visual Studio 2010.

Programming Languages ​​in .NET

One of the main ideas of Microsoft .NET is the compatibility of software parts written in different languages. For example, a service written in C ++ for Microsoft .NET may refer to a class method from a library written in Delphi; in C #, you can write a class inherited from a class written in Visual Basic .NET, and an exception created by a method written in C # can be intercepted and processed in Delphi. Each library (assembly) in .NET has information about its version, which allows to eliminate possible conflicts between different versions of assemblies.

Languages ​​shipped with Microsoft Visual Studio

C #

J # - was last included in Visual Studio 2005

VB7 (.NET)

JScript .NET

C ++ / CLI - new version of Managed C ++

F # is a member of the ML programming language family, included in Visual Studio 2010

Non-built, but actively supported languages.

Supportive .NET is not active.

Ada - see A #

APL

Boo, based on Python

COBOL

Component Pascal (closer to Oberon than to Pascal)

Delphi: Delphi 8, Delphi 2005—2010, Delphi XE

Eiffel

Fororth

FORTRAN

Haskell

IronRuby - an implementation of the Ruby language

IronPython - an implementation of the Python language

Lexico

Lisp

Mercury

Monondrian

Nemerle is a hybrid functional / imperative language

Oberon for .NET (ETH) - minor extensions for .NET. Project suspended.

Oxygene

Perl

Php

PascalABC.NET

Prolog

RPG

Smalltalk

Zonnon - fully integrated into Visual Studio

Criticism of the implementation of Microsoft .NET Framework technology

The implementation of the .NET Framework caused and raises many complaints. One of the main objects of criticism is less rational use of system resources in comparison with other technologies. For example, several applications running in a managed environment tend to capture more resources than applications of the same type, but with more direct access to computer resources.

Developer dissatisfaction is also caused by the fact that a managed CIL bytecode, which has not undergone obfuscation, can easily be decompiled compared to natural code. Such a vulnerability can lead to loss of trade secrets or provide an opportunity to bypass the mechanisms for monitoring compliance with licensing agreements.

New versions of the platform (3.5 and further) caused a new wave of discontent with the fact that they are not pre-installed in the version of Windows that preceded the release of Windows 7, which forces users to spend considerable time installing them.

From a technical point of view, the platform has also been criticized for the lack of support for Streaming SIMD Extensions (SSE) calls in managed code. True, Mono solved this problem by adding support for SIMD Extensions version 2.2 in the Mono.Simd namespace. Another criticism is the support of standards that actually limit the cross-platform implementation of the .NET Framework, with the result that a full-fledged implementation of the platform is present only for Windows . Partially, the lack of mobility is compensated by the development of several versions of the platform for mobile devices, as well as trimmed versions of the .NET Framework for other operating systems. However, despite the proximity of the standards adopted in the development of these versions, final implementations do not have full compatibility.

Mono project

Mono is a project to create a full-fledged implementation of the .NET Framework system based on free software. The main developer of the Mono project is Xamarin, formerly Novell. After the conclusion of Microsoft's agreement with Novell, the Mono platform was officially recognized as the implementation of .NET on Unix-like operating systems: Linux, Mac OS X, and others. (Although Mono successfully works under Microsoft Windows). However, the agreement applies only to Novell and Novell clients; Also, ASP.NET, ADO.NET and Windows Forms technologies have not been standardized by ECMA / ISO, and their use in Mono is under threat of legal claims from Microsoft (claims are possible only in countries with software patents). Mono provides an implementation of ASP.NET, ADO.NET and Windows.Forms, but at the same time recommends not using these APIs.

The project is headed by Miguel de Icaza, a well-known developer, founder of the GNOME project. Mono implementations exist for the following operating systems:

  • Microsoft Windows
  • Linux, BSD (FreeBSD, OpenBSD, NetBSD),
  • Solaris
  • Mac OS X,
  • Apple iOS,
  • Wii.

Platforms supported:

  • s390
  • SPARC,
  • PowerPC,
  • x86 / x86-64
  • IA64,
  • ARM,
  • Alpha,
  • Mips
  • HPPA

Comments


To leave a comment
If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Programming Languages and Methods / Translation Theory

Terms: Programming Languages and Methods / Translation Theory