Bi-monthly news update from IsDB-BISEW IT Scholarship Programme (March 2021)

Empower

Welcome to the March 2021 issue of Empower, the periodic newsletter of the IsDB-BISEW IT Scholarship Programme. This edition includes the following topics of note:

  • An overview of the Microsoft .NET Platform
  • Career Hub – The online placement platform of the IT Scholarship Programme

An overview of the Microsoft .NET Platform

The core part of the training course Enterprise Systems Analysis & Design with C#.NET, .NET is a free, open-source development platform for building many kinds of apps, such as:

Cross-platform

You can create .NET apps for many operating systems, including:

  • Windows
  • macOS
  • Linux
  • Android
  • iOS
  • tvOS
  • watchOS

Supported processor architectures include:

  • x64
  • x86
  • ARM32
  • ARM64

.NET lets you use platform-specific capabilities, such as operating system APIs. Examples are Windows Forms and WPF on Windows and the native bindings to each mobile platform from Xamarin.

Open-source

.NET is open source, using MIT and Apache 2 licenses. .NET is a project of the .NET Foundation.

Support

.NET is supported by Microsoft on Windows, macOS, and Linux. It's updated regularly for security and quality, on the second Tuesday of each month.

.NET binary distributions from Microsoft are built and tested on Microsoft-maintained servers in Azure and follow Microsoft engineering and security practices.

Red Hat supports .NET on Red Hat Enterprise Linux (RHEL). Red Hat and Microsoft collaborate to ensure that .NET Core works well on RHEL.

Tizen supports .NET on Tizen platforms.

Tools and productivity

.NET gives you a choice of languages, integrated development environments (IDEs), and other tools.

Programming languages

.NET supports three programming languages:

C# (pronounced "See Sharp") is a modern, object-oriented, and type-safe programming language. C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.

The F# language supports functional, object-oriented, and imperative programming models.

Among the .NET languages, the syntax of Visual Basic is the closest to ordinary human language, which can make it easier to learn. Unlike C# and F#, for which Microsoft is actively developing new features, the Visual Basic language is stable. Visual Basic isn't supported for web apps, but it is supported for web APIs.

IDEs

Visual Studio

The integrated development environments for .NET include:

Runs on Windows only. Has extensive built-in functionality designed to work with .NET. The Community edition is free for students, open-source contributors, and individuals.

Runs on Windows, macOS, and Linux. Free and open source. Extensions are available for working with .NET languages.

Runs on macOS only. For developing .NET apps and games for iOS, Android, and web.

An online Visual Studio Code environment, currently in beta.

SDK and runtimes

The .NET SDK is a set of libraries and tools for developing and running .NET applications.

When you download .NET, you can choose the SDK or a runtime, such as the .NET runtime or the ASP.NET Core runtime. Install a runtime on a machine that you want to prepare for running .NET apps. Install the SDK on a machine that you want to use for development. When you download the SDK, you automatically get the runtimes with it.

The SDK download includes the following components:

  • The .NET CLI. Command-line tools that you can use for local development and continuous integration scripts.
  • The dotnetdriver. A CLI command that runs framework-dependent apps.
  • The Roslynand F# programming language compilers.
  • The MSBuildbuild engine.
  • The .NET runtime. Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • Runtime libraries. Provides primitive data types and fundamental utilities.
  • The ASP.NET Core runtime. Provides basic services for internet-connected apps, such as web apps, IoT apps, and mobile backends.
  • The desktop runtime. Provides basic services for Windows desktop apps, including Windows Forms and WPF.

Project system and MSBuild

A .NET app is built from source code by using MSBuild. A project file (.csproj.fsproj, or .vbproj) specifies targets and associated tasks that are responsible for compiling, packing, and publishing code. There are SDK identifiers that refer to standard collections of targets and tasks. The use of these identifiers helps keep project files small and easy to work with. For example, here is a project file for a console app:

