Wednesday, March 19, 2008

.NET Framework 3.0 (WinFX)

.NET Framework 3.0 (WinFX)

(Bài này của mình được đăng trên báo PCWorld Việt Nam, tháng 8.2006)

Cuối tháng 5/2006, Microsoft công bố bản beta 2 của Windows Vista cùng một số mô hình, công cụ giúp phát triển ứng dụng trên Windows như: .NET Framework 3.0 (trước đây gọi là WinFX), Office 2007... Trong đó các công cụ liên quan đến .NET Framework 3.0 được giới phát triển phần mềm đặc biệt quan tâm. Theo kế hoạch, bản chính thức của .NET Framework 3.0 sẽ được công bố vào tháng 11/2006. Bài viết này mong muốn đem đến cho bạn đọc cái nhìn cơ bản về .NET Framework 3.0 được Microsoft công bố là thế hệ thứ 3 sau Win16 và Win32.

Mô hình lập trình trên Windows hiện nay

Trước khi tìm hiểu .NET Framework 3.0, ta hãy xem lại mô hình phát triển phần mềm trên Windows hiện tại. Có hai dạng ứng dụng là ứng dụng desktop (WinForm) và ứng dụng web (WebForm). Khi phát triển một phần mềm, ta phải lựa chọn một trong hai dạng ứng dụng này mà không thể nào có sự chia sẻ hay dùng chung. Với ứng dụng desktop theo mô hình client-server, các thành phần của chương trình được cài đặt trên máy chủ (server) và máy khách (client). Khi có sự thay đổi bất cứ thành phần nào ở phía client, ta đều phải cài đặt lại thành phần ấy cho từng client. Còn với ứng dụng web, chỉ cần cài đặt ở phía server, client sẽ truy xuất thông qua URL, tuy nhiên, trình duyệt là công cụ duy nhất mà ta có thể dùng để truy xuất đến ứng dụng web, thật bất tiện!

Một câu hỏi đặt ra là có cách nào chỉ viết một ứng dụng vừa có thể chạy như ứng dụng desktop, vừa như ứng dụng web không? Vấn đề này đã được đặt ra từ lâu nhưng đến thời gian gần đây Microsoft mới triển khai một mô hình lập trình mới - .NET Framework 3.0 - giúp giải quyết vấn đề trên. Với mô hình này, ta có thể viết một ứng dụng web cho phép người dùng phía client sử dụng mà không cần thông qua trình duyệt hoặc một ứng dụng desktop được sử dụng bởi người dùng web.

Mô hình lập trình .NET Framework 3.0

.NET Framework 3.0 là một mô hình lập trình với "mã được kiểm soát" (managed code), được xây dựng và mở rộng dựa trên .NET Framework 2.0, không những giải quyết những vấn đề khó khăn trong việc phát triển phần mềm mà còn giúp tạo ra những phần mềm, dịch vụ mà công nghệ hiện tại không thể làm được. Nó giúp lập trình viên và người thiết kế có thể tạo ra ứng dụng có nhiều tính năng đáng tin cậy hơn, bảo mật hơn, thông minh hơn, thẩm mỹ hơn, dễ triển khai hơn...
Ta có thể nhìn .NET Framework 3.0 qua 2 phương diện:

• Về chức năng, .NET Framework 3.0 có 3 khối chức năng là: Trình diễn (Presentation); Dữ liệu (Data); Giao tiếp (Communication).

• Về kỹ thuật, hiện tại Microsoft giới thiệu 4 kỹ thuật mới và nổi bật nhất là:Windows CardSpace (InfoCard), Windows Presentation Foundation (Avalon), Windows Communication Foundation (Indigo), Windows Workflow Foundation (Workflow).

Microsoft quyết định sử dụng .NET Framework 3.0 cho Windows Vista nhưng đồng thời cũng hỗ trợ luôn cho Windows XP (SP2) và Windows Server 2003 (SP1). Sau đây ta sẽ tìm hiểu lần lượt từng chức năng.

Windows CardSpace (InfoCard)

