Enterprise Application Development
Enterprise Application Development
Enterprise Application Development
APPLICATION
DEVELOPMENT
ENTERPRISE
• In the computer industry, an enterprise is an organization that uses
computers.
• A word was needed that would encompass(cover) corporations, small
businesses, non-profit institutions, government bodies and possibly other
kinds of organizations. For this purpose the term “enterprise” seemed to
do the job.
• In practice, the term is applied much more often to larger organizations
than smaller ones.
• Enterprise is a business organization. In the computer industry, the term
is often used to describe any large organization that utilizes computers.
TYPES OF ENTERPRISE
• Micro Enterprise:
– This is an enterprise which has fewer than 10 employees; and has
either an annual turnover not exceeding € 2 million or an annual
balance sheet not exceeding € 2 million.
• Small Enterprise:
– This is an enterprise which has fewer than 50 employees; and has
either an annual turnover not exceeding € 10 million or an annual
balance sheet not exceeding € 10 million.
TYPES OF ENTERPRISE
• Medium Enterprise:
– This is an enterprise which has fewer than 250 employees; and has
either an annual turnover not exceeding € 50 million or an annual
balance sheet not exceeding € 43 million.
• Intermediate Enterprise:
– This is an enterprise which has less than 750 employees; or has an
annual turnover of less than € 200 million.
TYPES OF ENTERPRISE
• Macro/Large Enterprise:
– This is an enterprise which has more than 750 employees; or has an
annual turnover of more than € 200 million.
APPLICATION
• Application software, software application or simple “an
application is computer software designed to help the user
to perform a singular or multiple related specific tasks”.
• Typical examples are Window XP, Device Drivers,
TextEditor, Visual Studio, MS Word, spreadsheets, media
players and database applications, business applications,
Games etc.
TYPES OF APPLICATION
• Types of Software or Application:
– Practical computer systems divide software into three major
classes: system software, programming software and application
software that is:
– System Software
– Programming Software
– Application Software
• Mobile Software
• Computer Software
– Web
– Desktop
TYPES OF APPLICATION
• System Software:
– “System software helps run the computer hardware and
computer system. It includes operating systems, device drivers,
diagnostic tools and more.”
– The purpose of systems software is to protect the applications
programmer as much as possible from the details of the
particular complex computer hardware that has been used,
especially memory management and other hardware features
such as communications, printers, readers, displays, keyboards,
etc.
TYPES OF APPLICATION
• Programming Software:
– Programming software usually provides tools to assist a
programmer in writing application software using different
programming languages in a more convenient way. The tools
include compilers, interpreters, debuggers, texteditor, dev, visual
studio etc.
– An Integrated development environment (IDE) merges them into
a software bundle, and a programmer may not need to type
multiple commands for compiling, interpreter, debugging and etc.,
because the IDE usually has an advanced graphical user interface,
or GUI.
TYPES OF APPLICATION
• Application Software:
– Application software allows end users to accomplish one or
more specific (non-computer related) tasks.
– Typical applications include Ms Word, Google, industrial
automation, business software, educational software, medical
software, ERP, and computer games.
– Businesses are probably the biggest users of application software,
but almost every field of human activity now uses some form of
application software.
– It is used to automate all sorts of functions.
TYPES OF APPLICATION
• Desktop:
– Windows or Desktop Applications are form based standard
Windows desktop applications for common day to day tasks.
Microsoft word is an example of a Windows application.
• Web:
– Web Applications are programs that used to run inside some
web server (e.g., IIS) to fulfill the user requests over the http. A
typical example of web application is Hotmail and Google.
DEVELOPMENT
• A process in which something passes by degrees to a different stage
(especially to a more advanced or mature stage).
• Act of improving by expanding or enlarging or refining.
• Development in Computer Science refers to a catch-all term for the
entire process of creating software, from specifying the requirement
all the way through to testing and user acceptance.
ENTERPRISE APPLICATION
• The enterprise software is a collection of computer programs with
common business applications, tools for modeling how the entire
organization works, and development tools for building applications
unique to the organization
WHAT IS AN ENTERPRISE APPLICATION?
• Enterprise software, also known as enterprise application software (EAS),
is software intended to solve an enterprise problem.
• Software system designed to operate in a corporate environment.
• Designed to satisfied the needs of an organization rather than individual
users.
• It is intended to solve an enterprise-wide problem, rather than
departmental problem.
• Such applications would include businesses, schools, interest-based user
groups, clubs, charities, or governments.
WHY DO WE NEED THESE APPLICATIONS?
• To improve productivity.
• Enterprise applications are typically designed to interface or integrate with
other enterprise applications used within the organization.
• Enable data to flow from one program to another, and provides interfaces to
manage the data flow.
• Allows companies to realize the full benefit of their investments: The ability to
use data as fully as possible.
CHARACTERISTICS OF ENTERPRISE
APPLICATION
• Complex
• Scalable
• Component-based
• Distributed
• Real-time
EXAMPLES OF ENTERPRISE APPLICATIONS
• Payment Processing
• Enterprise Resource Planning
• Content Management System
• Customer Relationship Management
• Business Intelligence
• Supply Chain Management
CLOUD, NO CLOUD, OR HYBRID?
• Depends on the business context or need.
• Usually companies moves some or its entire infrastructure to the cloud,
where services are delivered to an organization’s computers and devices
through the internet as an on demand services.
• Some enterprises may also choose a hybrid solution where cloud applications
are integrated with on promise systems.
ENTERPRISE APPLICATION DEVELOPMENT?
• The process of Developing a software or application intended to
solve an enterprise (unique) problems is “Enterprise Application
Development.
• The process of Developing Enterprise Application is what
“Enterprise Application Development” is.
CHAPTER
1
OBJECT ORIENTED PROGRAMMING
• Classes
– Characteristics (Name, Attributes, Methods)
• Objects
– An instance of a class
• Inheritance
– Base Class and Derived Class
• Encapsulation
– Data can be encapsulated such that it is invisible to the “outside world”.
– Data can only be accessed via methods
• Polymorphism
SOFTWARE ARCHITECTURES OVERVIEW
• File Server
– In a file server a computer attached to a network that provides a location
for shared disk access.
• Such as documents, sound files, photographs, movies, images, databases, etc.
– Can be accessed by the workstations that are able to reach the computer that
shares the access through a computer network.
– The term server highlights the role of the machine in the client–server scheme,
where the clients are the workstations using the storage.
– A file server does not perform computational tasks, and does not run programs
on behalf of its clients.
SOFTWARE ARCHITECTURES OVERVIEW
• Two-Tier Architecture
– Client Server architecture (Client Tier, Data
Tier)
– Direct communication
– No intermediate between client and server.
SOFTWARE ARCHITECTURES OVERVIEW
• Three Tier Architecture
– Client layer, Business layer, and Data layer
Client Layer:
▪ Also called as Presentation layer, contains UI part of our application.
Business Layer:
▪ Interface between Client layer and Data Access Layer (Intermediary layer).
▪ Includes business logics (validation of data, calculations, data insertion)
SOFTWARE ARCHITECTURES OVERVIEW
Data Layer:
▪ Actual Database
▪ Methods to connect with database
▪ Perform insert, update, delete, get data
from database based on our input data.
PAGE FRAMEWORK OVERVIEW
➢Page Life Cycle and Page Events
❖ PreInit
o Check the IsPostBack property
o Create or re-create dynamic controls.
o Set a master page dynamically.
o Set the Theme property dynamically.
PAGE EVENTS (CONT..)
❖ Init
o Raised after all controls have been initialized
o Each control's UniqueID is set and any skin settings have been applied.
o The Init event of individual controls occurs before the Init event of the
page.
o Use this event to read or initialize control properties.
❖ InitComplete
o Raised once all initializations of the page and its controls have been
completed.
o Till now the viewstate values are not yet loaded, we can use this event
to make changes to view state.
PAGE EVENTS (CONT..)
❖ PreLoad
o Raised after the page loads view state for itself and all controls
❖ Load
o The Page object calls the OnLoad method on the Page object, and then
recursively does the same for each child control until the page and all
controls are loaded. The Load event of individual controls occurs after the
Load event of the page.
o This is the first place in the page lifecycle that all values are restored.
o Most code checks the value of IsPostBack to avoid unnecessarily resetting
state.
PAGE EVENTS (CONT..)
o We may also call Validate and check the value of IsValid in this method.
o We can also create dynamic controls in this method.
o Use the OnLoad event method to set properties in controls and establish
database connections.
❖ Control Events
o Calls any events on the page or its controls that caused the PostBack to
occur, such as a Button control's Click event or a TextBox control's
TextChanged event.
PAGE EVENTS (CONT..)
❖LoadComplete
o Raised at the end of the event-handling stage.
o Use this event for tasks that require that all other controls on the page be
loaded.
❖PreRender
o Allows final changes to the page or its control.
o This event takes place before saving ViewState.
o After this event, we cannot change any property of a button or change any
viewstate value
o The PreRender event of individual controls occurs after the PreRender
event of the page.
PAGE EVENTS (CONT..)
❖ SaveStateComplete
o Use this event perform tasks that require the view state to be saved, but
that do not make any changes to controls.
❖ Render
o The Render method generates the client-side HTML, Dynamic Hypertext
Markup Language (DHTML), and script that are necessary to properly
display a control at the browser.
❖ Unload
o This event is used for cleanup code.
o This event occurs for each control and then for the page.
DEALING WITH POSTBACKS
o if (Page.IsPostBack == true) {
//Do something
}
❖ CROSS-PAGE POSTING
o Enables you to submit a form (Page1.aspx) and have this form and all the
control values post themselves to another page (Page2.aspx).
PAGE DIRECTIVES
o Page Directives are commands.
o These commands are used by the compiler when the page is compiled.
o Starts with "<%@" and ends with "%>
o Format: <%@[Directive] [Attributes]%>
o Directive examples:
– @Page
– @Master
– @Control
– @Register
– @Import
COMPILATION
COMPILATION (CONT..)
COMPILATION (CONT..)
❖ In-place precompilation
– To precompile your entire ASP.NET application, you must use the
aspnet_compiler.exe tool that comes with ASP.NET.
• C:\Windows\Microsoft.NET\Framework
– You can also get to this tool directly from the Visual Studio 2010 Command
Prompt.
– After you get the command prompt, you use the aspnet_compiler.exe tool
to perform an in-place precompilation using the following command:
• aspnet_compiler -p "C:\Inetpub\wwwroot\WROX" -v none
COMPILATION (CONT..)
❖ Precompilation for deployment
– Compile your application down to some DLLs, which can then be deployed to
customers, partners, or elsewhere for your own use.
– This means that your Web site code is completely removed and placed in the DLL
when deployed.
– Before you take these precompilation steps, create a folder in your root drive called,
for example, Compiled. This folder is the one to which you will direct the compiler
output.
• aspnet_compiler -v [Application Name] -p [Physical Location] [Target]
• aspnet_compiler -v /SampleWebsite -p D:\SampleWebsite D:\SampleWebsite\Compiled
– -v is a command for the virtual path of the application,
– –p, which is pointing to the physical path of the application.
COMPILATION (CONT..)
– Note that this compilation process does not compile every type of
Web file.
• HTML files
• XML files
• XSD files
• web.config files
• Text files
BUILD PROVIDERS
– The App_Code is a special folder in the application which will build the items inside it.
– A build provider is a code generator that places the results of the build into memory so that it is
accessible by the runtime
– Build providers are preconfigured for all of the common file types such as .aspx, .ascx, .asmx, and
several others.
– System.Web.Compilation.PageBuildProvider is a default providers used by the ASP.NET to compile
and build .aspx extension pages.
– There are many other providers used by ASP.NET when building the application. Each provider is
registered using an extension and the type.
• <add extension=".aspx" type="System.Web.Compilation.PageBuildProvider" />
• <add extension=".ascx" type="System.Web.Compilation.UserControlBuildProvider" />
• <add extension=".master" type="System.Web.Compilation.MasterPageBuildProvider" />
• <add extension=".asmx" type="System.Web.Compilation.WebServiceBuildProvider" />
GLOBAL.ASAX
– Used by the application to hold application-level events, objects, and variables
– ASP.NET applications can have only a single Global.asax file.
Events
– Application_Start
• Called when the application receives its very first request.
• Assign any application-level variables or state that must be maintained across all users.
– Session_Start
• Fired when an individual user accesses the application for the first time.
• The Application_Start event fires once when the first request comes in, which gets the
application going, but the Session_Start is invoked for each end user who requests
something from the application for the first time.
GLOBAL.ASAX (CONT..)
– Application_BeginRequest
• Triggered before each and every request that comes its way.
• Before request is processed, the Application_BeginRequest is triggered and dealt with
before any processing of the request occurs.
– Application_ AuthenticateRequest
• Triggered for each request and enables you to set up custom authentications for a request.
– Application_ Error
• Triggered when an error is thrown anywhere in the application by any user of the
application.
• This is an ideal spot to provide application-wide error handling or an event recording the
errors to the server’s event logs
GLOBAL.ASAX (CONT..)
– Session_End
• Code that runs when a session ends.
• The Session_End event is raised only when the sessionstate mode is set to InProc in the
Web.config file.
• If session mode is set to StateServer or SQLServer, the event is not raised.
– Application_End
• Triggered when the application comes to an end.
CHAPTER 2
ASP.NET SERVER CONTROLS
Types of Server Control
–HTML Server Controls (Traditional HTML tags)
–Web Server Controls (New ASP. NET tags)
–Validation Controls
–User Define Controls
ASP.NET SERVER CONTROLS (CONT..)
HTML server controls
– These controls are basically the original HTML controls but enhanced to
enable server side processing.
– To make these elements programmable, add a runat="server" attribute to
the HTML element. This attribute indicates that the element should be
treated as a server control.
– All HTML server controls must be within a <form> tag with the
runat="server" attribute. The runat="server" attribute indicates that the
form should be processed on the server.
– You have all the HtmlControl class’s properties and methods available such
as, ID, EnableViewState, Disabled, Style, and some more.
HTML SERVER CONTROLS (CONT..)
HtmlControl Class
– The HtmlControl base class is used for those HTML classes that are focused on HTML elements that
can be contained within a single node. Such as <img>, <input>, and <link> elements.
HtmlContainerControl Class
– A class specifically designed to work with HTML elements that require a closing tag.
– HTML elements such as <a>, <form>, and <select>, require an opening and closing set of tags.
– These controls have some extra properties like InnerText and InnerHtml.
– InnerHtml: Enables you to specify content that can include HTML elements to be placed between the
opening and closing tags of the specified control.
– InnerText: Enables you to specify raw text to be placed between the opening and closing tags of the
specified control.
HtmlGenericControl Class
– Using the HtmlGenericControl class, you can get server-side access to the <meta>, <p>, <span>, or
other elements that would otherwise be unreachable.
MANIPULATING PAGES AND SERVER CONTROLS
WITH JAVASCRIPT
• Apply JavaScript directly to the controls on your ASPX
page.
• Using Page.ClientScript.RegisterClientScriptBlock
– The RegisterClientScriptBlock method allows you to place a
JavaScript function at the top of the page.
– RegisterClientScriptBlock(type, key, script, script tag specification)
MANIPULATING PAGES AND SERVER
CONTROLS WITH JAVASCRIPT (CONT..)
• Using Page.ClientScript.RegisterStartupScript
– RegisterStartupScript places the script at the bottom of the ASP.NET
page instead of at the top.
– RegisterStartupScript(type, key, script, script tag specification)
• Using Page.ClientScript.RegisterClientScriptInclude
– You can register the script files on your ASP.NET pages using the
RegisterClientScriptInclude method.
– Page.ClientScript.RegisterClientScriptInclude(type, key, url)
COMPARING A TYPICAL POSTBACK TO A CALLBACK
• Postback
– A postback occurs when a request is sent from the client to the
server for the same page as the one the user is currently viewing.
– When a postback occurs, the entire page is refreshed.
• Callback
– A callback occurs when a request is sent from the client to the
server for which the page is not refreshed.
– Only a part of it is updated without any flickering occurring on the
browser
COMMON PROPERTIES
• Access Key
– Alt + key.
• Attributes
– Enables you to define additional attributes for a Web server control that are not defined
by a public property.
• Disabled
– Allows you to get or set whether the control is disabled using a Boolean value.
• Visible
– Specifies whether the control is visible on the generated page.
Hello, C#! Welcome, .NET! | 01
Extension Description
C# for Visual Studio Code C# editing support, including syntax highlighting,
(powered by OmniSharp) IntelliSense, Go to Definition, Find All References,
ms-vscode.csharp debugging support for .NET Core (CoreCLR), and
support for project.json and csproj projects on
Windows, macOS, and Linux.
C# XML Documentation Generate XML documentation comments for Visual
Comments k--kato.docomment Studio Code.
C# Extensions Add C# class, add C# interface, add fields and
jchannon.csharpextensions properties from constructors, add constructor from
properties.
REST Client Send an HTTP request and view the response directly
humao.rest-client in Visual Studio Code.
Understanding .NET
.NET Framework, .NET Core, Xamarin, and .NET Standard are related and
overlapping platforms for developers used to build applications and services. In this
section, we're going to introduce you to each of these .NET concepts.
Since .NET Framework 4.5.2 it has been an official component of the Windows
operating system. .NET Framework is installed on over one billion computers so it
must change as little as possible. Even bug fixes can cause problems, so it is updated
infrequently.
[7]
C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development
All of the apps on a computer written for the .NET Framework share the same
version of the CLR and libraries stored in the Global Assembly Cache (GAC),
which can lead to issues if some of them need a specific version for compatibility.
More Information: You can read more about the project at the
following link: http://www.mono-project.com/.
Mono has found a niche as the foundation of the Xamarin mobile platform as well as
cross-platform game development platforms like Unity.
Microsoft purchased Xamarin in 2016 and now gives away what used to be an
expensive Xamarin extension for free with Visual Studio 2019. Microsoft renamed the
Xamarin Studio development tool, which could only create mobile apps, to Visual
Studio for Mac and gave it the ability to create other types of apps. With Visual Studio
2019 for Mac, Microsoft has replaced parts of the Xamarin Studio editor with parts from
Visual Studio for Windows to provide closer parity of experience and performance.
[8]
Hello, C#! Welcome, .NET! | 01
This new product was branded .NET Core and includes a cross-platform
implementation of the CLR known as CoreCLR and a streamlined library
of classes known as CoreFX.
Scott Hunter, Microsoft Partner Director Program Manager for .NET, has said
that "Forty percent of our .NET Core customers are brand-new developers to the
platform, which is what we want with .NET Core. We want to bring new people in."
.NET Core is fast moving and because it can be deployed side by side with an app,
it can change frequently knowing those changes will not affect other .NET Core apps
on the same machine. Improvements that Microsoft can make to .NET Core cannot
be added to .NET Framework.
The following table shows when the key versions of .NET Core were released,
when future releases are planned, and which version is used by the various editions
of this book:
[9]
C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development
.NET Core 1.0.4 and .NET Core 1.1.1 March 2017 Second March 2017
.NET Core 2.0 August 2017
.NET Core for UWP in Windows 10 Fall October 2017 Third November 2017
Creators Update
.NET Core 2.1 May 2018
.NET Core 2.2 December 2018
.NET Core 3.0 (Current) September 2019 Fourth October 2019
.NET Core 3.1 (LTS) November 2019
.NET 5.0 November 2020
.NET 6.0 November 2021
I cannot promise 5th and 6th editions of this book to match future releases of .NET,
but that would be a safe bet.
• LTS releases are stable and require fewer updates over their lifetime.
These are a good choice for applications that you do not intend to update
frequently. LTS releases will be supported for 3 years after general
availability. .NET Core 3.1 will be an LTS release.
.NET Core 1.0 and 1.1 reached end of life and went out of support on 27 June 2019, 3
years after the initial .NET Core 1.0 release.
• Current releases include features that may change based on feedback. These
are a good choice for applications that you are actively developing because
they provide access to the latest improvements. After a 3-month maintenance
period, the previous minor version will no longer be supported. For example,
after 1.2 releases systems running version 1.1 will have 3 months to update
to 1.2 to remain eligible for support. .NET Core 3.0 is a Current release so if
.NET Core 3.1 releases in November 2019 as planned, then you will need to
upgrade to it by February 2020.
Both receive critical fixes throughout their lifetime for security and reliability. You
must stay up to date with the latest patches to get support. For example, if a system
is running 1.0 and 1.0.1 has been released, 1.0.1 will need to be installed.
[ 10 ]
Hello, C#! Welcome, .NET! | 01
One of the new features of .NET Core 3.0 is support for running old Windows Forms
and WPF applications using the Windows Desktop Pack that is included with
the Windows version of .NET Core 3.0 which is why it is bigger than the SDKs for
macOS and Linux. You can make some small changes to your legacy Windows app
if necessary, and then rebuild it for .NET Core to take advantage of new features and
performance improvements. You'll learn about support for building these types of
Windows apps in Chapter 20, Building Windows Desktop Apps.
The latest technology used to build Windows apps is the Universal Windows
Platform (UWP), which is built on a custom version of .NET Core. UWP is not part
of .NET Core because it is not cross-platform.
ASP.NET Web Forms and Windows Communication Foundation (WCF) are old
web application and service technologies that fewer developers are choosing to use
for new development projects today, so they have also been removed from .NET
Core. Instead, developers prefer to use ASP.NET MVC and ASP.NET Web API. These
two technologies have been refactored and combined into a new product that runs on
.NET Core, named ASP.NET Core. You'll learn about the technologies in Chapter 15,
Building Websites Using ASP.NET Core Razor Pages, Chapter 16, Building Websites Using
the Model-View-Controller Pattern, and Chapter 18, Building and Consuming Web Services.
[ 11 ]
C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development
If you have existing apps that use the old EF then version 6.3 is supported on .NET
Core 3.0.
In addition to removing large pieces from .NET Framework in order to make .NET
Core, Microsoft has componentized the .NET Core into NuGet packages, those being
small chunks of functionality that can be deployed independently.
Microsoft's primary goal is not to make .NET Core smaller than .NET Framework.
The goal is to componentize .NET Core to support modern technologies and to have
fewer dependencies, so that deployment requires only those packages that your
application needs.
Each has strengths and weaknesses because they are all designed for different
scenarios. This has led to the problem that a developer must learn three platforms,
each with annoying quirks and limitations. Because of that, Microsoft defined .NET
Standard: a specification for a set of APIs that all .NET platforms can implement
to indicate what level of compatibility they have. For example, basic support is
indicated by a platform being compliant with .NET Standard 1.4.
With .NET Standard 2.0 and later, Microsoft made all three platforms converge on
a modern minimum standard, which makes it much easier for developers to share
code between any flavor of .NET.
For .NET Core 2.0 and later, this added a number of the missing APIs that developers
need to port old code written for .NET Framework to the cross-platform .NET Core.
However, some APIs are implemented, but throw an exception to indicate to a
developer that they should not actually be used! This is usually due to differences in
the operating system on which you run .NET Core. You'll learn how to handle these
exceptions in Chapter 2, Speaking C#.
It is important to understand that .NET Standard is just a standard. You are not able
to install .NET Standard in the same way that you cannot install HTML5. To use
HTML5, you must install a web browser that implements the HTML5 standard.
[ 12 ]
Hello, C#! Welcome, .NET! | 01
To use the .NET Standard, you must install a .NET platform that implements the
.NET Standard specification. .NET Standard 2.0 is implemented by the latest versions
of .NET Framework, .NET Core, and Xamarin.
The latest .NET Standard, 2.1, is only implemented by .NET Core 3.0, Mono, and
Xamarin. Some features of C# 8.0 require .NET Standard 2.1. .NET Standard 2.1 is not
implemented by .NET Framework 4.8 so we should treat .NET Framework as legacy.
The second edition was (almost) completely purged of all .NET Framework code
examples so that readers were able to focus on .NET Core examples that truly run
cross-platform. The third edition completed the switch. It was rewritten so that all of
the code was pure .NET Core. But giving step-by-step instructions for multiple tools
added unnecessary complexity.
In this fourth edition, we'll continue the trend by only showing coding examples
using Visual Studio Code for all but the last two chapters of this book. In Chapter
20, Building Windows Desktop Apps, you'll need to use Visual Studio 2019 running on
Windows 10, and in Chapter 21, Building Cross-Platform Mobile Apps Using Xamarin.
Forms, you'll need to use Visual Studio 2019 for Mac.
[ 13 ]
C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development
At runtime, CoreCLR loads the IL code from the assembly, the just-in-time (JIT)
compiler compiles it into native CPU instructions, and then it is executed by the CPU
on your machine. The benefit of this three-step compilation process is that Microsoft
is able to create CLRs for Linux and macOS, as well as for Windows. The same IL
code runs everywhere because of the second compilation process, which generates
code for the native operating system and CPU instruction set.
Regardless of which language the source code is written in, for example, C#,
Visual Basic or F#, all .NET applications use IL code for their instructions stored
in an assembly. Microsoft and others provide disassembler tools that can open an
assembly and reveal this IL code like the ILSpy .NET Decompiler extension.
More Information: You can read more about .NET Native at the
following link: https://github.com/dotnet/corert/blob/
master/Documentation/intro-to-corert.md.
By the end of 2020, Microsoft promises that there will be a single .NET platform
instead of three. .NET 5.0 is planned to have a single BCL and two runtimes: one
optimized for server or desktop scenarios like websites and Windows desktop apps
based on the .NET Core runtime, and one optimized for mobile apps based on the
Xamarin runtime.
[ 14 ]