Module 3: Using Microsoft .NET- Based Languages
Module 3:Using Microsoft .NET-
Based Languages
Overview
Overview of the .NET-Based Languages
Comparison of the .NET-Based Languages
Creating a Component Using Visual Studio .NET
Lesson: Overview of the .NET-Based Languages
Multiple Language Support
The Common Language Runtime
The Common Language Runtime Components
Runtime Compilation and Execution
What are Namespaces?
Using Namespaces
Multiple Language Support
The .NET Framework is designed to support many languages
More than 20 languages currently supported
Microsoft provides Visual Basic .NET, C#, Visual J# .NET, and JScript .NET
Benefits of multiple-language support
Code modules are reusable API access is the same for all languages The right language is used for the right task Performance is roughly equal between all languages
The Common Language Runtime
One runtime for all . NET-Based Languages
Manages threads and memory
Garbage collection
Enforces code security
Eliminates DLL versioning problems
Multiple versions of a DLL can run simultaneously
Applications can specify a version of a DLL to use
The Common Language Runtime Components
.NET Framework Class Library Support.NET Framework Class Library Support
Thread SupportThread Support COM MarshalerCOM Marshaler
Type CheckerType Checker Exception ManagerException Manager
MSIL to NativeMSIL to NativeCompilersCompilers
CodeCodeManagerManager
GarbageGarbageCollectorCollector
Security EngineSecurity Engine Debug EngineDebug Engine
Class LoaderClass Loader
Runtime Compilation and Execution
Nativecode
C# code Visual Basic .NET code
Which language?
Visual Basic .NETcompiler
C#compiler
MSILJITcompiler
default.aspx
Runtime
HTML
What are Namespaces?
Group related classes
Logical, not physical, grouping
Namespaces are hierarchical
Decrease naming conflicts
Imports keyword in Visual Basic .NET code
Using keyword in C# code
Imports System.Data.SqlClientImports System.Data.SqlClient
using System.Data.SqlClient;using System.Data.SqlClient;
Using Namespaces
Implicit object declaration
Explicit object declaration
Dim listBox1 As New System.Web.UI.WebControls.ListBox()listBox1.Items.Add("First Item")
Dim listBox1 As New System.Web.UI.WebControls.ListBox()listBox1.Items.Add("First Item")
Imports System.Web.UI.WebControls...Dim listBox1 As New ListBox()listBox1.Items.Add("First Item")
Imports System.Web.UI.WebControls...Dim listBox1 As New ListBox()listBox1.Items.Add("First Item")
using System.Web.UI.WebControls;...ListBox listBox1 = new ListBox();listBox1.Items.Add("First Item");
using System.Web.UI.WebControls;...ListBox listBox1 = new ListBox();listBox1.Items.Add("First Item");
System.Web.UI.WebControls.ListBox listBox1 = new System.Web.UI.WebControls.ListBox();
listBox1.Items.Add("First Item");
System.Web.UI.WebControls.ListBox listBox1 = new System.Web.UI.WebControls.ListBox();
listBox1.Items.Add("First Item");
Lesson: Comparison of the .NET-Based Languages
Visual Basic .NET
C#
Choosing a Language
Practice: Language Translation
Visual Basic .NET
Visual Basic .NET is the latest version of Visual Basic
True object-oriented language
Visual Basic Scripting Edition (and JScript) are still used for client-side script
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer = 0Dim x As Double = TextBox1.TextFor i = 0 To 4 x *= 2 Label1.Text = Label1.Text & x & ","Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer = 0Dim x As Double = TextBox1.TextFor i = 0 To 4 x *= 2 Label1.Text = Label1.Text & x & ","Next
End Sub
C#
C# is a new language
Similar to Java, Visual C++, and Pascal
private void Button1_Click(object sender, System.EventArgs e)
{ int i = 0; double x = Convert.ToDouble(TextBox1.Text); for (i=0; i<=4; i++) { x *= 2; Label1.Text = Label1.Text + x + ","; }}
private void Button1_Click(object sender, System.EventArgs e)
{ int i = 0; double x = Convert.ToDouble(TextBox1.Text); for (i=0; i<=4; i++) { x *= 2; Label1.Text = Label1.Text + x + ","; }}
Choosing a Language
.NET Framework class library is the same regardless of language Performance
All languages are compiled to MSIL
Only performance difference is how each language compiler compiles to MSIL
The runtime compiles all MSIL the same, regardless of its origin Development experience
C# is similar to Java, C, Visual C++, and Pascal Visual Basic .NET is similar to Visual Basic
Browser compatibility
ASP.NET code is server-side code, so browser compatibility is not an issue
Practice: Language Translation
Students are:
Given code in C#, and will then translate it into Visual Basic .NET
Given code in Visual Basic .NET, and will then translate it into C#
Time: 5 minutes
Lesson: Creating a Component Using Visual Studio .NET
What are Classes and Components?
Creating a Class
Using Components in an ASP.NET Web Form
Demonstration: Creating a Class in Visual Studio .NET
What are Classes and Components?
Classes are groups of code with no user interface
Components are compiled classes
Components are compiled as DLL files
Components are used for sharing code between applications
componentcomponent
Webapplication
Webapplication
Windows applicationWindows
applicationWeb
applicationWeb
application
Create a Class Library project in Visual Studio .NET
Visual Studio .NET creates a default namespace
Create methods of the class
Creating a Class
Public Class Shipping Function ShippingCost _ (ByVal sngPrice As Single) As Single '… Return (sngShipping) End FunctionEnd Class
Public Class Shipping Function ShippingCost _ (ByVal sngPrice As Single) As Single '… Return (sngShipping) End FunctionEnd Class
public class Shipping{ public Single ShippingCost (Single sngPrice) { //… return sngShipping; }}
public class Shipping{ public Single ShippingCost (Single sngPrice) { //… return sngShipping; }}
Using Components in an ASP.NET Web Form
Add a reference to the DLL
Instantiate the class object:
Use the object: sngShipping = x.ShippingCost(sngPrice);
sngShipping = x.ShippingCost(sngPrice);
Dim x As New CompanyA.ShippingDim x As New CompanyA.Shipping
Namespace CompanyA Class Shipping Function ShippingCost (…)
End ClassEnd Namespace
component.dll
sngShipping = _ x.ShippingCost(sngPrice)
sngShipping = _ x.ShippingCost(sngPrice)
CompanyA.Shipping x = new CompanyA.Shipping();
CompanyA.Shipping x = new CompanyA.Shipping();
namespace CompanyA{ class Shipping { public void ShippingCost (…) { } }}
component.dll
Demonstration: Creating a Class in Visual Studio .NET
Create a new Class Library project
Create a “Hello World” method
Call it from an ASP.NET page
Review
Overview of the .NET-Based Languages
Comparison of the .NET-Based Languages
Creating a Component Using Visual Studio .NET
Lab 3: Building a Microsoft Visual Studio .NET Component
MedicalMedical.aspxMedicalMedical.aspx
BenefitsHome PageDefault.aspx
BenefitsHome PageDefault.aspx
Life InsuranceLife.aspxLife InsuranceLife.aspx
RetirementRetirement.aspxRetirementRetirement.aspx
DentalDental.aspxDentalDental.aspx
Dentists
DoctorsDoctors.aspx DoctorsDoctors.aspx
Doctors
Logon PageLogin.aspxLogon PageLogin.aspx
RegistrationRegister.aspxRegistrationRegister.aspx
CohoWinery
ProspectusProspectus.aspxProspectusProspectus.aspx
XML Web ServicedentalService1.asmx
XML Web ServicedentalService1.asmx
Page HeaderHeader.ascxPage HeaderHeader.ascx
ASPState
tempdb
Lab Web Application
User Controlnamedate.ascxUser Controlnamedate.ascx
Menu ComponentClass1.vb
Menu ComponentClass1.vb
XML Files
Web.config
MedicalMedical.aspxMedicalMedical.aspx
BenefitsHome PageDefault.aspx
BenefitsHome PageDefault.aspx
Life InsuranceLife.aspxLife InsuranceLife.aspx
RetirementRetirement.aspxRetirementRetirement.aspx
DentalDental.aspxDentalDental.aspx
Dentists
DoctorsDoctors.aspx DoctorsDoctors.aspx
Doctors
Logon PageLogin.aspxLogon PageLogin.aspx
RegistrationRegister.aspxRegistrationRegister.aspx
ProspectusProspectus.aspxProspectusProspectus.aspx
XML Web ServicedentalService1.asmx
XML Web ServicedentalService1.asmx
Page HeaderHeader.ascxPage HeaderHeader.ascx
ASPState
tempdb
Lab Web Application
User Controlnamedate.ascxUser Controlnamedate.ascx
Menu ComponentClass1.vb or Class1.cs
Menu ComponentClass1.vb or Class1.cs
XML Files
Web.config