Framework definition...

S

santoshmahale

I know this is too late but believe me, it can still be confusing
especially when teaching it to newcomers. Here is my understanding of
..NET Framework and its components.

..NET Framework is a managed application development framework from
Microsoft and has two main components: Framework Class Library, Common
Language Runtime.

Common Language Runtime: This is a commercial implementation of CLI
(Common Language Infrastructure) specification ratified by Ecma. CLI
has 4 parts CTS (Common Type System), CLS (Common Language
Specification), Virtual Execution Engine (VES) & Metadata.

So, technically, CLR does not contain CLS, but implementation of the
specification. Is this right?

Some other definitions show Windows forms and ASP.NET as being part of
the framework. To me, .NET Framework does not have anything called as
Windows forms, but has classes (as part of FCL) that can be used be
develope Windows based application.

But I am not sure if the same is true for ASP.NET. If not, how exactly
is .NET Framework & ASP.NET related?

Also, .NET framework does not have support for C#, VB.NET i.e. .NET
framework does not have inbuilt compilers for these languages. The
Framework has only JIT which compiles MSIL code to native code.

Please confirm.....

Thanks a lot
Santosh
 
K

Kevin Spencer

You might want to visit the following reference:

http://msdn.microsoft.com/netframework/technologyinfo/features/default.aspx

According to the reference mentioned,

"The .NET Framework consists of two main parts: the common language runtime
(CLR) and a unified set of class libraries, including ASP.NET for Web
applications and Web services, Windows Forms for smart client applications,
and ADO.NET for loosely coupled data access."
So, technically, CLR does not contain CLS, but implementation of the
specification. Is this right?

A specification is a blueprint. It defines the rules for creating
implementations of the specification. XML is a specification. An XML
document is an implementation of XML. So, yes, that is correct.
Some other definitions show Windows forms and ASP.NET as being part of
the framework. To me, .NET Framework does not have anything called as
Windows forms, but has classes (as part of FCL) that can be used be
develope Windows based application.

The Common Language Runtime Library is an immense collection of code. It
supports Windows Forms, ASP.Net, and hundreds of other systems and services,
just about everything that you could possibly access in a Windows Operating
System, from soup to nuts. The System.Windows.Forms namespace contains a
huge volume of code for creating and working with Windows Forms. Since
Windows Forms are only the code that creates them, I don't see how you can
differentiate between the CLR Library classes and the Forms themselves.
Since the classes are part of one of the "two main parts" of the Framework,
what exactly is the source of your confusion?

To put it another way, the reason why the .Net Framework is called a
"framework" is that it is a platform that one can build on, much as the
foundation of a house is a platform for building a house on. When talking
about the foundation of a house, one does not differentiate between the
concrete blocks and the poured concrete upon which they sit. They are parts
of the same platform. Or perhaps the plumbing might be a better example. The
plumbing creates a framework for creating facilities in a house that use
water, such as sinks, toilets, and baths. The plumbing is not the water. In
fact, it gets the water from other plumbing, coming from the street, much as
the System.Windows.Forms namespace contains classes that call Windows API
functions to create managed Windows Forms. Does this imply that the .Net
Framework doesn't "have anything called as Windows Forms?" That would be
like saying that the plumbing in a house doesn't "have anything called as
water."

In other words, in some ways the .Net Framework is dependent upon the
Windows platform and the Windows API for providing it with "the water in its
pipes." But the Windows platform depends upon the BIOS in the mother board.
And the BIOS depends upon the hardware. The hardware depends upon
electricity. The electricity depends upon the generator. The generator
depends upon its energy source. And so on.
But I am not sure if the same is true for ASP.NET. If not, how exactly
is .NET Framework & ASP.NET related?

The System.Web.UI namespace is the basis for most of ASP.Net. ASP.Net lives
entirely in the Common Language Runtime Library.
Also, .NET framework does not have support for C#, VB.NET i.e. .NET
framework does not have inbuilt compilers for these languages. The
Framework has only JIT which compiles MSIL code to native code.

Let me ask you this: Before you install the .Net Framework, are you able to
write and compile programs in C#? (Hint: no) After you install the .Net
Framework, are you able to write and compile programs in C#? (Hint: yes)

This is a lot like asking if Internet Explorer is part of the Windows
Operating System. Microsoft spent years in court wrangling over this sort of
question. What is an Operating System? Is it the Kernel alone, or all of the
services, DLLs, and components that comprise Windows? What is the .Net
Framework? What parts of the Framework that you install are "truly" parts of
the framework, and what parts are simply decoration? Again, does it matter?
This is nothing but splitting hairs over questions that do not help one to
achieve anything at all. They are purely academic, mental masturbation.

Bottom line, as Microsoft wrote the .Net Framework, and Microsoft named the
..Net Framework, and Microsoft owns the .Net Framework, the .Net Framework is
whatever Microsoft says it is.
I know this is too late but believe me, it can still be confusing
especially when teaching it to newcomers.

If you really want to teach newcomers, teach them to be concerned about what
is profitable to be concerned about. One can argue about how many angels can
dance on the head of a pin all day long, but at the end of the day, one has
managed to do only one thing: waste an entire day.

Why do people become programmers? They become programmers to write software.
What is necessary to learn in order to write software? How to use the
technology. The words that comprise definitions of words are unimportant.
What is important is what the words represent, not what words best can be
used to describe those words.

The American theoretical physicist Richard Feynman once told a story about
walks he would take in the woods with his father. He related how other
fathers would point to a bird and tell their children "that is a lark." His
father would point at a bird and tell him "That is called a lark, but giving
it a name doesn't tell us anything useful about it. What is it? What does it
do? How does it do it? That is what matters."

There are people here in the U.S. who own SUVs (Sport Utility Vehicles)
because they are a "status symbol." SUVS are large, heavy, and use a lot of
gasoline. Gasoline is expensive, and cars depreciate in value at an
astonishing rate. Therefore, owning such a car is impractical. It is a waste
of money. Anyone impressed by such a car is too foolish to be worth
impressing.

So, the next time some newcomer asks you such a question, ask them what they
plan to use that information to accomplish. Tell them that if they plan to
impress people with their superior knowledge, they have already failed. Some
knowledge, no matter how accurate it may be, is simply worthless. And the
only people who would be impressed by such knowledge are not worth
impressing.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Who is Mighty Abbott?
A twin turret scalawag.
 
S

santoshmahale

Kevin, thanks a lot for this comprehensive response and yes, this is
definitely going to help!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top