XMLCopy

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>

    <OutputType>Exe</OutputType>

    <TargetFramework>net5.0</TargetFramework>

  </PropertyGroup>

</Project>

And here's one for a web app:

XMLCopy

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>

    <TargetFramework>net5.0</TargetFramework>

  </PropertyGroup>

</Project>

In these examples, the Sdk attribute of the Project element specifies a set of MSBuild targets and tasks that build the project. The TargetFramework element specifies the .NET version that the app depends on. You can edit the project file to add additional targets and tasks specific to the project.

Execution models

.NET apps run managed code in a runtime environment known as the Common Language Runtime (CLR).

CLR

The .NET CLR is a cross-platform runtime that includes support for Windows, macOS, and Linux. The CLR handles memory allocation and management. The CLR is also a virtual machine that not only executes apps but also generates and compiles code using a just-in-time (JIT) compiler.

JIT compiler and IL

Higher-level .NET languages, such as C#, compile down to a hardware-agnostic instruction set, which is called Intermediate Language (IL). When an app runs, the JIT compiler translates IL to machine code that the processor understands. JIT compilation happens on the same machine that the code is going to run on.

Since JIT compilation occurs during execution of the application, the compilation time is part of the run time. Therefore, JIT compilers have to balance time spent optimizing code against the savings that the resulting code can produce. But a JIT compiler knows the actual hardware and can free developers from having to ship different implementations for different platforms.

The .NET JIT compiler can do tiered compilation, which means it can recompile individual methods at run time. This feature lets it compile quickly while still being able to produce a highly tuned version of the code for frequently used methods.

AOT compiler

The default experience for most .NET workloads is the JIT compiler, but .NET offers two forms of ahead-of-time (AOT) compilation:

  • Some scenarios require 100% AOT compilation. An example is iOS.
  • In other scenarios, most of an app's code is AOT-compiled but some is JIT-compiled. Some code patterns aren't friendly to AOT (like generics). An example of this form of AOT compilation is the ready-to-runpublish option. This form of AOT offers the benefits of AOT without its drawbacks.

Automatic memory management

The garbage collector (GC) manages the allocation and release of memory for applications. Each time your code creates a new object, the CLR allocates memory for the object from the managed heap. As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. When not enough free address space remains, the GC checks for objects in the managed heap that are no longer being used by the application. It then reclaims that memory.

The GC is one of the CLR services that help ensure memory safety. A program is memory safe if it accesses only allocated memory. For instance, the runtime ensures that an app doesn't access unallocated memory beyond the bounds of an array.

Data access

.NET provides an Object/Relational Mapper (ORM) and a way to write SQL queries in code.

Entity Framework Core

Entity Framework (EF) Core is an open source and cross-platform data-access technology that can serve as an ORM. EF Core lets you work with a database by referring to .NET objects in code. It reduces the amount of data-access code you would otherwise need to write and test. EF Core supports many database engines.

LINQ

Language-integrated query (LINQ) lets you write declarative code for operating on data. The data can be in many forms (such as in-memory objects, a SQL database, or an XML document), but the LINQ code you write typically doesn't differ by data source.

.NET terminology

To understand .NET documentation, it can help to know how the usage of some terms has changed over time.

.NET Core and .NET 5

In 2014, Microsoft began writing a cross-platform, open-source successor to .NET Framework. This new implementation of .NET was named .NET Core until it reached version 3.1. The next version after .NET Core 3.1 is .NET 5.0, which is currently in preview. Version number 4 was skipped to avoid confusion between this implementation of .NET and .NET Framework 4.8. The name "Core" was dropped to make clear that this is now the main implementation of .NET.

This article is about .NET 5, but much of the documentation for .NET 5 still has references to ".NET Core" or ".NET Framework". In addition, "Core" remains in the names ASP.NET Core and Entity Framework Core.