InfoCard là một kỹ thuật mới trong .NET Framework 3.0, giúp sử dụng và chia sẻ thông tin cá nhân một cách đơn giản và an toàn trên Internet. InfoCard giúp người dùng web không còn phải lo về việc nhớ quá nhiều "username" (tên đăng nhập) và "password" (mật khẩu) khi truy cập web. Ngoài ra, InfoCard còn cho phép tạo ứng dụng web quản trị tài khoản người dùng an toàn.

Hãy tưởng tượng bạn đăng ký một tài khoản trong Yahoo, một trong Google và là thành viên của 3 diễn đàn nào đó. Mỗi nơi bạn đều phải có username và password, vậy bạn phải nhớ đến 5 tên đăng nhập và 5 password. Chưa kể bạn còn phải nhớ tên và password sử dụng máy tính, sử dụng một số phần mềm nào đó trong máy tính. Quả là đau đầu phải không?

Hay bạn muốn đăng ký làm thành viên của một dịch vụ web để khai thác dữ liệu từ website này. Thường thì bạn sẽ phải điền một số thông tin cá nhân vào trang web mẫu đăng ký. Bây giờ bạn không cần làm thế mà chỉ cần đưa ra một mã số (bạn có thể dùng mã số này ở bất cứ trang web nào đòi hỏi), sau đó trang web này tự động liên kết với một trang web khác đăng thông tin của bạn. Nếu hợp lệ, bạn có thể làm thành viên ngay mà không cần gõ password hay khai báo thông tin gì nữa, đó chính là InfoCard.

Như vậy, InfoCard giúp bạn có một mã số giống như là một chứng minh nhân dân trên mạng. Khi đi đâu trên mạng bạn cứ chìa ra: "giấy chứng minh" của tôi đây!

Windows Presentation Foundation (Avalon)

Avalon có thể xem như là hệ thống trình diễn thống nhất dùng để thiết kế giao diện người dùng trong .NET Framework 3.0. Hệ thống này gồm hai phần, một là bộ máy dùng cho việc thể hiện giao diện, hai là tập công cụ giúp cho người phát triển phần mềm tạo ra ứng dụng mang tính đồ họa và đa truyền thông tốt nhất.

Trong .NET, ta đã có một môi trường tạo giao diện người dùng rất tốt là WinForm cho ứng dụng desktop và WebForm cho ứng dụng web, vậy tại sao lại có một môi trường làm giao diện người dùng khác nữa làm gì?

Ngày nay, hẳn ai trong chúng ta đều nhận thấy kiểu dáng, giao diện của các ứng dụng desktop đã lạc hậu hơn so với các ứng dụng web. Ứng dụng desktop luôn phải sử dụng các công cụ (control) chuẩn. Để các control này sinh động hơn, người lập trình phải tốn rất nhiều công sức thiết kế lại.

Từ Win16, Win32 đã có thư viện đồ hoạ GDI, rồi GDI+. Nếu muốn làm việc với đồ hoạ tốt hơn, lập trình viên có thể dùng đến DirectX. Trong khi đó với Avalon, ta sẽ có một thế hệ lập trình đồ họa tuyệt vời vừa bao gồm GDI vừa hỗ trợ đồ hoạ 3D, hình động, video, xử lý và nhận dạng âm thanh...

Trong mô hình lập trình hiện tại, lập trình viên thường cũng là người thiết kế giao diện, còn với Avalon, người thiết kế giao diện có thể tạo ra một giao diện độc lập trong khi người lập trình chỉ cần viết mã lệnh bên dưới.

Windows Communication Foundation (Indigo)

Indigo là một trong ba phần của .NET Framework 3.0, nó bao phủ toàn bộ những kỹ thuật lập trình phân tán và do đó rất được kỳ vọng từ phía những người phát triển phần mềm.

