Bui 1 Gii thiu Lp trnh Windows trn
Buổi 1 Giới thiệu Lập trình Windows trên. Net Giới thiệu về WPF - XAML Trần Minh Thái 1
Mục tiêu • Giới thiệu. NET • Các loại ngôn ngữ lập trình trên. NET • Các loại ứng dụng trên. NET • Môi trường phát triển ứng dụng • Giới thiệu công nghệ lập trình ứng dụng WPF • Ngôn ngữ định nghĩa giao diện XAML • Chương trình mẫu đầu tiên 2 2
Giới thiệu. NET
. 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 • Đơn giản hóa việc phát triển các ứng dụng trong môi trường phân bố của Internet 4 4
. NET Platform • Các thành phần của. NET Platform • . NET Framework • . NET My Services • . NET Enterprise Servers • Visual Studio. NET 5
. NET Framework Môi trường chung cho việc xây dựng, triển khai và thực thi các ứng dụng • Không gắn chặt vào hệ điều hành • 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ả hơn 6
. NET My Services • 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 • … 7
. NET Enterprise Servers • Một nhóm các sản phẩm của Microsoft • Mỗi sản phẩm 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 • Một số sản phẩm • Microsoft SQL Server • Microsoft Biztalk Server • Microsoft Host integration Server • … 8
. Visual Studio. NET Là môi trường tích hợp để xây dựng các ứng dụng trên. NET Framework. 9
Microsoft. NET Framework
. Net Framework • Mô hình lập trình thống nhất • Đơn giản việc phát triển ứng dụng • Môi trường thực thi code an toàn • Độc lập ngôn ngữ (hỗ trợ nhiều ngôn ngữ lập trình) • Hỗ trợ XML Web Service (Dựa trên các công nghệ chuẩn: HTTP, XML, SOAP) 11
Mô hình lập trình thống nhất API nhất quán bất chấp ngôn ngữ và mô hình lập trình . NET Framework RAD, Composition, Delegation VB Forms Subclassing, Power, Expressiveness MFC/ATL Windows API Stateless, Code được nhúng vào các trang HTML ASP 12
Đơn giản việc phát triển ứng dụng Windows API HWND hwnd. Main = Create. Window. Ex( 0, "Main. WClass", "Main Window", WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL, h. Instance, NULL); Show. Window(hwnd. Main, SW_SHOWDEFAULT); Update. Window(hwnd. Main); . NET Framework Form form = new Form(); form. Text = "Main Window"; form. Show(); 13
. NET Framework • Các phiên bản. 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. 5 – Visual Studio 2008 • . NET Framework 4. 0 – Visual Studio 2010 • . NET Framework 4. 5 – Visual Studio 2012 • . NET Framework 4. 5 – Visual Studio 2013 • . NET Framework 4. 6 – Visual Studio 2015 • Gồm có 2 thành phần chính • Common Language Runtime (CLR) • Framework Class Library (FCL) 14
15
. NET Framework C++ C# Microsoft JScript® … . NET Framework Common Language Specification Framework Class Library Common Language Runtime Windows LINUX Microsoft Visual Studio®. NET Microsoft Visual Basic®. NET 16
Common Language Runtime – CLR –
Common Language Runtime Base Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine IL to Native Compilers Code Manager Class Loader Garbage Collector 18
Common Language Runtime – CLR 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 • 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 • … 19
Common Language Runtime Compilation Source Code Language Compiler Execution Native Code JIT Compiler Code MSIL Metadata Trước khi installation hay khi mỗi phương thức lần đầu tiên được gọi 20
Common Language Runtime • Các loại code trong. NET • Source code • MSIL • Opt. IL • Native machine code (mã máy thuần túy) 21
Common Language Runtime public static void Main() { Console. Write. Line("Hello, World); } . method static public void Main(string[] args ) il managed {. entrypoint // this function is the application entry point. maxstack 8 // *************************** // Console. Write. Line("Hello, World)"; // *************************** ldstr "Hello, World" // load string onto stack // Call static System. Console. Writeline function // (function pops string from the stack) call void [mscorlib]System. Console: : Write. Line(class System. String) // *************************** ldstr "Press Enter to continue“ call void [mscorlib]System. Console: : Write. Line(class System. String) // Call the System. Console. Read function call int 32 [mscorlib]System. Console: : Read() // The pop instruction removes the top element from the stack. // (remove number returned by Read() function) pop // *************************** ret } 22
Common Language Runtime • MSIL là tập các lệnh, mã lệnh cấp thấp do Microsoft sáng tạo ra. • Các source code được viết bằng nhiều loại ngôn ngữ khác nhau đều phải dịch sang MSIL • Opt. IL là tập con của MSIL có thể được sinh bằng trình biên dịch tối ưu. Opt. IL giúp cho việc sinh nhanh native code 23
Common Language Runtime C# Code C# Compiler Run. Time Visual Basic Code Visual Basic Compiler JIT Compiler COBOL Code COBOL Compiler IL Native Code 24
Common Language Runtime Assembly • Là một phần thư viện code đã được biên dịch để dùng cho triển khai • Được lưu trong một file PE (portable executable) • Phân loại • Process assemblies (EXE) • Library assemblies (DLL) 25
Common Language Runtime Assembly • Các thành phần trong assembly 26
Common Language Runtime Assembly • Một assemply chứa nhiều file 27
Common 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 28
Common Language Runtime Assembly Managed Module (MSIL và Metadata) Assembly Manifest IL Code Metadata . html. gif Resource Files Nhiều managed modules và resource files Được biên dịch Thành một assembly 29
Common Language Runtime Just In Time (JIT) Compiler • 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 • Đặc điểm cơ bản của JIT • JIP độc lập ngôn ngữ lập trình • JIT phụ thuộc kiến trúc CPU • JIT 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 30
Common Language Runtime Base Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine IL to Native Compilers Code Manager Garbage Collector Class Loader 31
Common Language Runtime • Garbage collector – GC: định vị, cấp phát bộ nhớ, giải phóng tự động các vùng nhớ khi không cần thiết • Mã quản lý – Mã không quản lý: • Bất kỳ mã chương trình nào được thiết kế để thực thi trong CLR được gọi là mã quản lý • Những mã khác chạy ngoài. NET gọi là mã không quản lý 32
. NET Framework Class Library – FCL –
. NET Framework Class Library • Một tập thư viện lớp trong. NET • . Net Framework thay thế phần lớn 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 System. Security System. Runtime. Interop. Services System. Net System. Text System. Globalization System. Reflection System. Threading System. Configuration System. IO System. Diagnostics System. Collections 34
. NET Framework Class Library Phân loại • Hỗ trợ chức năng chính: tương tác với các kiểu dữ liệu cơ bản và collection; console, network và file I/O; và tương tác dễ dàng với các runtime • Hỗ trợ tương tác cơ sở dữ liệu; dùng và sinh dữ liệu XML; và cấu trúc dữ liệu • 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 35
. Net Framework Class Library - FCL 36
37
Web Forms và XML Web Services ASP. NET System. Web Services Description UI Html. Controls Discovery Web. Controls Protocols Caching Security Configuration Session. State 38
User Interface cho Windows System. Windows. Forms System. Drawing 39
Các ngôn ngữ trong. NET Framework • C# (C-Sharp) – được thiết kế cho. NET Ngôn ngữ hướng thành phần (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 • JScript. NET Version mới của Jscript, tăng cường sự thực thi • J#. NET Ngôn ngữ Java cho. NET • F#. NET Ngôn ngữ lập trình hàm cho. NET 40
Cá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… 41
Các loại ứng dụng có thể viết với. NET
Các loại ứng dụng • Desktop application • Windows Form • Console Application • Web application (ASP. NET) • Services • ASP. NET Web service • Windows Service • Library • Class library • Windows control library • Web control library 43
Các bước phát triển ứng dụng • Viế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 44
Các bước phát triển ứng dụng bằng C# 45
Solutions và Projects trong. NET
Các phiên bản của Visual Studio. Net Supported. NET Version Product name Framework number of cl. exe versions Visual Studio 97 5. 0 N/A Visual Studio 6. 0 12. 00 N/A Visual Studio. NET (2002) 7. 0 13. 00 1. 0 Release date February 1997 June 1998 February 13, 2002 Visual Studio. NET 2003 7. 1 13. 10 1. 1 April 24, 2003 Visual Studio 2005 8. 0 14. 00 2. 0, 3. 0 November 7, 2005 Visual Studio 2008 9. 0 15. 00 2. 0, 3. 5 November 19, 2007 Visual Studio 2010 10. 0 16. 00 2. 0 – 4. 0 April 12, 2010 Visual Studio 2012 11. 0 17. 00 2. 0 – 4. 5. 2 September 12, 2012 Visual Studio 2013 Visual Studio 2015 Visual Studio 2017 12. 0 14. 0 15. 0 18. 00 19. 10 2. 0 – 4. 5. 2 October 17, 2013 2. 0 – 4. 6 July 20, 2015 2. 0 – 4. 6. 2; Core 1. 0 TBA 47
Project Visual. Net • Giúp tổ chức và thi hành trên các item chúng ta đang phát triển để quản lý, build và debug các item trong ứng dụng • Bao gồm: • Project files • Ressource files • Các định nghĩa lược đồ Dataset (Dataset schema) • Icons và bitmaps • Output của project thường là chương trình thực thi (. exe), file thư viện liên kết động (. dll) hay module 48
Solution trong Visual. Net • Chứa các projects và 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 49
Tạo Project trong. Net • Chọn một Project Template • Thiết lập các Project References • Viết code • Build Projects và Solutions 50
Chọn Project Template • Windows Application • Console Application • Class Library • Windows Control Library • Windows Service • ASP. NET Web Application / Service / Control Library • … 51
Thiết lập các Project References • . NET Assemblies • COM Components • Projects 52
Build Projects và Solutions 1 3 2 53
Tiến trình thực thi trong. NET Class Libraries (MSIL and metadat a) Trusted, pre-JITed code only Class Loader JIT Compiler with optional verificatio n Managed Native Code EXE/DLL (MSIL and metadat a) Compil er Source Code Call to an uncompiled method Execution Security Checks Runtime Engine 54
Integrated Development Environment 55
Mô 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 56
Dùng Integrated Development Environment • Dùng Solution Explorer • Dùng Server Explorer • Dùng Object Browser • Dùng Task List • Dùng XML Features • Dùng Intellisense • Recording và dùng Macros 57
Dùng Solution Explorer • Hệ thống phân cấp Project • Project references • Forms, classes, modules • Folders chứa subitems • Chế độ “Show All Files” • Thao tác Projects • Drag-and-drop Context menus 58
Dùng Server Explorer • Quản lý Data Connections • Xem và quản lý Servers • Dùng kỹ thuật Drag-and. Drop 59
Dùng the Object Browser • Kiểm tra các Objects và các thành viên • Truy cập các Lowerlevel Items • Hiện các inheritance và interfaces • Kiểm tra làm thế nào các thư viện lớp. NET Framework dùng 60
Dù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 61
Dùng XML Features • Cửa sổ phác thảo tài liệu HTML và XML • Auto. Complete • Color-Coding • Data View cho thao tác dữ liệu 62
Dùng Intellisense • Cho phép truy cập dễ dàng vào Properties, Methods và Events • Auto. Complete • Color-Coding 63
Recording và dùng Macros • Cài đặt https: //marketplace. visualstudio. com/items? item. Name=Visual Studio. Platform. Team. Macrosfor. Visual. Studio • 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 Menu 64
Giới thiệu về WPF và XAML
Vấn đề giao diện người dùng • Giao diện người dùng trực quan chiếm vị trí hết sức quan trọng • Việc trình diễn đúng thông tin, theo đúng cách và vào đúng thời điểm có thể đem lại những giá trị kinh tế xã hội đáng kể • Giao diện người dùng cần tích hợp đồ họa, media, văn bản và các thành phần trực quan khác như một thể thống nhất đóng vai trò mấu chốt 66
Các khó khăn 1. Lập trình viên phải có khả năng sử dụng tốt nhiều công nghệ khác nhau được sử dụng để làm việc với hình ảnh âm thanh và video 2. Đòi hỏi phải có bộ phận thiết kế giao diện chuyên nghiệp. Sự phối hợp giữa người thiết kế và người lập trình 3. Ứng dụng Windows riêng biệt trên máy desktop và trên trình duyệt đòi hỏi phải xây dựng hai phiên bản độc lập sử dụng hai công nghệ khác nhau WPF là giải pháp để giải quyết các khó khăn trên 67
WPF - Windows Presentation Foundation • Hệ thống API mới hỗ trợ việc xây dựng giao diện đồ hoạ trên nền Windows • Được xem như thế hệ kế tiếp của Win. Forms, WPF tăng cường khả năng lập trình giao diện của lập trình viên bằng cách cung cấp các API cho phép tận dụng những lợi thế về đa phương tiện hiện đại • Là một thành phần trong. NET Framework 3. 0, WPF sẵn có trong Windows Vista và Windows Server 2008. Đồng thời, WPF cũng có thể hoạt động trên nền Windows XP Service Pack 2 hoặc mới hơn, và cả Windows Server 2003. 68
WPF - Windows Presentation Foundation Mục tiêu? 1. Cung cấp một nền tảng thống nhất để xây dựng giao diện người dùng 2. Cho phép người lập trình và người thiết kế giao diện làm việc cùng nhau một cách dễ dàng 3. Cung cấp một công nghệ chung để xây dựng giao diện người dùng trên cả Windows và trình duyệt Web 69
(1) Nền tảng thống nhất xây dựng giao diện Windows PDF Forms Windows Forms/ Media Direct 3 D WPF GDI+ Player Giao diện đồ họa x x On-screen văn bản x x Fixed-format văn bản Hình ảnh x x x Video và âm thanh Đồ họa 2 chiều Đồ họa 3 chiều x x x x 70
(2) Người lập trình và người thiết kế giao diện làm việc cùng nhau Ngôn ngữ đặc tả e. Xtensible Application Markup Language (XAML): một tập các phần tử XML nhằm định nghĩa các đối tượng đồ họa cho phép mô tả chính xác giao diện người dùng 71
(2) Người lập trình và người thiết kế giao diện làm việc cùng nhau Các phần tử XAML cũng chứa các thuộc tính, cho phép thiết lập nhiều tính chất khác nhau của đối tượng đồ họa tương ứng <Button Background="Red">No</Button> Thay cho code C# Button btn = new Button(); btn. Background = Brushes. Red; btn. Content = "No"; 72
Công nghệ chung cho Windows và Web • Lập trình viên có thể tạo ra một ứng dụng trình duyệt XAML (XBAP) sử dụng WPF chạy trên Internet Explore • Cùng đoạn code này có thể được dùng để sinh ứng dụng WPF chạy độc lập trên Windows 73
Các thành phần trong WPF
Ứng dụng WPF điển hình bao giờ cũng gồm một tập các trang XAML và phần code tương ứng được viết bằng C# hoặc Visual Basic, còn gọi là các file code-behind. Tất cả các ứng dụng đều kế thừa từ lớp chuẩn Application của WPF
(1) Layout và control • Sắp đặt các thành phần khác nhau trên giao diện, ứng dụng WPF sử dụng panel. • Mỗi panel có thể chứa các thành phần con, bao gồm các control như nút bấm hay hộp thoại, hay những panel khác. • Những loại panel khác nhau cho phép sắp xếp thành phần con theo những cách khác nhau. 76 76
(2) Style và Template • Giống như sử dụng Cascading Style Sheets (CSS) trong HTML: giúp cho việc định ra thuộc tính đồ họa cho các đối tượng giao diện một lần, rồi sau đó áp dụng lại cho các đối tượng khác cùng loại • WPF cũng cung cấp tính năng tương tự bằng việc sử dụng thành phần Style/ Template của XAML 77
(3) Text • Tăng chất lượng text hiển thị trên màn hình tương đương trên giấy in. • WPF hỗ trợ các font chữ Open. Type chuẩn, cho phép sử dụng các thư viện font đã có • WPF cũng hỗ trợ công nghệ font chữ mới Clear. Type, cho phép hiển thị các ký tự mịn hơn đối với mắt người, đặc biệt là trên màn hình LCD 78
(4) Document • WPF hỗ trợ ba dạng văn bản: văn bản cố định (fixed), văn bản thích nghi (flow/adaptive) và văn bản XPS (XML Paper Specification) • WPF cũng cung cấp các dịch vụ để tạo, xem, quản lý, ghi chú, đóng gói và in ấn văn bản 79
(5) Hình ảnh • Trong WPF, hình ảnh được hiển thị nhờ control Image • Control Image có thể hiển thị hình ảnh lưu trữ dưới nhiều định dạng khác nhau: JPEG, BMP, TIFF, GIF, PNG và Windows Media Photo. • WPF sử dụng Windows Imaging Component (WIC) để tạo ra hình ảnh. WIC cũng cung cấp một nền tảng chung để bổ sung codec khác. 80
(6) m thanh và Video • WPF cung cấp tính năng hỗ trợ cả hai dạng media này thông qua phần tử Media. Element • Control này có thể chơi các định dạng video WMV, MPEG và AVI, và nhiều định dạng âm thanh khác nhau 81
(7) Đồ họa 2 D và 3 D • Đồ họa 2 D trên Windows dựa trên Graphics Device Interface (GDI) và GDI+ • Đồ họa 3 D trên Windows dựa trên công nghệ hoàn toàn biệt lập là Direct 3 D • Cả đồ họa 2 D và 3 D đều có thể được tạo ra trực tiếp trong XAML hoặc trong code sử dụng thư viện WPF tương ứng 82
(8) Kết nối dữ liệu • Việc lưu trữ và truy xuất dữ liệu đã được thực hiện bởi các công nghệ như Microsoft SQL Server và ADO. NET • WPF cung cấp một cơ chế kết nối dữ liệu để thực hiện tự động. Phần nhân là lớp Binding làm nhiệm vụ liên kết control trên giao diện (target) với đối tượng quản lý dữ liệu (source) 83
Công cụ phát triển WPF
Công cụ phát triển WPF • Microsoft cung cấp một môi trường phát triển ứng dụng (IDE) rất mạnh là Visual Studio • Ngoài ra cùng với Visual Studio còn có phần mềm Blend for Visual Studio 2017, với thiết giao diện XAML chuyên nghiệp hơn Visual Studio, có thể lập trình thiết kế giao diện và dùng môi trường Visual Studio để viết mã xử lý 85
Tạo ứng dụng WPF Tạo mới 1 project tên Sample. WPF 86
File App. xaml Cho biết View (cửa sổ - giao diện) nào được khởi chạy đầu tiên khi ứng dụng bắt đầu làm việc <Application x: Class="Sample. WPF. App" xmlns="http: //schemas. microsoft. com/winfx/2006/xaml/presentation" xmlns: x="http: //schemas. microsoft. com/winfx/2006/xaml" xmlns: local="clr-namespace: Sample. WPF" Startup. Uri="Main. Window. xaml"> <Application. Resources> </Application> 88 88
File Main. Window. xaml <Window x: Class="Sample. WPF. Main. Window" xmlns="http: //schemas. microsoft. com/winfx/2006/xaml/presentation" xmlns: x="http: //schemas. microsoft. com/winfx/2006/xaml" xmlns: d="http: //schemas. microsoft. com/expression/blend/2008" xmlns: mc="http: //schemas. openxmlformats. org/markup-compatibility/2006" xmlns: local="clr-namespace: Sample. WPF" mc: Ignorable="d" Title="Main. Window" Height="350" Width="525"> <Grid> </Window> 89
Câ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 90
Câu hỏi Ôn tập 9. Cho biết một số thư viện về ADO. NET 10. Cho biết một số thư viện về ASP. NET 11. Cho biết một số thư việ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. WPF là gì? 17. Mục tiêu cơ bản của WPF 18. XAML là gì? 19. Trong WPF, phần giao diện người dùng có thể viết bằng gì? 20. Trong WPF, việc xử lý sự kiện có thể viết bằng gì? 91
Q&A 92 92
- Slides: 92