WPF (Windows Presentation Foundation) là thư viện lập
trình giao diện đồ họa có trong Microsoft .NET Framework từ phiên bản
3.0. Được xây dựng trên nền Direct3D, WPF phát huy tối đa sức mạnh xử lý
của card đồ họa, hỗ trợ các cải tiến về giao diện trong Windows Vista,
Windows 7 và độc lập với mọi độ phân giải của màn hình. WPF kế thừa và
mở rộng các đặc trưng phát triển ứng dụng bao gồm: ngôn ngữ đánh dấu ứng
dụng mở rộng (Extensible Application Markup Language - XAML), các điều
khiển (control), tác hợp dữ liệu (data binding), bố cục, đồ họa 2D và
3D, hoạt hình, kiểu dáng (style), mẫu (template), tài liệu, đa phương
tiện (âm thanh, hình ảnh), văn bản và in ấn. Ứng dụng WPF có thể được
biên dịch để chạy trên desktop hoặc thông qua trình duyệt web phổ biến
như IE, Firefox, Safari. Do đó WPF không chỉ dành cho các ứng dụng
desktop, nó còn cho phép phát triển các ứng dụng web phong phú (Rich
Internet Application – RIA). Ngoài ra WPF cung cấp một mô hình lập trình
nhất quán cho việc phát triển ứng dụng và cung cấp sự tách biệt rõ ràng
giữa giao diện người dùng và logic nghiệp vụ.
Nền tảng thống nhất để
xây dựng giao diện
|
Thực tế cho thấy các ứng dụng desktop vẫn được phát
triển mạnh mẽ vì tính sẵn dùng, bảo lưu trạng thái giữa các giao dịch,
độ tin cậy, bảo mật dữ liệu và khả năng phát huy tối đa hiệu suất của
phần cứng.
Trước WPF, xây dựng một ứng dụng Windows với nhiều
yêu cầu phức tạp đòi hỏi sử dụng nhiều công nghệ khác nhau (Xem Bảng đối
chiếu các công nghệ hiện có trong WPF).
Để tạo ra ứng dụng với các Form và Control, lập trình
viên thường chọn Windows Forms. Tuy nhiên nếu ứng dụng đòi hỏi một số
tính năng riêng biệt như: hình ảnh 2 chiều, 3 chiều, đa phương tiện…,
chúng ta cần thêm các thư viện GDI+, Windows Media Player, DirectX...
Điều này trở nên phức tạp và rắc rối, khó bảo trì. Trong khi chúng ta có
thể sử dụng WPF để phát triển ứng dụng đáp ứng được tất cả các yêu cầu
trên. Vậy tại sao không sử dụng một nền tảng công nghệ duy nhất để xây
dựng ứng dụng giao diện người dùng, hơn là sử dụng nhiều công nghệ riêng
biệt.
|
Cộng tác hiệu quả
WPF sử dụng XAML để thể hiện giao diện. XAML định
nghĩa một tập các thành phần XML như Button, TextBox, Label… để xác định
cách thức hiển thị của các control trên giao diện. Rõ ràng, việc mô tả
giao diện dưới dạng XML sẽ dễ dàng hơn so với mã lệnh (code) (Xem hình
1).
Hình 2: Data template |
Ngoài ra XAML có thể sửa đổi bằng rất nhiều công cụ
phát triển như Visual Studio, Expression Blend, XAMLPad... Do đó WPF cho
phép các thành viên của đội phát triển và thiết kế có thể làm việc với
nhau trên cùng một file mà không cần phải thông qua một file ảnh tĩnh
như trước đây. Theo cách này, nhà thiết kế xây dựng các giao diện phức
tạp bằng Expression Blend. Toàn bộ thiết kế sẽ được công cụ sinh ra các
thể hiện dưới dạng XAML. Nhà phát triển chỉ việc sử dụng các đoạn mã
XAML này với công cụ như Visual Studio 2008 để viết các xử lý logic cho
ứng dụng, mà không cần phải thiết kế lại.
Công nghệ web cho ứng
dụng desktop
WPF cho phép thay đổi giao diện ứng dụng một cách dễ
dàng và tùy ý thông qua các template. Chúng ta có thể định nghĩa lại
cách hiển thị truyền thống của các control, cũng như cách mà một đối
tượng được hiển thị trên giao diện (Xem hình 2).
WPF tạo ra sự đột phá trong việc thể hiện giao diện
một cách hiện đại và thông minh bằng style. Style trong WPF giống như
CSS trong HTML nhưng nhiều tính năng và rõ ràng hơn. Với việc hỗ trợ
style, các ứng dụng WPF dễ dàng được làm mới hình thức, kiểu dáng mà
không phải thay đổi mã lệnh, không phải biên dịch lại. Bởi lẽ WPF quản
lý style thông qua những thuộc tính được định nghĩa trong XAML (Xem hình
3 và 4).
Công nghệ desktop cho
web
|
Với WPF, chúng ta có thể tạo ra các ứng dụng cho cả
Windows và web. WPF sử dụng XBAP (XAML browser application) để tạo ra
những ứng dụng có thể thực thi bên trong trình duyệt. Những ứng dụng này
kết hợp các đặc trưng của cả ứng dụng web và desktop. Nó có thể được
triển khai trên một máy chủ web và được thực thi thông qua trình duyệt
web. Các ứng dụng XBAP hỗ trợ nhiều trình duyệt khác nhau như IE,
Firefox. Giống như phát triển các ứng dụng desktop, XBAP thúc đẩy các
điểm mạnh của WPF, và mang những lợi ích của các công nghệ desktop lên
môi trường web(Xem hình 5).
Tuy nhiên, việc thực thi XBAP yêu cầu phải cài đặt
.NET Framework 3.0 trên hệ thống hoặc Silverlight. Silverlight là một
thành phần mở rộng của WPF. Thực tế nó được đặt với một cái tên khác là
WPF/E (WPF/Everywhere). Do đó lập trình viên có thể dễ dàng chuyển đổi
giữa WPF client và Silverlight. Các ứng dụng Silverligtht giống như
XBAP, được thực thi thông qua trình duyệt web. Nó là một thành phần gắn
bên trong của trình duyệt, hỗ trợ đa nền tảng do đó có thể sử dụng ở bất
kỳ môi trường hệ điều hành nào.
Hỗ trợ hiển thị, in ấn
Hình 4: Style trong WPF |
Khi tạo giao diện cho ứng dụng, chúng ta sắp xếp các
control theo vị trí và kích cỡ của chúng trên khuôn bố cục của ứng dụng.
Một yêu cầu chủ chốt với hầu hết các ứng dụng là tính tương thích với
các thay đổi về kích cỡ và độ phân giải của màn hình. Việc triển khai
yêu cầu này thực sự trở thành vấn đề đối với Windows Forms. Tuy nhiên,
điều này trở nên dễ dàng hơn với WPF. Các control trong WPF được xử lý
một cách tự động để có thể tương thích với mọi độ phân giải của màn
hình. Hình ảnh được phóng to, thu nhỏ một cách dễ dàng mà không gặp phải
vấn đề như vỡ khung hình đối với Windows Forms (Xem hình 6).
Ngoài ra, những yêu cầu về trình bày văn bản, tài
liệu và in ấn là không thể thiếu đối với các ứng dụng nghiệp vụ. Văn bản
trong WPF được xử lý và hiển thị sử dụng Microsoft ClearType, khiến
chúng trở nên rõ ràng và dễ đọc hơn. Với tài liệu, WPF cung cấp khả năng
xử lý linh hoạt tùy thuộc vào mục đích sử dụng của chúng. Nội dung hiển
thị được tối ưu hóa; toàn bộ nội dung được tự động điều chỉnh sao cho
phù hợp với kích thước màn hình, độ phân giải của thiết bị cũng như ý
muốn của người dùng. Ngược lại, nội dung in ấn được thiết kế độc lập với
các thiết bị hiển thị và in ấn. Cấu trúc của trang in luôn luôn thống
nhất theo thiết kế của người dùng trong mọi trường hợp, đồng thời tận
dụng tối đa chất lượng của thiết bị in. WPF cung cấp sẵn bộ thư viện cho
việc quản lý và thực hiện in. Nó cho phép tự động cài đặt, điều khiển,
tìm kiếm và thiết lập các lựa chọn in ấn của máy.
Giảm thiểu số dòng lệnh
|
Hầu hết các ứng dụng cung cấp cho người dùng khả năng
truy cập dữ liệu, xem và sửa đổi. Thông thường yêu cầu này được thực
hiện thông qua các bước gồm:
- Sao chép dữ liệu từ các đối tượng được quản lý lên
các control để có thể hiển thị và thay đổi chúng.
- Đảm bảo những thay đổi dữ liệu trên các control
được sao chép ngược trở lại các đối tượng được quản lý.
Công việc xử lý logic cho giao diện như vậy chiếm
thời gian và số lượng mã lệnh đáng kể của các ứng dụng ngày nay.
Với WPF quá trình này được thực thi một cách tự động
thông qua cơ chế tác hợp dữ liệu.
Lấy ví dụ để thực hiện đưa dữ liệu về một Person lên
form:
Phía giao diện trước đây: Là một loạt các đoạn mã để
khởi tạo giao diện cho các control.
Phía mã thực thi trước đây:
Person person = new
Person("Quang", "Nguyen");
public Window1()
{
InitializeComponent();
public Window1()
{
InitializeComponent();
//Đưa dữ liệu và các
control một cách thủ công
this.txtFirstName.Text = person.FirstName;
this.txtLastName.Text = person.LastName;
this.tblFullName.Text = person.FullName;
}
this.txtFirstName.Text = person.FirstName;
this.txtLastName.Text = person.LastName;
this.tblFullName.Text = person.FullName;
}
WPF phía
giao diện: Khai báo dữ liệu được gắn cho các control thông qua XAML.
< Window x:Class="WithBinding.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="With Binding" Height="212" Width="300" >
< Grid Name="grid" >
< !--Bind txtFirtName cho Person.FirstName-->
< TextBox Name="txtFirstName" Text="{Binding Path=FirstName}" />
< !--Bind txtLastName cho Person.LastName-->
< TextBox Name="txtLastName" Text="{Binding Path=LastName}" />
< TextBlock Name="tblFullName" Text="{Binding Path=FullName}" />
< /Grid>
< /Window>
WPF phía mã thực thi:
Person person = new Person("Quang", "Nguyen");
public Window1()
{
InitializeComponent();
//Đưa nguồn dữ liệu sẵn sàng cho binding
this.DataContext = person;
}
< Window x:Class="WithBinding.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="With Binding" Height="212" Width="300" >
< Grid Name="grid" >
< !--Bind txtFirtName cho Person.FirstName-->
< TextBox Name="txtFirstName" Text="{Binding Path=FirstName}" />
< !--Bind txtLastName cho Person.LastName-->
< TextBox Name="txtLastName" Text="{Binding Path=LastName}" />
< TextBlock Name="tblFullName" Text="{Binding Path=FullName}" />
< /Grid>
< /Window>
WPF phía mã thực thi:
Person person = new Person("Quang", "Nguyen");
public Window1()
{
InitializeComponent();
//Đưa nguồn dữ liệu sẵn sàng cho binding
this.DataContext = person;
}
Tách biệt phần hiển thị
với phần logic
Cơ chế Data Binding trong WPF khiến toàn bộ quá trình
hiển thị dữ liệu lên các control giao diện được xử lý một cách tự động
mà không cần đến sự can thiệp của các đoạn mã phía sau của control này.
Lập trình viên chỉ cần sử dụng các mã được quản lý như C# hay VB.NET để
truy cập và xử lý dữ liệu mang tính nghiệp vụ. Điều đó khiến phần xử lý
logic của ứng dụng tách biệt hoàn toàn với phần hiển thị dữ liệu, tạo
nên tính độc lập cho các thành phần này. Chúng ta có thể tách việc phát
triển giao diện và xử lý logic thành các mô-đun cho những đội phát triển
khác nhau. Những thay đổi về mặt giao diện không làm ảnh hưởng đến
những xử lý nghiệp vụ của ứng dụng và ngược lại. Hơn nữa, nó cũng tạo
điều kiện dễ dàng cho việc thực hiện “unit test” đối với giao diện của
ứng dụng; công việc vốn rất khó thực hiện đối với các công nghệ trước đó
như Windows Form.
Tiết kiệm chi phí triển
khai
Hình 6: Xử lý font chữ và tài liệu trong WPF |
WPF cung cấp nhiều công cụ thuận tiện cho việc triển
khai, cài đặt tùy thuộc vào kiểu ứng dụng. Với các ứng dụng thuần túy là
các file XAML, không cần phải biên dịch, chúng ta có thể triển khai
chúng trên website như với ASP.NET thông thường. Với các ứng dụng trình
duyệt web XBAP, sử dụng dòng lệnh (command-line) trong XCopy hoặc đóng
gói bằng Windows Installer để cài đặt cho khách hàng. Với các ứng dụng
chạy độc lập chúng ta có thể đóng gói thông qua Windows Installer hoặc
ClickOnce. Giống như Windows Installer, ứng dụng được triển khai sử dụng
ClickOnce, có thể tích hợp với desktop, Start menu, dễ dàng cài đặt và
gỡ bỏ thông qua “Add/Remove Programs” (trong Control Panel) trên máy
khách hàng. Ngoài ra ClickOnce còn cho phép cài đặt ứng dụng trực tuyến
thông qua web, tạo điều kiện thuận lợi cho khách hàng cập nhật các phiên
bản của phần mềm nếu có. Nhờ vậy tiết kiệm chi phí đáng kể trong việc
triển khai ứng dụng cho cả nhà phát triển cũng như khách hàng.
Có rất nhiều công nghệ bạn có thể lựa chọn cho việc
phát triển các ứng dụng Windows hiện nay như Windows Form, Visual
C++/MFC, Win32, WPF. Trong đó phải kể đến Windows Form, một công nghệ
được sử dụng rộng rãi và lâu đời (xấp xỉ 20 năm) bởi tính dễ dùng và nhỏ
gọn; hay Visual C++/MFC (Microsoft Foundation Classes) cho các ứng dụng
đòi hỏi can thiệp sâu vào hệ thống, yêu cầu thư viện tối thiểu và mang
lại tốc độ tốt. Chúng sẽ vẫn được khách hàng tin dùng và nhận được sự hỗ
trợ từ Microsoft trong vài năm tới. Tuy nhiên, sự ra đời của Windows 7
cũng đặt ra thách thức với các nhà phát triển phần mềm về một thế hệ ứng
dụng kế tiếp - Những ứng dụng với giao diện tân tiến, tích hợp nhiều
công nghệ hiển thị đồ họa, tận dụng sức mạnh của phần cứng, đáp ứng tốt
các yêu cầu phổ biến hiện nay như đa phương tiện, hoạt hình và hơn nữa
là độ tin cậy, dễ phát triển và bảo trì, tiện dụng khi triển khai. Công
nghệ WPF mang lại cho các nhà phát triển thêm một công cụ hữu hiệu để
đáp ứng xu hướng mới.
0 comments:
Post a Comment