Tính đến thời điểm hiện nay, có nhiều kỹ thuật cho hệ thống phân tán như: ASP.NET Web Services (ASMX), Web Service Enhancements (WSE), Microsoft Message Queue (MSMQ), Enterpise Services/COM+ và .Net Remoting. Trong đó, mỗi kỹ thuật đều có những ưu điểm và khuyết điểm riêng. Mỗi loại sẽ phù hợp với một ứng dụng phân tán nhất định. Tuy nhiên, khi triển khai một ứng dụng phân tán, người phát triển phần mềm không thể lựa chọn được nhiều kỹ thuật. Sự ra đời của Indigo với việc gói gọn phần lớn những chức năng của từng kỹ thuật trên đã giúp cho việc phát triển ứng dụng phân tán trở nên tiện lợi hơn.

Windows Workflow Foundation (WWF)

WWF giúp người phát triển phần mềm có thể triển khai nhanh ứng dụng trên Windows. Nó hỗ trợ đắc lực trong việc thiết kế các ứng dụng xử lý công việc theo từng bước, theo luồng nhất định. WWF không những mô phỏng được xử lý luồng trong hệ thống máy tính mà còn mô phỏng cả các luồng công việc trong thực tế đời sống.

Lấy ví dụ về việc bán hàng của một siêu thị. Một khách hàng gọi điện đến bộ phận đặt hàng, nhân viên ghi nhận một số thông tin cần thiết. Tiếp theo, thông tin này được đưa qua bộ phận xử lý đơn hàng rồi chuyển sang bộ phận xuất và giao hàng nếu còn hàng. Bộ phận giao hàng khi giao xong sẽ nhận phản hồi từ khách hàng và kết thúc quá trình mua bán.

Ta viết chương trình xử lý quá trình bán hàng này như thế nào? Ta cần ít nhất một cửa sổ cho nhân viên nhập thông tin khách hàng và một cửa sổ cho việc xử lý đơn hàng, giao hàng. Trong hai cửa số này, ta phải giúp người sử dụng quản lý theo trình tự xử lý nhất định nào đó. Chương trình không khó để thực hiện trên các mô hình lập trình hiện tại. Tuy nhiên, với WWF, công việc sẽ trở nên dễ dàng hơn và thực hiện nhanh hơn nhiều.

WWF cung cấp 3 tính năng chính:

• Kỹ thuật xử lý luồng: đây là kỹ thuật cơ bản của Windows, hiện tại có một số sản phẩm của Microsoft hỗ trợ xử lý luồng như Microsoft BizTalk Server, Microsoft Exchange Server. Theo xu hướng phát triển, việc hỗ trợ xử lý luồng công việc luôn là một phần của Windows.

• Mô hình xử lý cho nhiều dạng ứng dụng khác nhau: Việc hỗ trợ xử lý luồng công việc không giới hạn trong những công việc đơn giản mà hỗ trợ xử lý những luồng phức tạp. Hơn nữa ta có thể chia một mô hình tổng thể thành các mô hình con để xử lý.

• Một hệ thống thống nhất với mô hình xử lý luồng công việc thực tế: Lấy ví dụ công việc bán hàng nêu trên, tất cả những tình huống xảy ra trong quá trình giao dịch được định sẵn và máy tính sẽ thực thi những gì được cài đặt. Trong khi ấy, việc giao dịch thực tế lại luôn có sự thay đổi theo hoàn cảnh (ví dụ khách hàng thay đổi đơn hàng, đưa thêm một số ràng buộc...) mà luồng xử lý của máy tính không thể thực hiện được. WWF sẽ giúp chúng ta phát triển phần mềm mà các luồng xử lý công việc có thể được can thiệp giống như trong thực tế đời sống.

Kết luận

Theo đánh giá của giới chuyên môn, .NET Framework 3.0 sẽ làm thay đổi đáng kể việc phát triển phần mềm trong tương lai không xa. Bài viết này chỉ nêu một cách tổng quát về .NET Framework 3.0. Việc đi sâu hơn vào từng thành phần trong bốn thành phần nêu trên hy vọng sẽ được trình bày trong dịp khác.

Tham khảo:
http://msdn.microsoft.com/winfx/learning/netfx3faq/default.aspx
http://commnet.microsoftpdc.com/content/downloads.aspx
http://www.microsoft.com/betaexperience/vivn/newsletter.aspx
http://msdn.microsoft.com/winfx/reference/

Hữu Giang
Công ty FCGV

No comments: