[Flex] Một số nhận xét về Cairngorm 3

Adobe đã phát hành phiên bản cairngorm 3 từ ngày 21/5 năm nay, và tính đến thời điểm tôi viết bài viết này là được gần nửa năm. Tôi vẫn chưa tìm được nhiều thông tin về việc triển khai Cairngorm 3 trong thời gian vừa qua, ít nhất là trong phạm vi Việt Nam. Có vẻ Cairngorm 2.x vẫn còn đáp ứng tốt các yêu cầu triển khai các ứng dụng RIA (Flex) chăng ? Thực tế là tôi vẫn chưa có ý định sẽ triển khai Cairngorm 3 (thậm chí là sẽ chuyển hẳn sang Flex 4) cho các ứng dụng của công ty. Lý do ? Vì Cainrgorm 2.x và Flex 3.x vẫn đáp ứng tốt các yêu cầu hiện tại.
Tuy nhiên tôi vẫn dành thời gian để tìm hiểu qua Cairngorm 3 để tìm xem sự khác biệt của nó so với phiên bản 2.x. Tôi cũng tìm được 1 tài liệu khá hay – một slide tóm tắt về Cairngorm 3 của tác giả Glenn Goodrich, Enspiria Solutions-  ggoodrich@enspiria.com, download tại đây. Ngoài ra, các quan điểm của Christophe Herreman, Yakov Fain cũng giúp tôi rất nhiều trong quá trình tìm hiểu về Cairngorm 3. Bài viết này cũng không nằm ngoài các suy nghĩ của các tác giả nên trên, thực chất là một bài tổng hợp các quan điểm, nhận định mang tính cá nhân về Cairngorm 3.
Một người bạn của tôi đang làm việc tại digital XPress Vietnam – Mr. Huy Thái, người đã bảo vệ quan điểm Cairngorm 2.x là một framework chứ không phải là một ngôn ngữ lập trình mới nếu so với ActionScript 3.0. Và tôi cũng đồng ý với quan điểm này. Trường hợp của Cairngorm 2.x cũng như MFC (Microsoft Foundation Classes) mà thôi, khi MFC đóng vai trò là framework hỗ trỡ cho lập trình viên Windows. Tuy nhiên với Cairngorm 3, việc xem nó là framework có thể không mang tính đúng đắn. Bản thân Cairngorm 3 không hoạt động độc lập, vì một số thành phần trong các thư viện của Cairngorm là một sự mở rộng từ một số framework khác, trong đó có Parsley. Nếu như Cairngorm 2.x tuân theo mô hình MVC triệt để thì với Cairngorm 3, MVC không còn là trọng tâm nữa. Adobe giới thiệu Cairngom 3, ngoài việc giữ nguyên mô hình MVC của cairngorm 2.x – nghĩa là không có một sự cải tiến nào với kiến trúc MVC từ phiên bản 2.2 cuối cùng mà thay vào đó là giới thiệu đến tính năng IoC (Inversion of Control) vốn đã hiện diện trong Parsley, Mate, Swiz … Chính vì không phải là một bản cải tiến của Cairngorm 2.x, Cairngorm 3 không đặt trọng tâm khắc phục các lỗi, vấn đề mà Cairngorm 2.x đang gặp phải, mà thay vào đó là cung cấp nhiều hướng tiếp cận khác nhau để giải quyết các vấn đề trong quá trình phái triển ứng dụng RIA thông qua các framework khác. Bản thân Parsley, PureMVC, Mate, Swiz … và cả Spring ActionScript nữa, mỗi một framework đều có những lợi thế khác nhau để giải quyết những vấn đề khác nhau. Nếu như lập trình viên kết hợp các framework với nhau thì có thể tận dụng được ưu thế của từng framework. Cairngrom 3 đi theo quan điểm này, và bản chất của Cairngorm 3 như là các giải pháp tổng thể để giải quyết các vấn đề trong qua trình phát triển ứng dụng hơn là một framework cụ thể.

Nhiều người sẽ thắc mắc, tại sao Adobe quyết định dùng Parsley thay vì dùng SpringActionScript, Mate … Thực sự vẫn chưa tìm được một tài liệu nào về việc này. Quan điểm chống MVC hay ủng hộ MVC vốn tồn tại từ lâu trong giới phát triển phần mềm, và từ những quan điểm trái ngược này mà nhiều giải pháp, framework được xây dựng. Adobe đã có một quyết định đúng đắn, là đưa ra Cairngorm 3 như một giải pháp tổng thể kết hợp các quan điểm trên. Tuy mất đi tính độc lập nhưng điều đó mang lại lợi ích cho lập trình viên.  Kiến trúc phần mềm thực sự phức tạp để quản lý và ứng dụng vào thực tế. Có nhiều mô hình cơ bản và hướng dẫn có thể giúp các nhà phát triển phầm mềm khi triển khai, và đôi khi tính đúng đắn không tồn tại mà thay đó là khả năng đáp ứng thực tế được quan tâm nhiều hơn.

2 thoughts on “[Flex] Một số nhận xét về Cairngorm 3

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s