1. Giới thiệu .NET Framework
CLR, CTS, CLS, MSIL…
Garbage collection
Namespace
2. Tổng quan ngôn ngữ C#
Đặc điểm ngôn ngữ
Quá trình biên dịch CT C#
Các loại CT C#
Cấu trúc chương trình C#
Chương trình C# đơn giản
.NET Framework
Chương trình nền tảng cho cho công nghệ .NET
Cung cấp tập hợp class library thường dùng
Quản lý sự thực thi của các chương trình .NET
52 trang |
Chia sẻ: candy98 | Lượt xem: 669 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình Asp.Net - Phần 1: Tổng quan .NET & Ngôn ngữ C# - Nguyễn Hà Giang, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TỔNG QUAN .NET NGÔN NGỮ C#ThS. Nguyễn Hà GiangNội dung2Giới thiệu .NET FrameworkCLR, CTS, CLS, MSILGarbage collectionNamespaceTổng quan ngôn ngữ C#Đặc điểm ngôn ngữQuá trình biên dịch CT C#Các loại CT C#Cấu trúc chương trình C#Chương trình C# đơn giản.NET Framework3Chương trình nền tảng cho cho công nghệ .NETCung cấp tập hợp class library thường dùngQuản lý sự thực thi của các chương trình .NETCommon Language RuntimeBase Framework ClassesData and XML ClassesCustom ClassesC# VB.NET J# C++ XML Web ServiceWeb FormsWindows FormsASP.NET.NET Framework - ArchitechtureCommon Language Infrastructure (CLI)provide a language-neutral platform for application development and execution 4.NET Framework5.NET 1.1 (Apr-2003)VS .NET 2003Default: Server 2003.NET 3.5 (Nov-2007)VS.NET 2008Default: Windows 7.NET 3.0 (Nov-2006)Default: Windows Vista, Server 2008.NET 2.0 (Nov-2005)VS.NET 2005 .NET 1.0 (Feb-2002)Đặc điểm của ứng dụng .NET6Chạy trên nền (.NET framework)Mã nguồn được biên dịch qua MSILMSIL được thông dịch qua mã máy lúc thực thi nhờ vào CLRĐộc lập nền tảngVề lý thuyết có thể chạy trên mọi nền!Install .NET Framework redistribute packadge (dotnetfx.exe) để chạy ứng dụng .NET trên máy client.Đặc điểm của ứng dụng .NET7MS ILCLRC++ CompilerC# CompilerJ# .NET CompilerCT C#.NETCT VB.NETCT C++.NET.NET FrameworkCT J#.NETVB .NET Compiler101101010110101011010Programmer.NET Framework - CLR8Theo quan điểm của người lập trình, .NET có thể hiểu như môi trường thực thi mới và thư viện lớp cơ sở cải tiến.Môi trường thực thi là: Common Language Runtime - CLRVai trò chính CLR: locate, load, manage .NET typesCLR còn quản lý những phần ở mức thấp như: memory management, security check.NET Framework - CTS9Common Type System (CTS): Mục đích hỗ trợ thực thi chéo ngôn ngữĐịnh nghĩa kiểu dữ liệu tiền định và có sẵn trong IL:Tất cả ngôn ngữ .NET sẽ được sinh ra mã cuối trên cơ sở kiểu dữ liệu nàyIntegerInt32intVB.NETILC#. NET Framework - CLS10CLR/CTS/ILC++C#Visual BasicCLSCLS is the smallest common denominator of various OO-languages. FCL only uses CLS features.. NET Framework - CLS11Common Language Specification:Đảm bảo sự thực thi chéoTất cả compiler hướng .NET đều phải tuân thủ theo CLSCó thể viết mã non-CLS nhưng sẽ ko đảm bảo thực thi chéoIL phân biệt loại ký tự, VB.NET ko phân biệt, CLS báo rằng ko cho phép 2 định danh chỉ khác nhau về kiểu ký tự, do đó VB.NET có thể hoạt động trong CLSC#VB.NETMS Intermediate Language 12IL Abstracted assembly language Ý tưởng về mã Java byteMã cấp thấp cú pháp đơn giản quá trình dịch sang mã máy nhanh hơnCLR chuyển IL thành mã máy lúc runtimeSự chuyển này gọi là Just – In – Time Compilation hay JIT compilingCommon Language Runtime - compilation13C++, C#, VB or any .NET languagecsc.exe or vbc.exeCompilerAssemblyDLL or EXESource CodeAssemblyManaged ModulesChứa IL code để thực thiChứa resource, metadataPortable Executable (PE)Process assembly (EXE)Library assembly (DLL)14.NET AssemblyDLLEXEManaged Code15Phần mềm được viết để sử dụng trong .NET FrameworkPM khác thì gọi là Unmanaged code“Managed”: do chạy dưới sự giám sát của cơ chế thực thi (CLR)Windows(OS khác)Legacy Software(unmanaged code)Common Language RuntimeManaged ExecutableGarbage collection16class myClass{ void Method(){ variable v1; variable v2; do{ . }}BECADManaged HeapA và D sẽ bị xoá do ko còn tham chiếu hay truy cập tớiGarbage collection17GC xuất hiện (ko định trước) khi ko đủ bộ nhớ để cung cấp cho ứng dụng.GC thực hiện việc tìm kiếm những đối tượng trong managed heap, xoá nếu ko còn tham chiếu tới.Có thể gọi GC một cách tường minhNamespace18Tránh xung đột tênCho phép nestTruy cập đầy đủ qua tênTất cả data type có tiếp đầu ngữ là tên namespaceNamespace CS1Class AClass BClass CNamespace CS2Class AClass BClass CCS1.ACS2.ANamespace19Hầu hết các lớp cơ sở chung của .NET đều thuộc namespace SystemLớp CS Array thuộc System → System.Array.NET đề nghị tất cả kiểu do user định nghĩa phải nằm trong 1 namespaceCustomerPersonelCompanyNameTên lớpTên namespaceNamespace20Nên phân thành 2 cấp:Công nghệ Gói phần mềm chức năngCustomerPersonelCompanyNameTên lớpTên namespaceSaleServicesManagingServicesCác lớp .NET Framework21Thư viện lớp cơ sở .NET là managed codeKhá đa dạng & đầy đủ:Cho phép kế thừa để phát triển UDBao bọc tất cả các hàm APIDễ sử dụng (khác với VC++ trước đây)Các lớp .NET Framework22Các lớp .NET bao gồm các vấn đềĐặc tính lõi cung cấp IL, kiểu dữ liệu trong CTSHỗ trợ Win GUI và controlWebForm (ASP.NET)Data Access (ADO.NET)Directory AccessFile System, registry accessNetworking and web browsing.NET attributes and reflectionWinOS accessCOM interoperabilityFramework (Base) Class LibraryThư viện nền tảng cho .NET FrameworkCác namespace cơ bản của FCL/BCL23NamespaceDescriptionSystemChứa lớp toán học, chuyển đổi dữ liệuSystem.IOCác lớp cho thao tác Input và OutputSystem.NetCác lớp liên quan đến network protocolSystem.CollectionsChức các lớp liên quan đến xử lý tập hợpSystem.DataCác lớp của ADO.NETSystem.DrawingCác lớp thực thi chức năng GUISystem.ThreadingCác lớp lập trình MultiThreadSystem.WebCác lớp liên quan đến HTTP protocolSystem.XmlCác lớp liên quan XMLFCLBCLRun .NET App from ClientRequired MS .NET Framework compatibleMS .NET Framework 2.0, 3.5Install .NET 3.5 Full Redistributable package (dotnetfx35.exe, 197MB)Windows Vista comes with .NET Framework 3.024.NET Framework X.Y.NET App.NET App.NET AppTóm tắt25.NET Framework: nền tảng cho ứng dụng mới của MSTất cả các chương trình viết bằng ngôn ngữ khác nhau (trên .NET) sẽ được chuyển về mã thống nhất MSILCho phép thực thi chéo giữa các ngôn ngữKhái niệm Managed CodeCơ chế thu gom vùng nhớ tự độngCác lớp thư viện .NET phong phú & mạnh mẽ.Namespace giúp tổ chức tốt mã nguồn26C# LanguageNgôn ngữ C#27Ngôn ngữ ra đời cùng với .NETKết hợp C++ và JavaHướng đối tượngHướng thành phầnMạnh mẽ (robust) và bền vững (durable)Anders Hejlsberg và MS team xây dựng C#Ngôn ngữ C#28Mọi thứ trong C# đều Object orientedKể cả kiểu dữ liệu cơ bảnChỉ cho phép đơn kế thừaDùng interface để khắc phụcLớp Object là cha của tất cả các lớpMọi lớp đều dẫn xuất từ Object (System.Object)Ngôn ngữ C#29Cho phép chia chương trình thành các thành phần nhỏ độc lập nhauMỗi lớp gói gọn trong một file, không cần file header như C/C++Bổ sung khái niệm namespace để gom nhóm các lớpBổ sung khái niệm "property" cho các lớpKhái niệm delegate & eventC# - mạnh mẽ & bền vững30Garbage CollectorTự động thu hồi vùng nhớ không dùngKiểm soát và xử lý ngoại lệ exceptionĐoạn mã bị lỗi sẽ không được thực thiType – safeKhông cho gán các kiểu dữ liệu khác nhauVersioningĐảm bảo sự tương thích giữa lớp con và lớp chaVai trò C# trong .NET Framework31.NET runtime sẽ phổ biến và được cài trong máy clientViệc cài đặt App C# như là tái phân phối các thành phần .NETNhiều App thương mại sẽ được cài đặt bằng C#C# tạo cơ hội cho tổ chức xây dựng các App Client/Server n-tier.Kết nối ADO.NET cho phép truy cập nhanh chóng & dễ dàng với SQL Server, OracleVai trò C# trong .NET Framework32Cách tổ chức .NET cho phép hạn chế những vấn đề phiên bảnLoại bỏ “DLL Hell”ASP.NET viết bằng C#GUI thông minhChạy nhanh hơn (đặc tính của .NET)Mã ASP.NET ko còn là mới hỗn độnKhả năng bẫy lỗi tốt, hỗ trợ mạnh trong quá trình xây dựng App Web.Quá trình dịch CT C#33Mã nguồn C# (tập tin *.cs) được biên dịch qua MSILMSIL: tập tin .exe hoặc .dllMSIL được CLR thông dịch qua mã máyDùng kỹ thuật JIT (just-in-time) để tăng tốc độQuá trình dịch CT C#34Hello.csC# CompilerHello.exehoặcHello.dllCLR trên WindowsThực thi trên WindowsCLR trên LinuxThực thi trên LinuxThực thi trên MacOSCLR trên MacOSMSILCác loại ứng dụng C#35Chương trình Console (TUI)Giao tiếp với người dùng bằng bàn phímKhông có giao diện đồ họa (GUI)Chương trình Windows FormGiao tiếp với người dùng bằng bàn phím và mouseCó giao diện đồ họa và xử lý sự kiệnChương trình Web FormKết hợp với ASP .NET, C# đóng vài trò xử lý bên dưới (underlying code)Có giao diện đồ họa và xử lý sự kiệnỨng dụng Console36UD WinForm và Web Form37Tạo UD Console38UD C# đầu tiên39// Chương trình C# đầu tiênusing System;using System.Collections.Generic;using System.Text;namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Cấu trúc chương trình C#Phần chú thích (option)Phần khai báo dùng namespace (option)Phần định nghĩa namespace và lớp40// Chương trình C# đầu tiênusing System;using System.Collections.Generic;using System.Text;namespace HelloWorld { class Program { static void Main(string[] args){ { Console.Write("Hello World!"); Console.ReadLine(); } }}Câu lệnh41Các câu lệnh được viết trong thân của phương thức (ở đây là phương thức Main)Thực hiện một công việc nào đóKết thúc bởi dấu chấm phẩy (;)namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Các câu lệnhPhương thức MainKhoảng trắng42Bao gồmKý tự trắng, ký tự xuống dòng, ký tự tabDòng trốngSử dụng hợp lý chương trình dễ đọcnamespace HelloWorld{class Program {static void Main(string[] args){ Console.Write("Hello World!"); Console.ReadLine();}}}namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Chú thích43Chú thích (comment) được dùng để giải thích về chương trình và các câu lệnhGiúp cho chương trình dễ hiểu hơnĐược bỏ qua khi biên dịchKhông ảnh hưởng tới kết quả thực thi của chương trìnhCó thể phát sinh ra documentation của chương trình qua chú thích XMLHai cách tạo chú thích cơ bản44Gõ phần chú thích sau cặp ký tự //Gõ phần chú thích giữa cặp ký tự /* và *//* Chương trình C# đầu tiên In ra câu chào "Hello World" */using System;namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); // Xuất ra câu chào Console.ReadLine(); // Chờ nhấn Enter } }}XML CommentCho phép phát sinh ra sưu liệu dạng XMLThích hợp cho việc viết sưu liệu của dự án lớnChú thích XML bắt đầu với triple slash (“///”) và các tag của XMLChú thích XML dùng choUser defined typesClass, delegate, enum and structMember of user defined types45XML Comment46using System;namespace XMLCommentDemo{ public class Temperature { public static int CelsiusToFahrenheit(int degreesCelsius) { return ((int)((9/5)*degreesCelsius) + 32); } public static int FahrenheitToCelsius(int degressFahrenheit) { return ((int)((5/9)*(degressFahrenheit - 32))); } }} C# Code without XML CommentXML CommentComment for classComment for method47 /// /// Class temperature provides functions which convert /// among various temperature scales. /// public class Temperature /// /// Converts degrees Celsius to degrees Fahrenheit /// /// Degrees Celsius /// Returns degrees Fahrenheit public static int CelsiusToFahrenheit(int degreesCelsius)XML Comment48using System;namespace XMLCommentDemo{ /// /// Class temperature provides functions which convert among various /// temperature scales. /// public class Temperature { /// /// Converts degrees Celsius to degrees Fahrenheit /// /// Degrees Celsius /// Returns degrees Fahrenheit public static int CelsiusToFahrenheit(int degreesCelsius) { return ((int)((9/5)*degreesCelsius) + 32); } /// /// Converts degrees Fahrenheit to degrees Celsius /// /// Degrees Fahrenheit /// Returns degrees Celsius public static int FahrenheitToCelsius(int degressFahrenheit) { return ((int)((5/9)*(degressFahrenheit - 32))); } }}C# Code with XML CommentPhiên bản C# & .NET49C#/.NET VersionDescriptionC# 1.0 with .NET Framework 1.0/1.1 (Visual Studio 2002 and 2003)The initial release of C#. C# 2.0 with .NET Framework 2.0 (Visual Studio 2005)Generics were added..NET Framework 3.0Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), Windows Workflow (WF), and CardSpace (web authentication).C# 3.0 with .NET Framework 3.5 (Visual Studio 2008)Added support for LINQ. C# 4.0 with .NET Framework 4.0 (Visual Studio 2010)Added support for dynamic typing.Tóm tắt50C# là một ngôn ngữ lập trình của .NETLà ngôn ngữ hiện đạiHướng đối tượng, hướng thành phầnAn toàn kiểu, mạnh mẽ, bền bỉCó ba loại chương trình C# Console, Windows Form, Web FormTạo ra một chương trình C# đơn giảnTạo một ứng dụng ConsoleViết các câu lệnh trong thân của phương thức MainTài liệu tham khảo51Professional C#, 2nd Edition, Wrox Press Ltd.A programmer’s Introduction to C#, Eric Gunnerson, Apress, 2000Programming C#, Jesse Liberty, O’Reilly, First Edition, 2001C# bible, Jeff Ferguson et al, Wiley Publishing, 2002Thinking in C#, Larry O’Brien, Bruce Eckel, Prentice Hall.Presenting C#, Sams Publishing, 2002C# Language Reference, Anders Hejlsberg and Scott Wiltamuth, Microsoft Corp.Demo52