The documentation also refers to .NET Standard. .NET Standard is an API specification that lets you develop class libraries for multiple implementations of .NET.

For more information, see .NET architectural components.

Overloaded terms

Some of the terminology for .NET can be confusing because the same word is used in different ways in different contexts. Here are a few of the more prominent instances:

  • runtime

TABLE 1

Context

"runtime" meaning

Common Language Runtime (CLR)

The execution environment for a managed program. The OS is part of the runtime environment but isn't part of the .NET runtime.

.NET runtime on the .NET download page

The CLR and runtime libraries, which together provide support for running framework-dependent apps. The page also offers runtime choices for ASP.NET Core server apps and Windows desktop apps.

Runtime Identifier (RID)

The OS platform and CPU architecture that a .NET app runs on. For example: Windows x64, Linux x64.

  • framework

TABLE 2

Context

"framework" meaning

.NET Framework

The original, Windows-only implementation of .NET. "Framework" is capitalized.

target framework

The collection of APIs that a .NET app or library relies on. Examples: .NET Core 3.1, .NET Standard 2.0

Target Framework Moniker (TFM)

A TFM is a standardized token format for specifying the target framework of a .NET app or library. Example: net462 for .NET Framework 4.6.2.

framework-dependent app

An app that can only run on a machine where you've installed the runtime from the .NET download page. "Framework" in this usage is the same thing as the "runtime" that you download from the .NET download page.

framework libraries

Sometimes used as a synonym for runtime libraries.

  • SDK

TABLE 3

Context

"SDK" meaning

SDK on the .NET download page

A collection of tools and libraries that you download and install to develop and run .NET apps. Includes the CLI, MSBuild, the .NET runtime, and other components.

SDK-style project

A set of MSBuild targets and tasks that specifies how to build a project for a particular app type. The SDK in this sense is specified by using the Sdk attribute of the Project element in a project file.

  • platform

TABLE 4

Context

"platform" meaning

cross platform

In this term, "platform" means an operating system and the hardware it runs on, such as Windows, macOS, Linux, iOS, and Android.

.NET platform

Usage varies. The reference may be to one implementation of .NET (such as .NET Framework or .NET 5) or to an overarching concept of .NET including all implementations.

For more information about .NET terminology, see the .NET glossary.


Career Hub – The online placement platform of the IT Scholarship Programme

An online placement website, the Career Hub is maintained by the IT Scholarship Programme with the express purpose of placing graduates of the programme in suitable jobs. It provides a range of facilities availed by graduates, prospective employers and members of Placement Cell. The Career Hub provides the following services:

 

For Members of Placement Cell:

  1. Maintain employers’ database classified into various industry sub-sectors. This also includes database of trade/industry bodies and associations;
  2. Communicate with employers to gather their requirements for recruitment by on-site visits and through email;
  3. Match employers’ recruitment requirements with the available graduates and arranging job interviews for them;
  4. Liaise with Consultants to identify suitable candidates for specific positions;
  5. Liaise with TSPs for identifying employment opportunities;
  6. Carry out grooming sessions for the graduates prior to sending them for interviews;
  7. Track and record the outcome of interviews;
  8. Collect feedback from Employers;
  9. Collect appointment letter or placement confirmation documents;
  10. Collect feedback from Graduates;
  11. Make phone calls to placed/un-placed Graduates for information about their current status

 

For Employers:

  1. Register at the site for availing placement services;
  2. Post job vacancy advertisements at the site;
  3. Browse graduate information;
  4. See list of available graduates grouped by individual course
  5. Communicate with the Placement Cell the for inviting selected candidates for interview

For Graduates and Trainees:

  1. Register at the site for availing placement services;
  2. Record and save their personal data in addition to individual information related to, academic, training and professional accomplishments;
  3. Automatically generate formatted Curriculum Vitae, etc.

 

A very high percentage of graduates of the IT Scholarship Programme are routinely placed in rewarding employment in the IT sector.