.NET Platform Visual Studio .NET các ng d ng trên .NET Framework... .NET Framework Common Language Runtime Framework Class Library Common Language Specification... Common Language Runtim
Trang 1Chuyên ñề C#
ThS Tôn Quang To i TonQuangToai@yahoo.com
Trang 4Tài li u tham kh o {1/2}
• Anders Hejlsberg, Scott Wiltamuth, Peter Golde, “C#
Programming Language”, Addison Wesley 2003.
• Charles Petzold, “Programming in the Key of C#”,
Microsoft Press 2004
• Nagel, Bill Evjen, Jay Glynn, Morgan SkinnerandKarli
Watson, “Professional C# 2005 with NET 3.0”,
Trang 5Tài li u tham kh o {2/2}
Websites
Trang 6Gi ớ i thi ệ u Microsoft
.NET Platform
Chương 1
Trang 7N i dung
Gi i thi u NET Platform
Gi i thi u NET Framework
Nh ng thu n l i c a NET Framework
Các thành ph n c a NET Framework
Các lo i ngôn ng l p trình trên NET
Các lo i ng d ng có th vi t v i NET
Quá trình t o, biên d ch và ch y ch ng trình
Trang 8Microsoft NET Platform
Trang 9.NET Platform
NET Platform
• NET Platform là m t t p các công c và công
ngh giúp xây d ng d dàng các ng d ng Internet
M c ích c a NET Platform
Trang 10• NET Enterprise Servers
• Visual Studio NET
Trang 11.NET Platform
.NET Framework
Building Block Services
Visual Studio NET
With NET New Available
Internet
Trang 12.NET Platform
NET Framework
chung cho vi c xây d ng, tri n khai và ch y các ng d ng
– Không g n ch t vào ngôn ng – Nhi u ti n ích khác giúp cho vi c phát tri n các
ng d ng nhanh, hi u qu
Trang 13.NET Platform
• NET My Services là m t t p XML Web Service cho
phép user truy c p thông tin qua Internet Dùng các NET My Service các ng d ng có th truy n thông
tr c ti p b ng giao th c SOAP và XML
• M t s services
– NET Calendar, – NET Contacts, – NET Inbox, – NET Documents – …
Trang 14.NET Platform
• M t nhóm các s n ph m c a Microsoft M i s n
ph m trong h này ph trách m t thành ph n then
ch t cho ki n trúc ng d ng ang phát tri n
Trang 15.NET và NET Enterprise Servers
Host Integration Server
Internet
BizTalk Server
Mainframe/ Host System
Trang 16.NET Platform: Orchestration
SQL Server
Host Integration Server
Internet
.NET Applications
Mainframe/ Host System
Trang 17.NET Platform
Visual Studio NET
các ng d ng trên NET Framework
Trang 18Microsoft NET Framework
Trang 19.NET Framework
Các m c ích thi t k NET Framework
• Mô hình l p trình th ng nh t
trình)
ngh chu n: HTTP, XML, SOAP)
Trang 20Stateless, Code ñược nhúng vào các trang
HTML
MFC/ATL
Subclassing, Power, Expressiveness
VB Forms
RAD,
Composition,
Delegation
Trang 21n gi n vi c phát tri n ng d ng
HWND hwndMain = CreateWindowEx(
0, "MainWClass", "Main Window", WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL, hInstance, NULL);
ShowWindow(hwndMain, SW_SHOWDEFAULT);
UpdateWindow(hwndMain);
Form form = new Form();
form.Text = "Main Window";
form.Show();
Windows API
.NET Framework
Trang 22.NET Framework
• NET Framework 1.0 – Visual Studio 2002
• NET Framework 1.1 – Visual Studio 2003
• NET Framework 2.0 – Visual Studio 2005
• NET Framework 3.0 – Visual Studio 2005
• NET Framework 3.5 – Visual Studio 2008
Framework g m có 2 thành ph n chính:
• Common Language Runtime (CLR)
• Framework Class Library (FCL)
Trang 23.NET Framework
Common Language Runtime
Framework Class Library
Common Language Specification
Trang 24Common Language Runtime
– CLR –
Trang 25Common Language Runtime
nh ngh a
• CLR là môi tr ng th c thi cho ngôn ng chung và
các d ch v trong quá trình th c thi
• Ví d m t s d ch v CLR
– Biên d ch – Qu n lý b nh – Qu n lý thread – Qu n lý ngo i l – B o m t
– Ki m tra an toàn ki u – …
Trang 26th c l n u tiên c g i
Execution
JIT Compiler
Native Code
MSIL
Code Metadata
Source Code
Language Compiler
Trang 27Common Language Runtime
Các lo i code trong NET
Trang 28Common Language Runtime
public static void Main()
ldstr "Hello, World" // load string onto stack
// Call static System.Console.Writeline function // (function pops string from the stack)
call void [mscorlib]System.Console::WriteLine(class System.String)
// *****************************************************
ldstr "Press Enter to continue“
call void [mscorlib]System.Console::WriteLine(class System.String)
// Call the System.Console.Read function call int32 [mscorlib]System.Console::Read()
// The pop instruction removes the top element from the stack.
// (remove number returned by Read() function) pop
// *****************************************************
ret }
Trang 29Common Language Runtime
MSIL
• MSIL là t p các l nh, mã l nh c p th p do
Microsoft sáng t o ra.
OptIL
vi c sinh nhanh native code
Trang 30Native Code
Trang 31Common Language Runtime
Native Code
RunTime
Trang 32trình nh : các class, các thành viên, th a k ,
…
Trang 33Common Language Runtime
Metadata
c i m c a Metadata
• Thông tin v các ki u c a Language-neutral
Trang 34Common Language Runtime
Metadata
• Identity: name, version, culture, [public key]
• Các ki u (types) nào c export?
• Các assemblies nào mà nó ph thu c?
• Quy n b o m t nào th c thi?
Mô t các ki u
• Name, visibility, base class, các interfaces c implement
• Members (methods, fields, properties, events, các ki u l ng
Trang 35Common Language Runtime
Trang 36• Các Custom attributes có th c dùng
– Obsolete – Biên d ch cho debugging
Trang 37Common Language Runtime
Trang 38Common Language Runtime
Assembly
• Trong Microsoft NET Framework m t assembly là m t
ph n th vi n code ã c biên d ch dùng cho tri n khai
• Trong hi n th c Microsoft Window c a NET
Framework m t assembly c l u trong m t file PE (portable executable)
• Process assemblies (EXE)
• Library assemblies (DLL)
Trang 39Common Language Runtime
Assembly
Các thành ph n trong assembly
Trang 41Common Language Runtime
Assembly
M t assembly có th g m m t hay nhi u file
Các code file c g i là các modules M t
assembly có th có ch a nhi u code module
Có th dùng nhi u ngôn ng khác nhau
t o ra các code module nên v m c k thu t
có th dùng nhi u ngôn ng khác nhau
t o m t assembly
Trang 42Nhiều managed modules và
Trang 43Common Language Runtime
JIT Compiler
Trình biên d ch JIT
• Trình biên d ch JIT là trình biên d ch lúc th c thi v i nhi m
v chuy n i MSIL (assemplies) sang native code.
• JIP c l p ngôn ng l p trình
• JIT ph thu c ki n trúc CPU
• JIP biên d ch cho m i ph ng th c l n u tiên ch y
• Native code c l u l i dùng l i sau này
CLR cung c p 3 trình biên d ch JIT chuy n MSIL sang native
code:
• EconoJIT
• JIT
• optJIT
Trang 44Small OptIL only
OptJIT
(not in V1)
High Moderate
Medium to Large MSIL (incl OptIL)
JIT
Low Very Fast
Very Small MSIL (incl OptIL)
EconoJIT
Quality of Output
Compilation
Speed
JIT Compiler Overhead Input Language
JIT Compiler
Trang 45Common Language Runtime
Base Class Library Support
IL to Native Compilers
Code Manager
Garbage Collector
Trang 46Common Language Runtime – CLR {2}
The CLR cung cấp các dịch vụ sau:
• Qu n lý code
• Xác th c ki u an toàn trong MSIL
• Chuy n i MSIL sang native code
• N p và th c thi code c qu n lý (MSIL or native)
Trang 47Common Language Runtime – CLR {7}
Trang 48.NET Framework Class Library
– FCL –
Trang 49.NET Framework Class Library
Framework Class Library – FCL: M t t p th
vi n l p trong NET
Net Framework thay th ph n l n (m c dù
không ph i t t c ) các t p Windows API b ng
th vi n l p h ng i t ng và c qu n
lý t t
Trang 50System.Reflection System.Net System
System.Threading System.Text System.Security System.Runtime.
InteropServices
Trang 51• H tr xây d ng các ng d ng web (thin client).
• H tr xây d ng các ng d ng desktop (thick client)
• H tr xây d ng các ng d ng XML web service
Trang 53System.Xml
Trang 54Services Description Discovery Protocols
UI HtmlControls WebControls
Trang 55User Interface cho Windows
System.Drawing System.Windows.Forms
Trang 56C# (C-Sharp) – c thi t k cho NET
Ngôn ng ng thành ph n m i (component-oriented)
C++ NET
Các m r ng code c qu n lý cho C++
Visual Basic NET
Version m i c a Visual Basic, có nhi u i m i
Trang 57Các ngôn ng trong NET Framework
Ngôn ng hãng th ba (Third-party)
• APL, COBOL, Pascal, Eiffel, Haskell, ML,
Oberon, Perl, Python, Scheme, Smalltalk…
Trang 58Các lo ạ i ứ ng d ụ ng có th ể
vi ế t v ớ i NET
Trang 59• Windows control library
• Web control library
Trang 60Vi t mã ngu n b ng 1 trong các ngôn ng
c NET h tr (C#/ VB.NET, …)
D ch mã ngu n sang file *.dll hay *.exe ch a
mã trung gian b ng ch ng trình csc.exe
Khi ch ng trình c ch y trong CLR, JIT
s d ch các mã trung gian sang native code
và th c thi
Native code c th c thi trong ng c nh
c a CLR
Trang 61Visual Studio NET
Trang 62Các phiên b n Visual Studio NET
Visual Studio NET 2003
• Professional, Enterprise Developer, Enterprise Architect, và Academic
Visual Studio 2005 Editions
• Visual Studio 2005 Express Editions
• Visual Studio 2005 Standard Edition
• Visual Studio 2005 Professional Edition
• Visual Studio 2005 Team Edition for Software Architects
• Visual Studio 2005 Team Edition for Software Developers
• Visual Studio 2005 Team Edition for Software Testers
• Visual Studio 2005 Team Foundation Server
• Visual Studio 2005 Team Suite
Visual Studio 2008 Editions
• Visual Studio 2008 Express Editions
• Visual Studio 2008 Professional Edition
• Visual Studio Team System 2008 Development Edition
• Visual Studio Team System 2008 Database Edition
• Visual Studio Team System 2008 Architecture Edition
• Visual Studio Team System 2008 Test Edition
• Visual Studio Team System 2008 Team Foundation Server
• Visual Studio Team System 2008 Team Suite
Trang 63Visual Studio NET 2008
• Processor: 2 Ghz
• RAM: 512 MB
• Operating System:
– Windows XP SP2 – Windows 2003
Trang 64Solutions và Projects
trong NET
Trang 65Giúp t ch c và thi hành trên các item chúng ta
ang phát tri n
Visual Studio.NET projects c dùng nh
b ch a bên trong m t solution qu n lý,
build và debug các item trong ng d ng
Trang 66Solutions
M t solution là m t b ch a các
projects và các các solution items
s c build vào trong ng d ng.
M t solution th ng ch a m t
hay nhi u project có liên quan.
Trang 69Thi t l p các Project References
NET Assemblies
COM Components
Projects
Trang 71Ti n trình th c thi trong NET
Class Loader
JIT Compiler with optional verification
Execution Security Checks
EXE/DLL (MSIL and metadata)
Call to an uncompiled method
Runtime Engine
Managed Native Code
Compiler Source
Code
Trang 72Dynamic Help
Editor/Browser
Properties Server
Explorer
Object Browser
Trang 73Mô t Integrated Development Environment
Ch có m t IDE cho m i NET Projects
Các Projects có th ch a nhi u ngôn ng l p
trình
• Ví d : Visual Basic NET và C# trong cùng
project
IDE có th tùy bi n qua “My Profile”
IDE có s n Internet Browser
Trang 75• Folders ch a subitems
Files”
• Drag-and-drop
Trang 77Dùng the Object Browser
Objects và các thành viên
Lower-level Items
• Hi n các inheritance
và interfaces
nào các th vi n
l p NET Framework dùng
Method Library
Trang 78Dùng the Task List
T ng t Tasks Feature trong Microsoft Outlook
c l u v i Solution trong file.suo
Thêm vào Task List
• Có th thêm tasks b ng tay b ng cách ánh vào field thích h p
• Visual Basic NET thêm build errors, upgrade comments, etc
• Có th dùng token strings thêm comments trong code
Trang 81Recording và dùng Macros
Có th dùng các Macros cho các nhi m
v l p i l p l i nh chèn Comments
Macro Explorer cung
c p Macro Navigation
IDE cung c p các m u:
• Toggle line numbering
• Saving/loading Window Views
• Debugging macros
ghi Macros m i, Vào Tools/Macros
Trang 82• - L p trinh Windows Form, ASP.NET, ADO.NET, NET
Remoting, XML Web Service, Windows Service, GDI+
• - T i u hóa code
• - C u trúc file assembly
• Visual Studio NET
• -
Trang 83Câu h i Ôn t p
1 Gi i thích các khái ni m m i (và ý ngh a các t vi t t t): Net Platform, Net
Framework, CLR, FCL, IL, Metadata, Assembly, JIT, GC
2 Li t kê các ph n t chính c a NET Platform
3 Nêu tên hai ph n chính c a NET Framework
4 Li t kê m t s ngôn ng c h tr trong NET Framework
5 Li t kê các phiên b n NET Framework, C#, Visual Studio.NET
6 Chúng ta g i code th c thi trong Common Language Runtime là gì
7 Gi i thích quy trình biên d ch và th c thi ng d ng trong NET
8 Có bao nhi u cách d ch MSIL sang native code
9 Cho bi t m t s n v ADO.NET
10 Cho bi t m t s n v ASP.NET
11 Cho bi t m t s n v l p trình Windows Form
12 Li t kê m t s ng d ng có th vi t trên NET
13 Khái ni m solution, project trong Visual Studio.NET
14 Thao tác dùng Project References
15 Sau khi t o assembly th c thi assembly trên m t h th ng khác c n có yêu
c u gì
16.
Trang 84Bài t p
1 Cài t Visual Studio.NET 2005 hay 2008
2 S d ng Visual Studio.NET t o blank solution và thêm m t s project m i
vào solution Th c thi t ng lo i project ã thêm
3 Cài t SQL Server 2005 hay 2008
4 Tìm hi u các thao tác c b n trên SQL Server 2005 hay 2008
5 Tìm n i l u tr trình biên d ch cho ngôn ng C#, Visual Basic.NET sau khi cài
t Visual Studio.NET
6 B1: Dùng ch ng trình Visual Studio.Net vi t ch ng trình xu t dòng ch
“Hello World” lên màn hình console
B2: Tìm ch ng trình MSIL Disassembler (ildasm.exe) Dùng ch ng trình
này xem mã MSIL c a file PE trong B1 và ày sang file *.IL
B3: Tìm ch ng trình MSIL Assembler (ilasm.exe) Dùng ch ng trình này
chuy n file ch a MSIL trong B2 sang l i file PE
7 Tìm ch ng trình Native Image Generator (Ngen.exe) Dùng ch ng trình
này chuy n MSIL sang native code
8 Vào trang http://msdn.microsoft.com/en-us/library/d9kh6s92.aspx xem các
.NET Framework tools