Các mã script này tạo ra thêm các hiệu ứng thể hiện giao diện trang web trong quá trình tương tác với người sử dụng như tạo ra các thanh trượt slider để cuộn các trang dữ liệu trên màn h
Trang 2MỤC LỤC
CHƯƠNG 1 MÔ HÌNH RICH INTERNET APPLICATION 9
1.1 Giới thiệu mô hình 9
1.2 Đặc điểm 11
1.3 Lợi ích của các ứng dụng RIA 14
1.4 Những mặt hạn chế 16
1.5 Những thách thức đặt ra cần giải quyết 17
1.6 Hiện trạng phát triển 20
1.7 Những ưu việt được ghi nhận 21
1.8 Các phương pháp và công nghệ sử dụng trong mô hình RIA 21
1.8.1 JavaScript 21
1.8.2 Adobe Flash 22
1.8.3 Windows presentation foundation(WPF) and silverlight 22
1.8.4 ActiveX Controls 22
1.8.5 JavaFX 23
1.8.6 Các kỹ thuật khác 23
1.9 Một số sản phẩm và công nghệ đáng chú ý 23
1.9.1 Adobe Flex 23
1.9.2 Ajax 32
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG QUẢN LÝ TÁC NGHIỆP VĂN PHÒNG 38
2.1 Mục tiêu 38
2.2 Phạm vi 38
2.3 Hiện trạng 39
2.3.1 Giới thiệu 39
2.3.2 Mô hình tổ chức của NHNo&PTNTVN 40
2.3.3 Công tác điều hành và quản lý công việc 41
2.3.4 Yêu cầu 45
Trang 32.4 Mô hình nghiệp vụ 46
2.4.1 Biểu đồ hoạt động nghiệp vụ 46
2.4.2 Tổng hợp các chức năng hệ thống 46
2.4.3 Từ điển thuật ngữ lĩnh vực nghiệp vụ 49
2.4.4 Các tác nhân nghiệp vụ 50
2.4.5 Mô hình miền lĩnh vực 51
2.4.6 Mô hình ca sử dụng mức cao 52
2.4.7 Mô hình ca sử dụng chi tiết 53
2.5 Phân tích hệ thống 71
2.5.1 Gói ca sử dụng Quản lý công văn 72
2.5.2 Gói ca sử dụng Quản lý công việc 74
2.5.3 Gói ca sử dụng Quản lý thông báo 76
2.5.4 Gói ca sử dụng Quản trị 77
2.5.5 Biểu đồ mô hình phân tích gộp của hệ thống 79
CHƯƠNG 3 ỨNG DỤNG MÔ HÌNH RIA TRONG VIỆC TRIỂN KHAI HỆ THỐNG QUẢN LÝ TÁC NGHIỆP VĂN PHÒNG 81
3.1 Giải pháp 81
3.1.1 Mô hình kiến trúc phần cứng 81
3.1.2 Lựa chọn công nghệ xây dựng phần mềm ứng dụng 81
3.1.3 Mô hình triển khai phần mềm 82
3.1.4 Sử dụng Rico LiveGrid để biểu diễn dữ liệu trên máy khách 84
3.1.5 Vấn đề về an toàn bảo mật 86
3.2 Thiết kế giao diện 89
3.2.1 Phân hệ Quản lý công văn 89
3.2.2 Phân hệ Quản lý công việc 92
3.2.3 Phân hệ Quản lý thông báo 94
3.2.4 Phân hệ Quản trị hệ thống 96
Trang 4BẢNG CÁC CHỮ VIẾT TẮT
Ajax Asynchronous JavaScript and XML
B2B Business-to-business
HTML HyperText Markup Language
HTTP HyperText Transfer Protocol
IDE Integrated Development Environment
NHNo&PTNTVN Ngân hàng nông nghiệp và phát triển nông thôn Việt Nam OEM original equipment manufacturer
REST Representational State Transfer
RIA Rich Internet Application
SLM Service-Level-Management
SOAP Simple Object Access Protocol
SVG Scalable Vector Graphics
TCP Transmission Control Protocol
WPF Windows presentation foundation
XHTML Extensible HyperText Markup Language
Trang 5MỞ ĐẦU
Ngày nay, khi Internet trở thành một phần không thể thiếu trong cuộc sống của mỗi người, cũng như đối với hoạt động của các doanh nghiệp, tổ chức, thì yêu cầu đáp ứng các yêu cầu khắt khe của người dùng đã đặt ra cho những nhà nghiên cứu công nghệ, nhà phát triển sản phẩm dịch vụ trên Internet nhiều thách thức Đặc biệt là khoảng cách về khả năng tương tác với người dùng giữa các ứng dụng trên Internet và các ứng dụng trên nền desktop Người dùng càng ngày càng khó chấp nhận chuyển đổi thói quen khi sử dụng các ứng dụng desktop truyền thống, sang sử dụng các ứng dụng web xây dựng theo
mô hình Client-Server truyền thống
Với cách này, hoạt động tương tác xảy ra rất chậm chạp do với mô hình server trên các mạng LAN Các nhà cung cấp dịch vụ trên Internet cũng chủ động lôi cuốn người dùng bằng cách thu hẹp sự khác biệt này Do đó, một mô hình phát triển ứng dụng trên môi trường Internet đã ra đời nhằm đáp ứng kỳ vọng của cộng đồng khi tương tác trên Web như trên máy desktop Đó chính là mô hình phát triển Rich Internet Application (RIA) kèm theo các công nghệ liên quan
client-Sự ra đời của mô hình RIA đã mở ra một hướng mới, hứa hẹn tạo ra một cuộc cách mạng sâu rộng trên Internet Các ứng dụng được xây dựng theo mô hình RIA đã và đang thâm nhập vào mọi lĩnh vực của cuộc sống và nhận được những kết quả đáng khích lệ Mặc dù vẫn còn nhiều ý kiến khác nhau và còn có nhiều vấn đề cần khắc phục và tiếp phát triển nhưng áp dụng mô hình RIA vẫn là một lựa chọn hấp dẫn cho các nhà phát triển, nhà nghiên cứu và ứng dụng
Là một ngân hàng lớn hàng đầu Việt Nam, trong cuộc đổi mới, mở cửa hội nhập với thế giới của đất nước, Ngân hàng Nông nghiệp và phát triển nông thôn Việt Nam luôn lấy Công nghệ thông tin là một hướng đầu tư chính tạo ra sức mạnh cạnh tranh và nhân tố thúc đẩy phát triển Do nhu cầu cấp thiết phát triển các hệ thống ứng dụng lớn của Ngân hàng và với những ưu điểm nổi trội cùng sự tiến bộ về mặt công nghệ không thể phủ nhận, tôi đã chọn chọn đề tài “Ứng dụng mô hình Rich Internet Application trong việc xây dựng
hệ thống Quản lý tác nghiệp văn phòng” làm đề tài luân văn tốt nghiệp cao học Luận văn gồm Phần mở đầu và ba chương:
Trang 6Chương 1 – Giới thiệu mô hình Rich Internet Application
Chương 2 – Phân tích và thiết kế hệ thống Quản lý tác nghiệp văn phòng theo phương pháp hướng đối tượng
Chương 3 – Ứng dụng mô hình Rich Internet Applocation triển khai phần mềm Quản lý tác nghiệp văn phòng
Và cuối cùng là đánh giá những nội dung đã đạt được, các nội dung cần tiếp tục nghiên cứu và hoàn thiện
Trang 7CHƯƠNG 1
MÔ HÌNH RICH INTERNET APPLICATION
1.1 Giới thiệu mô hình
Các ứng dụng web ban đầu ra đời với ý tưởng giúp các nhà nghiên cứu khoa học
chia sẻ tài liệu dưới dạng các trang thông tin tĩnh được liên kết với nhau và được lưu theo
chuẩn HTML Kể từ đó, các trang web nhanh chóng được mở rộng ra để thể hiện các
thông tin theo định dạng văn bản phức tạp cũng như dạng hình ảnh Đính kèm theo các
trang web là các ứng dụng nhúng cho phép nghe và xem các thông tin dưới dạng âm
thanh, phim ảnh Các nhà phát triển web bổ sung thêm các đoạn mã script chạy trên phía
máy khách bên cạnh các chức năng cơ bản của trình duyệt là tạo ra các trang HTML Các
mã script này tạo ra thêm các hiệu ứng thể hiện giao diện trang web trong quá trình tương
tác với người sử dụng như tạo ra các thanh trượt (slider) để cuộn các trang dữ liệu trên
màn hình hiển thị, tạo ra các menu có khả năng ẩn hoặc mở rộng theo các chiều ngang
hoặc dọc… Thậm chí, các đoạn mã này có thể thực hiện việc xử lý dữ liệu như kiểm soát
tính đúng đắn của dữ liệu do người dùng trang HTML nhập vào
Bên cạnh việc tăng cường hiệu quả tương tác của người dùng trên từng trang web,
những khả năng này của script không phá vỡ mô hình của các ứng dụng web truyền thống
ban đầu và phần ứng dụng về mặt lôgic vẫn chạy trên máy chủ để thực hiện các xử lý sau
khi người dùng gửi yêu cầu tới nó bằng cách chọn đường liên kết (link) hoặc nút lệnh trên
giao diện Cơ chế này được gọi là cơ chế đồng bộ, có nghĩa là, người dùng sau khi gửi
yêu cầu đi phải đợi máy chủ xử lý và tải lại trang kết quả xử lý Quá trình này cứ lặp đi
lặp lại một cách chậm chạp mỗi khi có yêu cầu mới gây cảm giác khó chịu, bất tiện cho
người sử dụng
Ngày nay, các nhà phát triển web đã tìm ra một mô hình phát triển mới, đó là mô
hình Rich Internet Application (RIA) Mô hình RIA là một sự kết hợp giữa ứng dụng web
truyền thống với mô hình ứng dụng destop thể hiện ở ý tưởng là đưa một số xử lý trước
đây vẫn được thực hiện trên máy chủ trong mô hình truyền thống về thực hiện trên máy
khách, giữ lại các xử lý khác trên máy dịch vụ
Thuật ngữ “Rich Internet Applications” được hãng Macromedia chính thức công
bố vào năm 2002 Trước đó, nhiều triển khai theo nội dung này đã được thử nghiệm và có
Trang 8rất nhiều tên gọi khác nhau đã được sử dụng:
- Remote Scriptting, được Microsoft đưa ra năm 1998
- X Internet, được tổ chức nghiên cứu Forrester đưa ra năm 2000
- Rich (Web) Clients
- Rich Web Application
Những sản phẩm công nghệ triển khai theo mô hình này điển hình như bộ sản phẩm Flash của hãng Abode, java applets, và một tập hợp các công nghệ được gọi bằng thuật ngữ Ajax – “là một loạt các công nghệ, mà mỗi công nghệ tự bản thân chúng có những ảnh hưởng nhất định, cùng liên kết trong một cách thức phát triển triển ứng dụng web mới mẻ mạnh mẽ” Sau đây là sơ đồ mối quan hệ giữa Flash, Ajax, và java applets
Hình 1.1: Quan hệ giữa Flash, Ajax, Java applet/hoặc các công nghệ java khác
Sơ đồ tương tác giữa các đối tượng trong môi trường hoạt động theo mô hình RIA được
mô tả cụ thể ở Hình 1.2
Mô hình không chỉ ra một cách cụ thể những rằng buộc người dùng phức tạp mà chỉ xác định các hành vi tự động, dựa trên kinh nghiệm, trực quan Chúng đơn thuần biểu diễn một vài kết quả hành vi có liên quan tới nội dung của sự tương tác giữa người sử dụng và ứng dụng RIA
Ở bậc cao nhất, mô hình minh họa 3 nội dung chính (các phần được tô màu và đóng khung trên hình vẽ), mỗi phần có những ảnh hưởng nhất định tới hiệu suất của ứng dụng:
- Thiết kế của ứng dụng và môi trường sử dụng hay nội dung (hàng trên cùng trong vùng đóng khung 1)
Trang 92
3
Hình 1.2: Mô hình tương tác giữa các đối tượng trong mô hình RIA
- Mong muốn và hành vi của người sử dụng (phần dưới bên trái, trong phần đóng khung 2)
- Hành vi khi sử dụng của ứng dụng (phân dưới bên phải, trong phần đóng khung 3)
Đó là mô hình mô tả từng bước thông qua những gì xảy ra trong suốt quá trình tương tác giữa người sử dụng và ứng dụng dựa trên trình duyệt Phần mũi tên đen đậm thể hiện luồng hoạt động của một ứng dụng Web truyền thống bắt đầu từ yêu cầu của người
sử dụng (click), thông qua giao thức HTTP gửi yêu cầu tới máy chủ, sau khi nhận yêu cầu,
xử lý, máy chủ sẽ trả lại kết quả về cho máy trạm tại bộ nhớ tạm thời của trình duyệt (browse cache), khi dữ liệu đã trả về đủ tại bộ nhớ tạm, người sử dụng có thể nhận được
dữ liệu thông qua các khung nhìn trên trang web Kinh nghiệm người sử dụng của thời gian phản hồi dữ liệu từ máy chủ chính là khoảng thời gian cần cho tổng thể quá trình từ khi người dùng click vào một đường liên kết trên trình duyệt đến khi nhận được kết quả trả về từ máy chủ trên trang web Việc tải thậm chí chỉ một trang web đơn cũng bao gồm một loạt các chuyến đi từ máy trạm tới máy chủ (một trang Web thường bao gồm một tập các phần tử như các file css, các đoạn mã script, các ảnh nén, …) mà mỗi phần tử đó thường được tải một cách độc lập, riêng rẽ bởi trình duyệt Như vậy, với một ứng dụng web thông thường có thể nhận thấy rằng, tiến trình máy trạm yêu cầu, máy chủ xử lý và gửi lại cứ lặp đi lặp lại mỗi khi người sử dụng click vào một đường link trên trình duyệt
1.2 Đặc điểm
Trang 10Các ứng dụng Web truyền thống tập trung mọi hoạt động xung quanh kiến trúc client-server Với kiến trúc này, mọi thao tác xử lý dữ liệu được thực hiện tại ứng dụng chạy trên máy chủ Phần ứng dụng trên máy khách được phát triển chỉ để hiển thị nội dung tĩnh (trong trường hợp này là các trang HTML) hoặc hiển thị kết quả xử lý dữ liệu
từ ứng dụng trên máy chủ Trở ngại lớn nhất của kiến trúc này là tất cả các tương tác với ứng dụng đều được xử lý trên máy chủ, nghĩa là yêu cầu xử lý dữ liệu phải được gửi tới máy chủ xử lý, và sau đó trả lại kết quả cho ứng dụng trên máy khách (Hình 1.3) và dữ liệu gửi đi là cả trang web, bao gồm cả những phần vốn đã có trên máy khách mà không
hề có thay đổi gì sau một yêu cầu mới
Thời điểm tương tác
Thời điểm xử lý trên máy dịch vụ
Hình 1.3: Mô hình giao tiếp trong ứng dụng web truyền thống
Điều đó có nghĩa là, các trang hiển thị thông tin tại máy khách thường xuyên phải lặp lại việc tải kết quả xử lý dữ liệu cập nhật từ ứng dụng trên máy chủ Bằng việc sử dụng công nghệ mới cho phép phía máy khách có thể thực thi một số các thao tác xử lý tương tác với người sử dụng Các ứng dụng RIA vì thế có thể phá vỡ được ngay cả các dữ
Trang 11liệu đã có sẵn ở máy khách Nghĩa là sẽ không còn tình trạng gửi yêu cầu, chờ máy chủ nhận yêu cầu, phân tích yêu cầu, xử lý yêu cầu và trả lại kết quả nữa mà tại cùng một thời điểm sẽ đồng thời có nhiều yêu cầu, nhiều tương tác người dùng được đáp ứng đồng bộ tại cùng một thời điểm một cách nhanh chóng và trong suốt Sự khác nhau đó tương tự như sự khác nhau giữa cách tiếp cận của mô hình sử dụng thiết bị đầu cuối tương tác với máy chủ (terminal – mainframe) và cách tiếp cận Client-Server/Fat client
Hình 1.4: Mô hình giao tiếp trong ứng dụng web theo mô hình RIA
Các công nghệ và chuẩn liên quan đến mô hình RIA trên Internet tiến hóa một cách chậm chạm và diễn ra liên tục trong thời gian qua Do đó, rất khó để có thể phân định được rõ ràng thế nào là ứng dụng thuộc mô hình RIA và thế nào là không phải Để đảm bảo những ưu việt của Web truyền thống và khắc phục được khó khăn nêu trên, những vấn đề sau được đặt ra:
- Cần xác định nội dung xử lý và tạo chung trình xử lý trên máy khách để thực hiện
nó mà không cần cài đặt sẵn
- Đảm bảo sự đồng bộ giữa máy khách và máy dịch vụ Web trong quá trình tương tác
Giải quyết những vấn đề trên, tất cả các ứng dụng RIA đều có chung một đặc điểm
là tạo một tầng chứa mã trung gian giữa người sử dụng và ứng dụng trên máy chủ Tầng chứa mã trung gian này hoạt động như một bộ máy riêng biệt tại máy khách (client engine) (Hình 1.4) Nó thường được tải từ máy chủ về máy khách ngay khi ứng dụng bắt đầu được truy cập từ máy khách, và có thể được bổ sung thêm trong suốt quá trình chạy
Trang 12ứng dụng Cơ chế này cho phép tầng trung gian hoạt động như một phần mở rộng của trình duyệt, thường chịu trách nhiệm cho việc trình diễn các giao diện người dùng của ứng dụng và việc giao tiếp với máy chủ
Những gì có thể thực hiện được đối với một ứng dụng RIA có thể bị giới hạn bởi khả năng của hệ thống được sử dụng tại phía máy khách Tuy nhiên, tầng trung gian được lập trình để thực thi các chức năng của ứng dụng được lưu trên máy chủ và chỉ được tải
về vận hành trên máy khách khi thực thi ứng dụng Nó sẽ tăng cường hiệu quả thể hiện giao diện tương tác với người dùng, hoặc cải thiện sự sẵn sàng đáp lại khi thực hiện các tương tác người dùng so với mô hình truyền thống Với chức năng thực hiện như vậy, rõ ràng ứng dụng phát triển theo mô hình này sẽ ít bị ảnh hưởng bởi cấu hình của máy khách
Vì vậy, việc thêm một tầng trung gian không làm cho một ứng dụng theo mô hình RIA vi phạm các tương tác đồng bộ thông thường giữa trình duyệt và máy chủ Mặt khác, liên quan tới vấn đề thứ hai, tùy thuộc vào môi trường ứng dụng mà xác định những nội dung
xử lý nào cần tiến hành trên máy khách và các dữ liệu tương ứng nào cần có phục vụ cho các xử lý này để tải sẵn từ máy dịch vụ về máy khách hạn chế việc tải lặp nhiều lần
Để có thể thực hiện những giải pháp trên đây cần có công nghệ và công cụ thích hợp Rõ ràng điều này làm việc phát triển các ứng dụng Web trở nên phức tạp lên nhiều lần Bù lại những khó khăn cần làm, ta sẽ có những ứng dụng trên Web gần gũi với ứng dụng trên desktop mà người dùng vốn đã quen thuộc
1.3 Lợi ích của các ứng dụng RIA
Do các ứng dụng RIA triển khai một tầng trung gian để xử lý các tương tác với người sử dụng nên đã đem lại nhiều lợi ích như sau:
- Hình thức thể hiện tương tác giữa ứng dụng với người dùng trên giao diện phong phú hơn (Richer): Gần như tương đương với các ứng dụng được triển khai cài đặt
trực tiếp trên máy khách, các ứng dụng xây dựng theo mô hình RIA có thể thể hiện các tương tác với người sử dụng rất phong phú Ví như, việc di chuyển các thông tin trên giao diện theo cách kéo thả (drag-drop), hoặc thay đổi dữ liệu hiển thị trong một khung nhìn bị giới hạn bằng cách sử dụng thanh trượt (slider), hoặc thực hiện các phép tính toán dựa trên các số liệu hiện thời được cung cấp trên giao diện người dùng,…
- Khả năng đáp ứng yêu cầu của người sử dụng cao: Việc đồng bộ các giao tiếp
Trang 13khác nhau giữa máy khách và máy chủ cung cấp khả năng tối ưu việc trao đổi dữ liệu giữa máy chủ và máy khách Tránh được việc tải lại toàn bộ trang thông tin bao gồm cả các thông tin không bị thay đổi, cũng như cung cấp sẵn những dữ liệu
có thể được sử dụng tiếp theo, tăng khả năng sẵn sàng đáp ứng của ứng dụng
- Phù hợp với thói quen và tâm lý người dùng: sự tương tác là trong suốt, không phải
chờ đợi lâu
Hầu hết các ứng dụng phức tạp áp dụng mô hình RIA đều có cách tiếp cận trong việc thể hiện giao diện và tạo cảm giác sử dụng cho người dùng như đang làm việc với các ứng dụng desktop triển khai cài đặt trực tiếp trên môi trường máy khách Về hiệu năng (performance) của hệ thống, có thể có các đánh giá như sau:
- Phân tải giữa máy khách và máy chủ: Khác với mô hình truyền thống, mô hình
RIA cho phép một phần các xử lý được thực hiện tại tầng trung gian trên máy khách Do đó, cùng với máy chú, máy khách chia sẻ bớt các xử lý với máy dịch vụ Tài nguyên trên máy chủ được giành cho mỗi một phiên làm việc với một máy khách sẽ giảm đi Điều đó có nghĩa là, với một máy dịch vụ có tài nguyên cố định,
so với mô hình máy khách/máy dịch vụ truyền thống, nếu triển khai ứng dụng áp dụng mô hình RIA, có thể đáp ứng được nhiều hơn số lượng các phiên làm việc với các máy khách/máy dịch vụ
- Thêm giao tiếp không đồng bộ: trong mô hình RIA, máy khách có thể tương tác
với máy chủ một cách không đồng bộ - nghĩa là, máy khách thực hiện các tương tác với máy chủ mà không cần phải đợi các thao tác của người sử dụng thực hiện trên giao diện tương tác (như kích một đường link hay một nút lệnh) Tùy chọn này cho phép các nhà thiết kế ứng dụng RIA chuyển dữ liệu giữa máy khách và máy chủ mà không tạo ra sự chờ đợi phía người sử dụng Thông thường, hầu hết các ứng dụng xây dựng theo mô hình RIA đều là các ứng dụng có cơ chế “tự làm đầy” (prefetching) Theo cách này, một ứng dụng sẽ tiên đoán những dữ liệu cần thiết được yêu cầu trong tương lai, và tải chúng về máy khách trước khi có yêu cầu từ phía người sử dụng Nhờ vậy tốc độ đáp ứng yêu cầu dữ liệu phản hồi cho các yêu cầu về sau này của ứng dụng được nâng lên đáng kể Đây cũng chính là kỹ thuật đã được hệ thống Bản đồ Google sử dụng để chuyển các đoạn bản đồ liền nhau về máy khách trước khi người sử dụng cuộn để hiển thị
- Tăng hiệu suất sử dụng hạ tầng mạng truyền thông: lưu lượng dữ liệu lưu truyển
Trang 14trên mạng có thể giảm một cách đáng kể bởi cơ chế hoạt động thông minh của tầng trung gian trên máy khách so với một trình duyệt Web thông thường khi đưa ra quyết định dữ liệu nào cần được trao đổi với máy dịch vụ Điều này giúp tăng tốc
độ của những yêu cầu cụ thể hoặc phản hồi dữ liệu bởi sẽ có ít dữ liệu hơn được truyền đi ở mỗi tương tác, và toàn bộ lưu lượng dữ liệu tải trong mạng sẽ giảm Tuy nhiên, sử dụng kỹ thuật “tự làm đầy” không đồng bộ có thể làm vô hiệu hóa thậm chí làm phản tác dụng đối với những lợi ích tiềm năng Bởi mã chương trình không thể tự nó tiên đoán trước được chính xác những gì mà tất cả người sử dụng đều sẽ làm tiếp theo đó Nó thường chỉ là kỹ thuật để cho phép tải một lượng dữ liệu lớn hơn kèm theo dữ liệu được yêu cầu, điều này là không thực sự cần thiết cho cho nhiều hoặc tất cả người sử dụng
1.4 Những mặt hạn chế
Các ứng dụng xây dựng theo mô hình RIA có những hạn chế sau:
- Sử dụng cơ chế khép kín – hộp cát (sandbox): Tầng trung gian được tải về máy
khách trong ứng dụng RIA vận hành theo cơ chế khép kín Vì thế nó có những giới hạn về quyền truy cập và khai thác nguồn nguồn tài nguyên của hệ thống, và phụ thuộc vào các nền tảng công nghệ được triển khai trên máy khách Nếu việc truy cập tới các nguồn tài nguyên không được thực hiện đúng đắn theo như thiết kế, các ứng dụng khó có thể thực hiện các chức năng như mong muốn
- Các ngôn ngữ kịch bản (scripting) có thể bị vô hiệu hóa: ngôn ngữ JavaScript hay
bất kỳ một ngôn ngữ kịch bản nào khác thường được sử dụng trong các ứng dụng web theo mô hình RIA Nếu người sử dụng đặt tùy chọn vô hiệu hóa các kịch bản trên trình duyệt của họ, các chức năng của ứng dụng RIA có thể sẽ không được thực hiện một cách đúng đắn
- Tốc độ xử lý của máy khách bị ảnh hưởng và giới hạn ngoài tầm kiểm soát: để có
được nền phát triển độc lập, một số ứng dụng RIA sử dụng các kịch bản phía máy khách được viết bằng các ngôn ngữ thông dịch như JavaScript sẽ làm giảm tốc độ của máy khách Điều này sẽ không thành vấn đề đối với các ngôn ngữ được biên dịch tại máy khách như Java, khi đó hiệu suất có thể so sánh được với các ngôn ngữ biên dịch truyền thống
- Cần thời gian tải tầng trung gian: mặc dù không phải cài đặt, tầng trung gian của
Trang 15các ứng dụng RIA cần được phân phối từ máy chủ tới các máy khách Trong hầu hết các trường hợp sử dụng, tầng trung gian này được tự động tải về bộ nhớ trong (cache) trên máy khách ít nhất một lần khi bắt đầu chạy ứng dụng Tùy thuộc vào kích cỡ và kiểu ứng dụng được phân phối, thời gian tải tầng trung gian có thể kéo dài hơn mong đợi Những người phát triển ứng dụng RIA có thể làm giảm bớt ảnh hưởng của độ trễ này bằng cách nén các kịch bản hoặc dàn dựng để phân tải chúng qua nhiều trang của ứng dụng
- Mất đi tính toàn vẹn: Nếu ứng dụng là sử dụng X/HTML, xung đột nảy sinh giữa
mục đích của ứng dụng (điều khiển việc trình diễn và hành vi) và mục đích của X/HTML (vốn dĩ muốn bỏ đi mọi điều khiển) Nếu sử dụng thư viện giao diện của DOM với X/HTML có thể tạo ra các ứng dụng RIA, tuy nhiên không đảm bảo được tính đúng đắn khi thực hiện các chức năng Vì máy khách của ứng dụng RIA
có thể tự sửa chữa cấu trúc cơ bản của tầng trung gian và thay thế cách trình diễn
và hành vi của ứng dụng, nên điều này có thể là nguyên nhân dẫn đến sự thất bại
và đổ vỡ không thể cứu chữa tại máy khách Hạn chế này có thể được giải quyết bởi một cơ chế mới phía máy khách, theo đó các máy khách trong ứng dụng RIA
sẽ bị hạn chế chỉ được phép sửa những tài nguyên trong phạm vi của ứng dụng chạy tại nó Điều này sẽ không xảy ra ở các ứng dụng phần mềm chuẩn nhờ sự định nghĩa chương trình xử lý một cách tự động cho tất cả các quyền đối với tất cả các nguồn tài nguyên được sử dụng
- Khép kín trước các cơ chế tìm kiếm (search engine): Các cơ chế tìm kiếm không
thể tạo chỉ số cho các nội dung văn bản trong ứng dụng RIA
- Sự phụ thuộc vào kết nối đường truyền mạng: Tính đến thời gian này (2007), các
ứng dụng RIA luôn đòi hỏi duy trì kết nối mạng giữa máy khách và máy chủ trong quá trình người dùng sử dụng
1.5 Những thách thức đặt ra cần giải quyết
Sự ra đời của mô hình RIA mở ra một hướng phát triển mới mạnh mẽ của các ứng dụng Web nhưng cũng làm gia tăng đáng kể độ phức tạp trong việc phát triển ứng dụng Web Đối với các ứng dụng Web truyền thống, do chỉ cần sử dụng những trang HTML chuẩn cùng với một kiến trúc phần mềm tương đối đơn giản để cấu trúc một tập hữu hạn các tùy chọn phát triển, nên dễ dàng quản lý và thiết kế Đối với các cá nhân hoặc tổ chức
Trang 16sử dụng mô hình RIA để phát triển các ứng dụng Web, các vấn đề về thiết kế, kiểm thử, đánh giá và hỗ trợ sẽ gặp nhiều khó khăn hơn do độ phức tạp cao của mô hình này
Các ứng dụng phát triển theo mô hinh RIA đặt ra một loạt các thách thức mới đối với việc quản lý tầng dịch vụ (Service Level management – SLM), trong đó, một số vấn
đề cho đến nay vẫn chưa giải quyết được Các yêu cầu về quản lý dịch vụ không phải luôn luôn quan tâm tới việc phát triển ứng dụng như thế nào hoặc hiếm khi quan tâm tới việc người sử dụng phần mềm có thể sử dụng được không mà tập trung vào khả năng một ứng dụng sau khi hoàn thành xây dựng có thể triển khai được thành công hay không (về tính
ổn định – khả năng kiểm soát đánh giá chất lượng sản phẩm , khả năng mở rộng, bảo hành, bảo trì, hỗ trợ trong và sau quá trình triển khai) Những thách thức đặt ra từ sự phức tạp trong tiến trình quản lý các ứng dụng phát triển theo mô hình RIA bao gồm:
- Càng phức tạp, càng khó phát triển: Khả năng chuyển mã của tầng trung gian tới
máy khách giúp cho những nhà thiết kế và phát triển ứng dụng tự do sáng tạo hơn Chính điều này cũng khiến cho việc phát triển trở nên vất vả hơn, các sai sót, lỗi chương trình dễ xảy ra hơn, đồng thời các hoạt động kiểm thử phần mềm cũng trở nên phức tạp Những khó khăn này gặp phải trong suốt tiến trình phát triển phần mềm, dù là phương pháp hay tiến trình đặc biệt nào được sử dụng Để giảm thiểu các khó khăn có thể sử dụng một Web application framework cho việc thiết kế và phát triển ứng dụng RIA Tuy nhiên, việc tăng độ phức tạp trong giải pháp phần mềm có thể khiến tiến trình kiểm thử trở nên mất thời gian và rắc rối hơn nếu số lượng các ca sử dụng cần kiểm thử tăng lên Việc kiểm thử không đầy đủ sẽ làm giảm chất lượng và độ tin cậy của ứng dụng trong suốt quá trình sử dụng
- Kiến trúc RIA làm phá vỡ mô hình của trang web truyền thống: Các ứng dụng web
truyền thống có thể được hiển thị như một loạt các trang Web khác nhau, mỗi trang yêu cầu tải một số dữ liệu khác nhau, và được khởi tạo bởi một yêu cầu theo phương thức HTTP GET Ứng dụng RIA làm mất đặc tính này của ứng dụng web bởi việc thêm vào những giao tiếp không đồng bộ với máy chủ để hỗ trợ một cách thuận lợi hơn trong tương tác qua giao diện với người dùng Trong mô hình RIA,
số lần một trang web tải thành công không còn là quan trọng như những gì người
sử dụng nhận thấy Cơ chế tại máy khách cho phép tải sẵn một số nội dung có thể
sử dụng trong tương lai Các kỹ thuật đo lường mới đã được thiết lập cho ứng dụng RIA, cho phép lập các bản báo cáo từ những lần phản hồi qua kinh nghiệm của
Trang 17người sử dụng Trong trường hợp thiếu các chuẩn để thực hiện việc này, những nhà phát triển ứng dụng phải cung cấp mã ứng dụng để sản sinh ra được dữ liệu đo lường cần thiết
- Sự không đồng bộ hóa trong giao tiếp khiến việc xác định và đánh giá các vấn đề
về hiệu suất trở nên khó khăn hơn: Một nghịch lý là, những cải thiện làm tăng khả
năng tương tác của ứng dụng với người dùng cũng chính là nguyên nhân khiến chúng trở nên khó khăn hơn để đo lường, để hiểu, để thống kê và để quản lý Một
số ứng dụng RIA không đưa ra bất kỳ một yêu cầu nào theo phương thức HTTP GET từ trình duyệt sau khi trang đầu tiên được tải, bằng việc sử dụng các yêu cầu không đồng bộ từ tầng trung gian trên máy khách để khởi tạo tất cả các yêu cầu tiếp theo Tầng trung gian trong mô hình RIA có thể được lập trình để tiếp tục tải những nội dung web mới và làm tươi phần hiển thị, hoặc có thể xây dựng cơ chế từ máy chủ tự động đẩy nội dung mới về trình duyệt trên máy khách qua một kết nối luôn được duy trì Trong trường hợp đó, khái niệm “tải nội dung một trang web” sẽ không còn giá trị sử dụng Độ phức tạp này khiến ứng dụng trở nên khó có thể đo lường và phân tách được thời gian đáp ứng yêu cầu của ứng dụng, một yêu cầu cơ bản cho vấn đề phân biệt và quản lý các tầng dịch vụ mạng khác nhau Các công
cụ được thiết kế để đo lường các ứng dụng Web truyền thống có thể: dựa trên chi tiết của các ứng dụng và công cụ - thông kê mỗi một yêu cầu HTTP tương ứng với một trang web được tải, hoặc như một tập hợp riêng biệt các hoạt động trên máy chủ Tất cả cuối cùng đều không phản ánh những gì thật sự diễn ra tại ứng dụng áp dụng mô hình RIA
- Tầng trung gian tại máy khách khiến việc đo thời gian phản hồi trở nên khó khăn:
Đối với các ứng dụng Web truyền thống, phần mềm đo lường có thể ở tại/trên máy khách hoặc trên một máy nào đó khác gần với máy chủ, miễn sao chúng có thể quan sát được luồng giao thông mạng tại các tầng TCP và HTTP Bởi vì các giao thức là đồng bộ và có thể dự đoán trước, một gói dữ liệu có thể đọc và hiểu tại tầng
dữ liệu, và khả năng phản hồi được suy ra từ kinh nghiệm người dùng bởi việc theo dõi thông điệp HTTP và số lần các gói TCP cơ bản và thông điệp báo nhận (ACK) Kiến trúc RIA giảm thiểu khả năng của các ứng dụng packet sniffer bởi cơ chế máy khách làm phá vỡ giao tiếp giữa người sử dụng và máy chủ thành hai chu trình điều hành riêng biệt một cách không đồng bộ - chu trình thứ nhất được thực hiện trong phạm vi giữa tầng trung gian trên máy khách với người dùng, chu trình
Trang 18thứ hai được thực hiện trong phạm vi giữa tầng trung gian trên máy khách với máy chủ Cả hai chu trình này đều quan trọng bởi mỗi cái trong đó không thể hoạt động một mình, mối quan hệ giữa chúng định nghĩa ra hành vi của ứng dụng Tuy nhiên, mối quan hệ này chỉ phụ thuộc vào thiết kế ứng dụng, mà thông thường không thể được suy ra từ một công cụ đo lường nào đó, đặc biệt là những thứ mà có thể quan sát được chỉ một trong hai chu trình Bởi vậy, hầu hết các công cụ đo lường ứng dụng RIA hoàn thiện có thể chỉ đạt được bởi việc sử dụng các công cụ được đặt trên máy khách và quan sát được cả hai chu trình
1.6 Hiện trạng phát triển
Mô hình RIA mới ở giai đoạn đầu của quá trình phát triển, do đó hiện vẫn còn có những giới hạn và các yêu cầu cần xử lý tiếp tục như sau:
- Sự chấp nhận của trình duyệt: Nhiều ứng dụng RIA yêu cầu các trình duyệt web
hiện đại để chạy mà không chạy được trên các trình duyệt phiên cũ hoặc các phiên bản cũ của các trình duyệt hiện đại Những khả năng nâng cao của JavaScript áp dụng tại tầng trung gian trong mô hình RIA phải được hỗ trợ tại trình duyệt cũng như việc áp dụng các kỹ thuật XMLHTTPRequest cho giao tiếp giữa máy khách
và máy chủ, hay DOM Scripting, hoặc các kỹ thuật nâng cao của CSS cho phép thể hiện giao diện người dùng phong phú hơn
- Các chuẩn Web: Sự khác nhau giữa các trình duyệt Web khiến việc viết một ứng
dụng RIA để có thể chạy trên tất cả các trình duyệt trở nên khó khăn Tính bền vững của nền tảng phát triển của ngôn ngữ Java, đặc biệt là các phiên bản sau phiên bản Java 1.1, khiến công việc này trở nên đơn giản hơn đối với các ứng dụng RIA viết bởi Java Applet, mặc dù chúng nổi tiếng là thực thi chậm
- Các công cụ phát triển: Một số nền tảng phát triển ứng dụng theo mô hình RIA
như Ajax frameworks, hoặc các sản phẩm như Adobe Flex của hàng Adobe, Sliverlight của Microsoft cung cấp một môi trường tích hợp cho việc xây dựng các ứng dụng RIA
- Vấn đề về khả năng truy cập: việc có thêm các tương tác không đồng bộ trong hệ
thống yêu cầu cách tiếp cận kỹ thuật có thể gây ra một số hạn chế về khả năng truy cập của ứng dụng
- Sự chấp nhận của người sử dụng: Người sử dụng đã quen với các ứng dụng web
Trang 19chuẩn có thể thấy rằng, một số chức năng trên trình duyệt được không thực hiện được như nút “Trở lại – Back” Điều này làm người dùng khó chấp nhận thay đổi thói quen tương tác với ứng dụng
1.7 Những ưu việt được ghi nhận
Mặc dù việc phát triển ứng dụng theo mô hình RIA đang ở giai đoạn phát triên nên vẫn còn khá nhiều hạn chế, khó khăn và phức tạp so với việc phát triển ứng dụng destop thông thường Tuy nhiên mô hình này được sử dụng ngày một nhiều bởi những tính năng sau:
- Không yêu cầu cài đặt tại máy khách: việc cập nhật và phân phối ứng dụng là một
tiến trình được điều khiển một cách tự động và ngay lập tức trên máy chủ
- Nâng cấp lên các phiên bản mới một cách tự động
- Không cần quan tâm tới hệ điều hành: Người sử dụng có thể sử dụng ứng dụng từ
bất kỳ một máy tính nào có kết nối internet, và thông thường không cần phải quan tâm tới việc máy tính đó đang chạy hệ điều hành nào
- Hạn chế lây nhiễm virus: Các ứng dụng dựa trên web thường ít bị lây nhiễm virut
hơn so với các ứng dụng trực tiếp cài đặt và được thực thi trên máy khách
- Được người dùng web ưa thích hơn: Khi việc sử dụng web tăng, người sử dụng
máy tính sẽ trở nên ít mong muốn thử những rắc rối của việc cài đặt một phần mềm mới nếu có một lựa chọn thay thế khác đó là sử dụng những trình duyệt sẵn
có Điều này luôn là sự thật thậm chí nếu sự thay thế này dẫu có chậm hơn hay không có nhiều tính năng phong phú hơn đi chăng nữa
1.8 Các phương pháp và công nghệ sử dụng trong mô hình RIA
1.8.1 JavaScript
Ngôn ngữ và công nghệ quan trọng đầu tiên sẵn có, có khả năng chạy mã và cài đặt trên phần lớn các máy khách ứng dụng web là JavaScript Tại thời điểm ra đời, việc sử dụng javascript là tương đối hạn chế Tuy nhiên, kết hợp với các công nghệ khác nhau, javascript có thể xây dựng một hệ thống RIA mà không cần một giải pháp hợp nhất với phía máy khách Ajax là một thuật ngữ mới để chỉ sự kết hợp các kỹ thuật này thành một khung làm việc (Frameworks) và gần đây nổi bật nhất là được hãng Google sử dụng cho
Trang 20các dự án như Gmail, Google Map
Tuy nhiên, sử dụng nền tảng Ajax để tạo một ứng dụng lớn là vô cùng khó khăn, cần nhiều công nghệ khác phải tác động để chúng hoạt động và khả năng tương thích của trình duyệt yêu cầu rất trọng yếu Một loạt các nền tảng Ajax đã được phát triển phục vụ việc phát triển ứng dụng web với Javascript được dễ dàng hơn
1.8.2 Adobe Flash
Adobe Flash là một con đường khác để xây dựng các ứng dụng RIA Công nghệ này không phụ thuộc vào một nền tảng liên đới nào và khá mạnh để tạo các ứng dụng giao diện người dùng phong phú
Sản phẩm Adobe Flex cung cấp một cách để tạo các giao diện Flash bằng việc biên dịch MXML, một ngôn ngữ đặc tả giao diện dựa trên XML Hãng Adobe hiện hoạt động dựa trên việc cung cấp một nền tảng mạnh mẽ với bộ sản phẩm Adobe AIR, một công nghệ kết nối người sử dụng Flash HTML (bao gồm cả các ứng dụng Ajax) dựa trên các ứng dụng và PDFs AIR không phải là RIA, đến nay chúng được sử dụng để phát triển các ứng dụng Desktop bằng việc sử dụng các công nghệ Web
1.8.3 Windows presentation foundation(WPF) and silverlight
Với nền tảng NET 3.0, Microsoft đã giới thiệu bộ sản phẩm WPF nhằm cung cấp một cách thức xây dựng các ứng dụng đơn nền với một số điểm tương tự như các ứng dụng RIA sử dụng XAML và các ngôn ngữ lập trình ví dụ như C# hay Visual Basic Thêm vào đó, Microsoft cũng đã đưa ra thị trường một sản phẩm mới bổ sung được gọi là Silver cung cấp một tập nhỏ các tính năng của WPF chạy trên mọi thiết bị và đa nền
1.8.4 ActiveX Controls
Việc gắn các điều khiển ActiveX vào HTML đã tạo nên một cách thức vô cùng mạnh mẽ để phát triển các ứng dụng Internet theo mô hình RIA Tuy nhiên, chúng chỉ được đảm bảo chạy đúng trên trình duyệt IE của Microsoft Hơn nữa, từ khi hướng tiếp cận Active X phá vỡ mô hình sandbox, chúng trở thành mục tiêu tiềm năng cho chương trình virút máy tính và malware hoạt động Việc sử dụng ActiveX trở nên rủi ro cao về bảo mật và độ an toàn Hiện nay, Adobe Flash Player sử dụng cho trình duyệt IE được coi như là một ActiveX control cho các môi trường của Microsoft Tuy nhiên, nếu các tập đoàn thống nhất sử dụng IE như là trình duyệt chính thức, thì ActiveX vẫn là sự lựa chọn
Trang 21hoàn hảo cho việc xây dựng ứng dụng
1.8.5 JavaFX
Sun Microsystems đã đưa ra JavaFX, một dòng sản phẩm dựa trên công nghệ Java được thiết kế để cung cấp một chuẩn thống nhất trên cơ sở các kinh nghiệm đã được tích lũy về RIA trên một loạt các thiết bị bao gồm cả các thiết bị để bàn, các hộp set-top, các thiết bị mobile, và Blu-Ray player Nền JavaFX ban đầu bao gồm JavaFX script và JavaFX Mobile Trong đó JavaFX Script cho phép phát triển nhanh chóng các giao diện 2D phong phú bằng việc sử dụng cú pháp khai báo tương tự như SVG Hãng Sun dự kiến
sẽ phát triển JavaFX thành sản phẩm mã nguồn mở, còn JavaFX Mobile sẽ là sản phẩm thương mại thông qua bản quyền OEM cho các hãng sản xuất máy cầm tay và hãng truyền thông
1.8.6 Các kỹ thuật khác
- java Applet
- Ứng dụng Java
- Ngôn ngữ giao diện người sử dụng
- Ứng dụng RIA với công nghệ đẩy thời gian thực
- Các chức năng và công cụ phát triển phía máy khách cần cho ứng dụng RIA
1.9 Một số sản phẩm và công nghệ đáng chú ý
1.9.1 Adobe Flex
a Giới thiệu về Adobe Flex
Dòng sản phẩm Adobe Flex là giải pháp hoàn thiện nhất để phát triển các ứng dụng theo mô hình RIA cả trong lĩnh vực ứng dụng doanh nghiệp và phát triển các ứng dụng web thông dụng Flex được thiết kết để giúp các nhà phát triển ứng dụng cũng như các đơn vị tổ chức phát triển ứng dụng dễ dàng giải quyết những vấn đề gặp phải khi phát triển ứng dụng theo mô hình RIA Hiện nay, Flex đã được hàng trăm các đơn vị sử dụng trong các lĩnh vực ứng dụng khác nhau như: dịch vụ chăm sóc khách hàng của doanh nghiệp, dịch vụ bán hàng trên mạng, dịch vụ B2B, …
Flex cung cấp một mô hình lập trình bậc cao dưới dạng một khung làm việc Flex (Flex framework), kèm theo bộ công cụ xây dựng (Flex Builder) tích hợp với với môi
Trang 22trường phát triển (IDE) Eclipse, và các dịch vụ tích hợp dữ liệu (Flex Data Service) cho phép các tổ chức nhanh chóng triển khai các ứng dụng có khả năng tăng cường hiệu quả làm việc của người sử dụng cũng như lợi nhuận từ các dịch vụ trực tuyến, đồng thời vẫn đảm bảo khả năng tích hợp với các ứng dụng hay các website đã tồn tại
Những ứng dụng được triển khai có sử dụng Flex để phát triển cung cấp các tính năng được xây dựng căn cứ trên sự tổng kết, đúc rút từ nhu cầu và thói quen sử dụng của người dùng thông qua việc sử dụng những ưu điểm của phần mềm Flash Player và các trình duyệt web Được cài đặt trên 97% các máy tính PC kết nối mạng Internet, Flash Player cung cấp môi trường hoạt động hiệu xuất cao thống nhất trên tất cả các nền tảng khác nhau, hỗ trợ hiển thị tất cả các loại ngôn ngữ và hình ảnh, và các dạng dữ liệu khác
Để có được những khả năng đó, khung làm việc Flex sử dụng một tập phong phú các thành phần (component) thực hiện chức năng tạo giao diện tương tác với người sử dụng,
và các quy tắc thiết kế để xây dựng những giải pháp theo mô hình RIA
Flex cung cấp một tập các thành phần chạy trên phía máy khách dưới dạng các dịch vụ thực hiện việc tương tác với máy chủ ở xa thông qua SOAP Webservice, dịch vụ REST, hoặc giao thức HTTP, hay các giao thức truyền thông trên socket (cơ chế truyền nhận dữ liệu thông qua các cổng kết nối sử dụng giao thức TCP/IP ) Đối với các yêu cầu tích hợp phức tạp, Flex Data Service hỗ trợ thêm khả năng gửi nhận thông điệp, truyền dữ liệu âm thanh/hình ảnh theo thời gian thực, hoặc tích hợp với các thành phần đã được triển khai trên các máy chủ ứng dụng java hay bất cứ ứng dụng máy chủ chạy back-end (không trực tiếp tương tác với với người dùng) nào khác trong việc quản lý phiên làm việc, bảo mật…
Cuối cùng, Flex cung cấp một mô hình phát triển sản phẩm có hiệu quả cao, dễ dàng tích hợp với các quy trình phát triển hiện có, tuân theo các chuẩn cũng như căn cứ theo kinh nghiệm thực tế trong một thập kỷ phát triển ứng dụng web vừa qua Mô hình phát triển của Flex sử dụng XML để thiết kế giao diện tương tác với người dùng, tổ chức
và triển khai javascript tại tầng trung gian trên máy khách Flex Builder tích hợp với các công cụ IDE phổ biến (ví dụ: Eclipse) đảm bảo các tính năng như soạn thảo mã chương trình, kiểm soát lỗi, thiết kế giao diện trực quan, … giúp các nhà phát triển tận dụng được các kỹ năng sẵn có, được tích hợp với các hệ thống quản lý mã nguồn khác nhau (CVS, subVersion,…) Ngoài ra, Flex Builder cũng hỗ trợ kiểm thử tự động bằng các công cụ khác nhau
Trang 23b Flex và Nền tảng phát triển hỗ trợ của Adobe
Sự kết hợp với hãng Macromedia đã giúp Adobe xây dựng được giải pháp kết hợp được ưu điểm của các công cụ, dịch vụ và đối tượng khách hàng lại với nhau, qua đó chi phí phát triển và bảo trì vận hành mặc nhiên được giảm đi, cũng như làm giảm độ phức tạp của việc phát triển ứng dụng
Thông qua việc kết hợp giữa hai hãng có công nghệ mạnh này, Abode đã triển khai một nền tảng công nghệ có khả năng tạo ra một lĩnh vực mới, mà ở đó các ứng dụng có thể cải thiện một cách đáng kể cách thức làm thế nào để hoạt động kinh doanh có thể gắn kết với con người, với các tiến trình và với thông tin (Hình 1.5)
Hình 1.5: Kiến trúc của Adobe Engagement Platform
Trong đó
- Công nghệ Universal Client : Kết hợp với thế mạnh là sự phổ biến của Flash
Player với phần mềm Acrobat Reader, HTML, javascript, các nhà phát triển có thể triển khai các ứng dụng có thể kiểm soát được và chất lượng cao trên bất cứ trình
duyệt, thiết bị và nền tảng desktop nào
- Programming Model: mô hình phát triển của Flex đóng vai trò trung tâm trong
nền tảng công nghệ này Với những điểm mạnh của mô hình, Flex cho phép các tổ
Trang 24chức triển khai các ứng dụng RIA khai thác triệt để các thế mạnh của các công nghệ được triển khai trên máy khách
- Development and Design Tools: Cùng với các sản phẩm như Adobe Photoshop,
Dreamweaver, Flash Professional, và Illustrator, Adobe được thừa nhận là nhà cung cấp các giải pháp công nghệ hàng đầu trên thị trường ngày nay Thông qua việc tích hợp giữa Flex Builder với các công cụ của các hãng thứ ba, Adobe Flex cho phép người thiết kế và người phát triển ứng dụng kết hợp các công cụ đó lại để
tận dụng tối đa các kỹ năng và kinh nghiệm sẵn có
- Server and Framework: Adobe Server được xây dựng trên các nền tảng chuẩn đã
tồn tại như Java EE hoặc Microsoft Net kết hợp với việc cung cấp các dịch vụ đơn giản hóa việc tích hợp và mở rộng khả năng của các công nghệ triển khai trên máy khách Bên cạnh các dịch vụ được cung cấp bởi Flex Data Services, Flash Media Server cho phép tích hợp việc trình diễn các thông tin âm thanh và phim ảnh, sản phẩm Adobe LiveCycle cung cấp dịch vụ quản lý tiến trình xử lý nghiệp vụ, tạo tài liệu, bảo hiểm thông tin
c Kiến trúc vận hành của Flex
Kiến trúc vận hành của Flex tương tự như kiến trúc tương ứng của của các ứng dụng web, phần ứng dụng chạy trên máy khách được triển khai dưới dạng tệp nhị phân chứa các mã bytescode đã được biên dịch Người sử dụng sau đó sẽ triển khai tệp này trên máy chủ tương tự như đối với các têp dạng HTML hoặc các tệp hình ảnh Khi được yêu cầu bởi trình duyệt, tệp chứa mã bytescode sẽ được tải về máy khách và chạy bởi Flash Player (Hình 1.6)
Trang 25Hình 1.6: Kiến trúc hoạt động của Flex
Trong hình 1.6, khi bắt đầu, ứng dụng có thể yêu cầu thêm nhiều dữ liệu và nội dung khác nhau trên mạng thông qua giao thức HTTP hoặc qua các webservices (SOAP) Phần ứng dụng chạy trên máy khách của Flex có thể kết nối với bất kỳ môi trường ứng dụng Server nào, bao gồm các webserver chuẩn, các môi trường chạy các ngôn ngữ script thông dụng như Java Server Pages (JSP), Active Server Pages (ASP), ASP Net, PHP,…
Nếu phần ứng dụng Flex chạy trên máy khách được sử dụng để kết nối với Flex Data Services, ứng dụng sẽ có khả năng truy cập thêm các dịch vụ khác: Có thể gọi trực tiếp các đối tượng được viết bằng ngôn ngữ java, gửi các thông điệp tới các ứng dụng Flex chạy trên các máy trạm khác, tích hợp được với Java Message Service Flex Data Services chạy trên ứng dụng máy chủ Java Web Container
Để xây dựng ứng dụng Flex, Adobe cung cấp 2 ngôn ngữ là MXML và ActionScript
d Ngôn ngữ MXML
Adobe cung cấp ngôn ngữ MXML theo chuẩn ngôn ngữ XML được sử dụng để xây dựng giao diện người dùng bằng một thư viện các thẻ (tag) và thực hiện các thao tác với tầng dịch vụ trên máy chủ web như truy cập các kho dữ liệu (data source) trên máy
Trang 26chủ hoặc gắn (bind) dữ liệu từ nguồn dữ liệu trên máy chủ vào các thẻ điều khiển dữ liệu, hoặc truy cập vào các webservice … Về mặt hình thức, các thẻ của MXML tương
tự như các thẻ HTML Tuy nhiên, điểm khác biệt cơ bản giữa HTML và MXML thể hiện ở việc MXML là ngôn ngữ định nghĩa các ứng dụng (MXML-defined applications) được Adobe® Flash® Player dịch và tạo ra các tệp SWF, nhờ đó tạo ra được các ứng dụng có nội dung động, phong phú, tương tác với người dùng hơn là các trang web được tạo bởi HTML bằng cách truyền thống Ví dụ một số thẻ MXML:
- Thẻ <mx:Application> </mx:Application> chứa tất cả các thẻ khác của MXML trong tệp mxml
- Thẻ định nghĩa nút lệnh <mx:Button></mx:Button> hoặc <mx:Button/>:
<mx:Button id=”myButton” label=”I’m a button!” />
- Thẻ định nghĩa danh sách dữ liệu dạng bảng 2 chiều <mx: DataGrid> </mx:
DataGrid> Ví dụ:
<mx:DataGrid id=”entries” width=”{reader.width-15}”
dataProvider=”{httpRSS.result.rss.channel.item}”
cellPress=”{body.htmlText=httpRSS.result.rss.channel.item[entries.selectedIndex] description}”>
<mx:columns>
<mx:Array>
<mx:DataGridColumn columnName=”title” headerText=”Title” />
<mx:DataGridColumn columnName=”pubDate” headerText=”Date”/> </mx:Array>
</mx:columns>
</mx:DataGrid>
- Thẻ định nghĩa điều khiển lưu nội dung văn bản textArea
<mx:TextArea></mx:TextArea> hoặc <mx:TextArea/> Ví dụ:
<mx:TextArea id=”body” editable=”false” width=”{reader.width-15}”
height=”300” />
Tất cả các thẻ MXML được đặt trong nội dung tệp văn bản lưu dưới dạng có tên mở
rộng là mxml Sau đây là một ví dụ HelloWorld viết bằng MXML lưu trong tệp
Trang 27mxmlc –show-actionscript-warnings=true –strict=true HelloWorld.mxm
Ta sẽ thu được tệp HelloWorld.SWF
Trong thực tế, một ứng dụng viết bằng ngôn ngữ MXML được viết trên nhiều tệp có phần mở rộng là mxml Tuy nhiên, chỉ có một tệp trong ứng dụng chứa thẻ
<mx:Application> </mx:Application> được gọi là tệp chính Từ mỗi tệp MXML, có thể tham chiếu tới các tệp MXML khác, hoặc tệp viết bằng ngôn ngữ ActionScript, hoặc một tệp biết bằng một số ngôn ngữ khác đã được biên dịch Việc tổ chức một ứng dụng viết bằng MXML tương tự như các ngôn ngữ lập trình khác như việc chia module, chia thành nhiều tệp MXML, tệp ActionScript khác nhau Để thuận tiện cho việc tổ chức và xây dựng ứng dụng MXML, hãng Adobe cung cấp bộ công cụ Flex Builder để các nhà phát triển sử dụng
e Ngôn ngữ ActionScript
Ngoài khả năng thể hiện giao diện và các phương thức tương tác chuẩn gắn liền với các thẻ MXML, Flex sử dụng thêm ngôn ngữ ActionScript để :
- Định nghĩa các gắn (listener) với các sự kiện trên các thẻ
- Định nghĩa các xử lý trong thẻ <mx:Script>
- Gộp (include) các tệp ActionScript lại với nhau
- Nhúng (import) các lớp viết bằng ActionScript vào trong một tệp ActionScript
- Tạo các thành phần (component)
Sử dụng ActionScript bắt các sự kiện trong MXML
Trang 28Một cách sử dụng ActionScript trong MXML là bắt các sự kiện gắn với các thẻ Ví dụ:
Trong đó, bộ dịch MXML sẽ nhận biết từ khóa click và tạo ra phương thức bằng mã
ActionScript bắt sự kiện onclick như sau:
public function myButton_click(event:MouseEvent):void {
textarea1.text=‟Hello World‟;
}
Viết các mã ActionScript trong tệp mxml
Để chèn các đoạn mã ActionScript trong tệp MXML, sử dụng thẻ <mx:Script>
public var s:Boolean;
public function doSomething():void {
// The following statements must be inside a function
Trang 29Các thành phần tạo bởi ActionScript có thể được sử dụng để xử lý các hiệu ứng về đồ họa,
về các quy tắc nghiệp vụ hoặc tham chiếu tới các thành phần khác Các thành phần cũng
có thể được thừa kế từ thành phần khác Ví dụ:
package myControls {
import mx.controls.Button;
public class MyButton extends Button {
public function MyButton() {
Trang 30đó, HTML và CSS đóng vai hiển thị dữ liệu, mô hình DOM trình bày thông tin động, đối tượng XMLHttpRequest trao đổi dữ liệu không đồng bộ với máy chủ web, còn XML là định dạng chủ yếu cho dữ liệu truyền đi Đây đều là công nghệ sẵn có nhưng Javacript đã lắp ráp chúng lại để thực hiện những “sứ mệnh” đáng khâm phục
Nguồn gốc của AJAX được bắt đầu từ khi Microsoft phát triển công nghệ Remote Scripting vào năm 1998 Tuy nhiên, phương pháp tải không đồng bộ nội dung trên một trang web đã xuất hiện trong thành tố IFRAME của Internet Explorer 3 (1996) và thành tố LAYER của Netscape 4.0 năm 1997 Khi giới thiệu Internet Explorer 4.0, Microsoft đã sử dụng mô hình đối tượng tài liệu DOM khác biệt Đến năm 2000, Netscape hoàn toàn đánh mất thị trường trình duyệt vào tay hãng phần mềm của Bill Gates và thành tố LAYER cũng không còn được các chuyên gia phát triển web chú ý tới
Phải vài năm sau, AJAX mới lại lôi kéo được sự quan tâm của giới công nghệ và trở thành công cụ cải tiến giao diện người dùng cho ứng dụng web Thuật ngữ này cũng chỉ mới xuất hiện cách đây vài năm (tháng 2/2005) trong bài viết nổi tiếng của Jesse
James Garrett trên trang Adaptive Path Từ đó, AJAX trở thành trung tâm trong mọi câu
chuyện liên quan đến thế hệ Web 2.0
a AJAX hoạt động nhƣ thế nào?
Trang 31Hình 1.7: Ứng dụng web truyền thống (trái) và ứng dụng AJAX
Để khắc phục hạn chế trong mô hình hoạt động đồng bộ của ứng dụng web truyền thống, các chuyên gia phát triển giới thiệu hình thức trung gian – cơ chế xử lý AJAX – giữa máy khách và máy chủ Điều này giống như việc tăng thêm một lớp giữa cho ứng dụng để giảm quá trình “đi lại” của thông tin và giảm thời gian phản hồi Thay vì tải lại toàn bộ một trang web, nó chỉ nạp những thông tin được thay đổi, còn giữ nguyên các phần khác Vì thế, khi duyệt một trang hỗ trợ AJAX, người sử dụng không bao giờ nhìn thấy một cửa sổ trắng (blank) và biểu tượng đồng hồ cát – dấu hiệu cho thấy máy chủ đang thực hiện nhiệm vụ Ví dụ, trong một website ảnh, với ứng dụng truyền thống, toàn
bộ trang chứa các ảnh sẽ phải mở lại từ đầu nếu có một thay đổi nào đó trên trang Còn khi áp dụng AJAX, DHTML chỉ thay thế đoạn tiêu đề và phần vừa chỉnh sửa, do vậy tạo nên các giao tiếp trơn tru, nhanh chóng (Hình 1.7)
Trang 32Tương tác của người dùng
Trao đổi dữ liệu với máy dịch vụ
Xử lý tại máy dịch vụ
Dữ liệu đầu vào
Dữ liệu hiển thị
Trao đổi dữ liệu với máy dịch vụ
Xử lý tại máy dịch vụ
Hình 1.8: Tương tác đồng bộ trong ứng dụng web truyền thống (trên) và
không đồng bộ trong ứng dụng AJAX.
“Mọi thao tác của người sử dụng sẽ gửi lệnh JavaScript tới tầng xử lý trung gian trên máy khách của AJAX, thay vì tạo ra một yêu cầu HTTP và truy vấn trực tiếp tới máy chủ”, Jesse James Garrett đã ghi trong bài viết đầu tiên định nghĩa về thuật ngữ này “Nếu cần gì từ server, như tải về bổ sung mã giao diện hay nhận dữ liệu mới, AJAX sẽ truyền yêu cầu tới máy chủ một cách không đồng bộ, thông thường sử dụng XML, mà không
Trang 33làm gián đoạn sự tương tác của người dùng với ứng dụng web” (Hình 1.8)
- Gửi một yêu cầu đến máy chủ: sử dụng đối tượng XMLHttpRequest hoặc
Microsoft.XMLHTTP để thực hiện rất dễ dàng Tất cả những việc ta cần làm là truyền cho nó địa chỉ URL của máy chủ Ví dụ: Ta sẽ sử dụng hàm viết bằng javascript như sau:
var req;
function retrieveURL(url,nameOfFormToPost) {
// Lấy các tham số trên form
url=url+getFormAsString(nameOfFormToPost);
if (window.XMLHttpRequest) {//Trình duyệt không phải là MS IE
//sử dụng đối tượng XMLHttpRequest
req = new XMLHttpRequest();
for ( var i=formElements.length-1; i>=0; i ){
returnString=returnString+ ”&” +escape(formElements[i].name)+ ”=” +escape(fo rmElements[i].value);
< html : form action =”/viduajax” >
<! …
=”retrieveURL(„/struts-ajax/viduajax.do?ask=COMMAND_NAME_1‟,‟inputForm‟);”/>
Trang 34<! …
</html:form>
Mỗi khi giá trị của điều khiển textbox có tên là maub thay đổi giá trị, sẽ có một yêu
cầu được tự động gửi tới máy chủ thông qua lời gọi hàm retrieveURL với tham số
là đường dẫn url của máy chủ và tên của thẻ form trong trang chứa điều khiển
- Nhận dữ liệu kết quả xử lý từ máy chủ: Sau khi gửi yêu cầu tới máy chủ, ứng
dụng sẽ tự động cập nhật và xử lý dữ liệu (không phải trang thông tin-page) trên kết quả trả về từ máy chủ Việc nhận biết dữ liệu trả về từ máy chủ, sử dụng hàm sau:
function processStateChange() {
if (req.readyState == 4) { // hoàn thành xử lý trên máy chủ
if (req.status == 200) { // Nhận được dữ liệu từ máy chủ
b Các ứng dụng AJAX phổ biến
Google Suggest hiển thị các thuật ngữ gợi ý gần như ngay lập tức khi người sử dụng chưa gõ xong từ khóa Còn với Google Maps, mọi người có thể theo dõi những thay đổi, xê dịch, kéo thả bản đồ như trên môi trường desktop Google Suggest và Google Maps là hai ví dụ nổi bật về phương pháp ứng dụng web thế hệ mới
Thách thức lớn nhất khi tạo ứng dụng AJAX không nằm ở khâu kỹ thuật bởi những thành phần của nó đã xuất hiện từ lâu, hoạt động ổn định và được nhiều người biết đến Vấn đề ở đây chỉ là “các chuyên gia thiết kế cần quên đi những giới hạn của web, bắt đầu nghĩ rộng hơn, sâu hơn về khả năng của công nghệ và sáng tạo nó theo cách riêng của
Trang 35mỗi người”, Alexei White, Giám đốc sản xuất của công ty eBusiness (Mỹ), nhận xét
“AJAX sẽ làm mất dần ảnh hưởng của Microsoft trên thị trường Tuy chưa thể lấn át hoàn toàn, nó sẽ mang lại những tính năng thay thế cho hầu hết các sản phẩn như Office”
c Những nhƣợc điểm của AJAX
AJAX có thể góp phần tạo nên một thế hệ mới cho ứng dụng web (như colr.org hay backpackit.com) Tuy nhiên, nó cũng là một công nghệ “nguy hiểm” khi gây ra không
ít rắc rối về giao diện người dùng Chẳng hạn, phím “Back” (trở lại trang trước) được đánh giá cao trong giao diện của trình duyệt website chuẩn Đáng tiếc, chức năng này không hoạt động ăn khớp với Javascript và mọi người không thể tìm lại nội dung trước đó khi bấm phím Back Bởi vậy, chỉ một sơ xuất nhỏ là dữ liệu trên trang đã bị thay đổi và khó có thể khôi phục lại được Đây là một trong những nguyên nhân chính khiến nhiều người không ủng hộ ứng dụng Javascript
Bên cạnh đó, mọi người không thể lưu lại địa chỉ web vào thư mục Favorite (Bookmark) để xem lại về sau Do áp dụng lớp trung gian để giao tiếp, các ứng dụng AJAX không có một địa chỉ cố định cho từng nội dung Khiếm khuyết này làm cho AJAX
dễ “mất điểm” trong mắt người dùng
Những trình duyệt hỗ trợ AJAX là Microsoft Internet Explorer 5.0 trở lên; các trình duyệt dựa trên Gecko như Mozilla, Firefox, SeaMonkey, Epiphany, Galeon và Netscape 7.1; trình duyệt chứa KHTML API 3.2 trở lên như Konqueror, Apple Safari…
Trang 36CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
QUẢN LÝ TÁC NGHIỆP VĂN PHÒNG
2.1 Mục tiêu
- Xây dựng một hệ thống thông tin thống nhất phục vụ điều hành và quản lý công
văn, công việc tại TTCNTT cũng như các đơn vị trong nội bộ hệ thống
NHNo&PTNTVN
- Nâng cao công tác quản lý, phân công công việc, giám sát việc thực hiện công việc
một cách hiệu quả, nhanh chóng nắm bắt được thông tin, tiến độ thực hiện công
việc
2.2 Phạm vi
- Đối tượng sử dụng: Toàn bộ cán bộ, nhân viên hoạt động trong các phòng ban của
các đơn vị trong Ngân hàng Nông nghiệp và Phát triển Nông thôn Việt nam có cài
đặt phần mềm
- Phạm vi ứng dụng : Ứng dụng được triển khai tại tất các đơn vị thuộc Ngân hàng
Nông nghiệp và Phát triển Nông thôn Việt Nam
Trang 372.3 Hiện trạng
2.3.1 Giới thiệu
Thành lập ngày 26/3/1988, hoạt động theo Luật
các Tổ chức Tín dụng Việt Nam, đến nay Ngân hàng
Nông nghiệp và Phát triển Nông thôn Việt Nam
(AGRIBANK) hiện là Ngân hàng thương mại hàng đầu
giữ vai trò chủ đạo và chủ lực trong đầu tư vốn phát triển
kinh tế nông nghiệp, nông thôn cũng như đối với các lĩnh
vực khác của nền kinh tế Việt Nam
AGRIBANK là ngân hàng lớn nhất Việt Nam cả
về vốn, tài sản, đội ngũ CBNV, màng lưới hoạt động và
số lượng khách hàng Đến tháng 3/2007, vị thế dẫn đầu
của AGRIBANK vẫn được khẳng định với trên nhiều
phương diện: Tổng nguồn vốn đạt gần 267.000 tỷ đồng,
vốn tự có gần 15.000 tỷ đồng; Tổng dư nợ đạt gần
239.000 tỷ đồng, tỷ lệ nợ xấu theo chuẩn mực mới, phù
hợp với tiêu chuẩn quốc tế là 1,9% AGRIBANK hiện có
hơn 2200 chi nhánh và điểm giao dịch được bố chí rộng khắp trên toàn quốc với gần 30.000 cán bộ nhân viên
Là ngân hàng luôn chú trọng đầu tư đổi mới và ứng dụng công nghệ ngân hàng phục vụ đắc lực cho công tác quản trị kinh doanh và phát triển màng lưới dịch vụ ngân hàng tiên tiến AGRIBANK là ngân hàng đầu tiên hoàn thành giai đoạn 1 Dự án Hiện đại hóa hệ thông thanh toán và kế toán khách hàng (IPCAS) do Ngân hàng Thế giới tài trợ và đang tích cực triển khai giai đoạn II của dự án này Hiện AGRIBANK đã vi tính hoá hoạt động kinh doanh từ Trụ sở chính đến hầu hết các chi nhánh trong toàn quốc; và một hệ thống các dịch vụ ngân hàng gồm dịch vụ chuyển tiền điện tử, dịch vụ thanh toán thẻ tín dụng quốc tế, dịch vụ ATM, dịch vụ thanh toán quốc tế qua mạng SWIFT Đến nay, AGRIBANK hoàn toàn có đủ năng lực cung ứng các sản phẩm, dịch vụ ngân hàng hiện đại, tiên tiến, tiện ích cho mọi đối tượng khách hàng trong và ngoài nước
Là một trong số ngân hàng có quan hệ ngân hàng đại lý lớn nhất Việt Nam với trên
979 ngân hàng đại lý tại 113 quốc gia và vùng lãnh thổ tính đến tháng 2/2007 Là thành
Hình 2.1: Trụ sở chính của NHNo & PTNT
Trang 38viên Hiệp hội Tín dụng Nông nghiệp Nông thôn Châu Á Thái Bình Dương (APRACA), Hiệp hội Tín dụng Nông nghiệp Quốc tế (CICA) và Hiệp hội Ngân hàng Châu Á (ABA);
đã đăng cai tổ chức nhiều hội nghị quốc tế lớn như Hội nghị FAO năm 1991, Hội nghị APRACA năm 1996 và năm 2004, Hội nghị tín dụng nông nghiệp quốc tế CICA năm
2001, Hội nghị APRACA về thuỷ sản năm 2002
Là ngân hàng hàng đầu tại Việt Nam trong việc tiếp nhận và triển khai các dự án nước ngoài, đặc biệt là các dự án của WB, ADB, AFD Các dự án nước ngoài đã tiếp nhận và triển khai đến cuối tháng 2/2007 là 103 dự án với tổng số vốn trên 3,6 tỷ USD, số vốn qua NHNo là 2,7 tỷ USD, đã giải ngân được 1,1 tỷ USD
Với vị thế là ngân hàng thương mại hàng đầu Việt nam, AGRIBANK đã nỗ lực hết mình, đạt được nhiều thành tựu đáng khích lệ, đóng góp to lớn vào sự nghiệp công nghiệp hoá, hiện đại hoá và phát triển kinh tế của đất nước.
2.3.2 Mô hình tổ chức của NHNo&PTNTVN
Mô hình tổng quát:
Hội đồng quản trị
Tổng giám đốc
Các Phó tổng giám đóc
Hệ thống các Ban, Phòng chức năng tại Trụ sở chính
Ban kiểm soát Hội đồng quản trị
Các bộ phận giúp việc
Hội đồng quản trị
Hình 2.2: Mô hình tổng quát
Hệ thống tổ chức
Trang 39Chi nhánh cấp 2
Chi nhánh cấp 3
Phòng giao dịch
Hình 2.3: Hệ thống tổ chức
2.3.3 Công tác điều hành và quản lý công việc
Hiện nay, các chương trình phần mềm phục vụ các nghiệp vụ ngân hàng như nghiệp vụ Core-bank, nghiệp vụ thanh toán thẻ, nghiệp vụ Phân loại nợ trích lập dự phòng và chấm điểm khách hàng tín dụng, Ngân hàng bán lẻ, v.v… đã đảm bảo được việc quản lý mọi nghiệp vụ thanh toán giao dịch qua ngân hàng cho mọi loại đối tượng khách hàng có nhu cầu
Theo xu thế chung của công nghệ trên thế giới, NHNo cũng đã có những mối quan tâm đầu tư thích đáng cho việc nghiên cứu các công nghệ mới ứng dụng phát triển các hệ thống phục vụ quản lý điều hành nội bộ trong hệ thống cũng như đối với khách hàng, đặc biệt là các công nghệ dựa trên Web
Là một ngân hàng lớn, nhiều đơn vị và phòng ban trực thuộc, với mạng lưới chi nhánh trải khắc các tỉnh thành cả nước, nhu cầu tổ chức, kiểm soát, đánh giá hiệu quả hoạt động là vô cùng quan trọng Được sự đồng ý của lãnh đạo ngân hàng, lãnh đạo Trung tâm công nghệ thông tin đã giao cho phòng Nghiên cứu phát triển, kết hợp với các phòng
ban và đơn vị liên quan, nghiên cứu triển khai xây dựng phần mềm ứng dụng Quản lý tác nghiệp văn phòng – Office Management System (OMS) bao gồm các chức năng chính
như sau:
- Quản lý công văn nội bộ
- Quản lý hoạt động điều hành
- Trao đổi thông tin trong nội bộ cơ quan
Trang 40Hiện tại, về mặt nghiệp vụ, các công văn được xử lý như sau:
Mô hình lưu chuyển công văn trong hệ thống