TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA KHOA HỌC TỰ NHIÊN
BỘ MÔN TOÁN
------------
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
ỨNG DỤNG MATLAB TRÊN
.NET FRAMEWORK 3.5 TRONG THỐNG KÊ
Giáo viên hướng dẫn:
Th.s NGUYỄN THỊ HỒNG DÂN
(BỘ MÔN TOÁN – KHOA KHTN)
Sinh viên thực hiện:
BÙI NGUYỄN QUỐC TOÀN
NGÀNH: TOÁN ỨNG DỤNG
CẦN THƠ – 06/2010
i
LỜI CẢM ƠN
-----------Hoàn thành luận văn này, ngoài những nổ lực của bản thân, còn có sự đóng góp
không nhỏ của người thân, thầy cô, bạn bè…
Con xin chân thành cảm ơn Cha Mẹ đã sinh thành, nuôi dạy con khôn lớn và trực
tiếp hỗ trợ con trong quá trình sinh hoạt và học tập xa nhà.
Em xin cảm ơn quý Thầy Cô trường Đại học Cần Thơ, đặc biệt là các thầy cô bộ
môn Toán khoa Khoa học Tự Nhiên, những người đã giáo dục truyền đạt cho em kiến
thức dưới mái trường.
Em xin gửi lời cảm ơn đặc biệt đến Cô Nguyễn Thị Hồng Dân (Bộ môn Toán
Khoa Khoa Học Tự Nhiên), Thầy Dương Tấn Sỉ (Bộ môn Vật Lý Khoa Sư Phạm) đã rất
tận tình đ ịnh hướng, phác thảo các ý tư ởng và tạo điều kiện tốt để em hoàn thành luận
văn này.
Em xin cảm ơn cô Dương Thị Tuyền trong vai trò Cố vấn học tập đã tận tình giúp
đỡ, hướng dẫn các vấn đề liên quan đến công tác học vụ trong suốt thời gian qua, đặc
biệt là các thủ tục trong quá trình thực hiện và hoàn tất luận văn.
Tôi xin cảm ơn những người bạn đã quan tâm đ ến đề tài cùa tôi cũng như ủng hộ
tôi trong suốt thời gian thực hiện luận văn này.
Cuối cùng, tôi xin cảm ơn, chúc mọi người sức khỏe và công tác tốt.
Cần Thơ, tháng 6 năm 2010
Sinh viên thực hiện
Bùi Nguyễn Quốc Toàn
ii
TÓM TẮT
Ngày nay, việc sử dụng phần mềm máy tính để giải quyết các bài toán trong thống
kê được sử dụng rộng rãi và thêm chức năng theo nhu cầu xã hội. Hiện nay, hầu hết
người dùng các phần mềm tính toán desktop gặp phải một số vấn đề về yêu cầu phần
cứng, tính tương thích của phần mềm, giá phần mềm họ dùng và phải trả nhiều hơn họ
dùng.
Mặt khác, ứng dụng trực tuyến đang phát triển mạnh mẽ và ngày càng phổ biến
bởi những khả năng ưu việt của nó. Từ đó, để tiết kiệm chi phí và giảm các vấn đề
truyền thống của phần mềm desktop, việc ứng dụng công nghệ phần mềm trực tuyến là
một nhu cầu thiết yếu.
Trong thời gian thực hiện đề tài “Ứng dụng MATLAB trong .NET Framework 3.5
trong Thống”, tôi đã áp d ụng kiến thức học từ nhà trường và tích lũy đư ợc nhiều kinh
nghiệm trong xây dựng trực tuyến có sử dụng tài nguyên mở rộng.
Rất mong nhận được sự góp ý của quý Thầy, Cô và các bạn để chương trình hiệu
quả hơn!
iii
ABSTRACT
Today, using computer software to solve problems in statistics have been using
popularly and more functions for social requirements. Currently, most of people who
are using desktop calculus software reach some problem about hardware requirements,
compatibly software, prices of software they used and must to pay rather than what they
use.
Otherwise, online application have been developing strongly and increasing
popularly because of their preeminent abilities. Since then, to save fee and reduce
traditional problems of desktop software, applying online software technology is a
essential need.
Duration making the project “Applying MATLAB into .NET Framework 3.5 in
Statistics”, I applied the knowledge learned in school anh accured much experience in
contruction of online application that using extend resources.
I hope to receive comments from teachers and other students to make the
programe more effect!
iv
DANH MỤC CÁC TỪ VIẾT TẮT/ KÝ HIỆU
Admin: Administrator
AJAX: Asynchronous JavaScript and XML
CLR:
Common Language Runtime
CSS:
Cascading Style Sheets
IDE:
Integrated Development Environment
M-file: Tập tin chứa hàm do người dùng định nghĩa trong MATLAB
MSF:
Mean Square for factor
MSE:
Mean Square for Error
SSE:
Sum of Squares for Error
SSF:
Sum of Squares for Factor
SST:
Total Sum of Squares
DANH MỤC CÁC BẢNG
Bảng I.1. Luật chuyển đổi kiểu dữ liệu từ .NET sang MATLAB qua lớp MWArray .... 9
Bảng I.2. Cấu trúc thư mục sau khi biên dịch ............................................................. 17
Bảng I.3. Trình bày dữ liệu bài toán phân tích phương sai một nhân tố ...................... 30
Bảng I.4. Trình bày kết quả bài toán phân tích phương sai một nhân tố ..................... 30
Bảng I.5. Trình bày dữ liệu bài toán phân tích phương sai 2 nhân tố .......................... 32
Bảng I.6. Trình bày kết quả bài toán phân tích phương sai 2 nhân tố.......................... 33
v
DANH MỤC CÁC HÌNH
Hình I.1 Các toolboxes trong MATLAB R2009b ......................................................... 5
Hình I.2 Phát triển ứng dụng .NET dựa trên các thành phần biên dịch từ MATLAB .... 8
Hình I.3 Kiến trúc .NET Framework.......................................................................... 11
Hình I.4 Tổng quan quá trình xử lý và tính toán dữ liệu ............................................. 15
Hình I.5 Hộp Deployment Project .............................................................................. 17
Hình I.6 Chuẩn bị các lớp, thêm các tập tin để chuẩn bị biên dịch.............................. 18
Hình I.7 Quá trình biên dịch ...................................................................................... 19
Hình I.8 Cửa sổ quản lý các tài nguyên và các kết quả tính toán ................................ 20
Hình I.9 Bảng Dir dùng cho việc lưu trữ và quản lý các tài nguyên người dùng ......... 21
Hình I.10 Sơ đồ quan hệ các bảng trong cơ sở dữ liệu phục vụ cho quản lý người dùng
.................................................................................................................................. 23
Hình III.1 Trang đăng nhập ........................................................................................ 44
Hình III.2 Giao diện làm việc chính ........................................................................... 44
Hình III.3 Nhập liệu trực tiếp trên vùng làm việc ....................................................... 45
Hình III.4 Nhập liệu từ dữ liệu trong tập tin ............................................................... 45
Hình III.5 Giao diện trang trợ giúp............................................................................. 46
Hình III.6 Trang quản lý người dùng ......................................................................... 46
Hình III.7 Trang quản lý dữ liệu trợ giúp ................................................................... 47
Hình III.8 Kết quả bài toán kiểm định dấu ................................................................. 47
Hình III.9 Kết quả bài toán kiểm định tính độc lập..................................................... 48
Hình III.10 Kết quả bài toán phân tích phương sai một nhân tố.................................. 49
Hình III.11 Kết quả bài toán phân tích phương sai hai nhân tố ................................... 50
Hình III.12 Kết quả bài toán hồi quy tuyến tính đơn .................................................. 51
Hình III.13 Kết quả bài toán hồi quy tuyến tính bội ................................................... 52
vi
MỤC LỤC
LỜI CẢM ƠN ............................................................................................................. i
TÓM TẮT ..................................................................................................................ii
ABSTRACT ............................................................................................................. iii
DANH MỤC CÁC TỪ VIẾT TẮT/ KÝ HIỆU........................................................ iv
DANH MỤC CÁC BẢNG ........................................................................................ iv
DANH MỤC CÁC HÌNH .......................................................................................... v
MỤC LỤC ................................................................................................................. vi
MỞ ĐẦU .................................................................................................................... 1
NỘI DUNG................................................................................................................. 4
CHƯƠNG I.
TỔNG QUAN VỀ ỨNG DỤNG ...................................................... 4
I. GIỚI THIỆU VỀ MATLAB R2009b ................................................................. 4
1. Tổng quan ......................................................................................................... 4
2. Hệ thống MATLAB .......................................................................................... 5
3. MATLAB builder NE ....................................................................................... 6
4. Giao tiếp kiểu dữ liệu, thực thi M-Code trong .NET .......................................... 8
II. VỀ VISUAL STUDIO 2008............................................................................... 9
1. Tổng quan ......................................................................................................... 9
2. Giới thiệu ........................................................................................................ 10
III. VỀ SQL Server 2005 Express Edition........................................................... 12
1. Giới thiệu ........................................................................................................ 12
2. Các thành phần của SQL Server 2005 Express Edition .................................... 13
IV. TỔNG QUAN TIẾN TRÌNH SỬ DỤNG MATLAB VÀ ASP.NET ĐỂ
TRIỂN KHAI ỨNG DỤNG WEB ....................................................................... 14
1. Tiền đề cho sự kết hợp MATLAB và ASP.NET .............................................. 14
2. Giao diện người dùng, quá trình xử lý dữ liệu và tính toán .............................. 14
vii
3. Quá trình quản lý và lưu trữ dữ liệu đầu vào, kết quả đầu ra ............................ 19
4. Vấn đề người dùng trong ứng dụng ................................................................. 22
5. Các lớp sử dụng trong ứng dụng ...................................................................... 23
CHƯƠNG II. MỘT SỐ BÀI TOÁN TRONG THỐNG KÊ ................................ 25
I. KIỂM ĐỊNH GIẢ THUYẾT ............................................................................ 25
1. Kiềm định dấu ................................................................................................. 25
2. Kiểm định về tính độc lập................................................................................ 27
I. Phân tích phương sai ........................................................................................ 29
1. Phân tích phương sai một nhân tố .................................................................... 29
2. Phân tích phương sai hai nhân tố ..................................................................... 32
II. TƯƠNG QUAN VÀ HỒI QUY....................................................................... 34
1. Tương quan ..................................................................................................... 34
2. Hồi quy tuyến tính đơn .................................................................................... 37
3. Hồi quy tuyến tính bội ..................................................................................... 40
CHƯƠNG III. DEMO ........................................................................................... 44
I. CÁC MÔĐUN LIÊN QUAN ............................................................................ 44
II. CÁC BÀI TOÁN MINH HỌA ........................................................................ 47
1. Bài toán về kiểm định dấu ............................................................................... 47
2. Bài toán về kiểm định tính độc lập .................................................................. 48
3. Bài toán phân tích phương sai ......................................................................... 48
4. Hồi quy tuyến tính........................................................................................... 50
CHƯƠNG IV. KẾT LUẬN ................................................................................... 53
TÀI LIỆU THAM KHẢO ....................................................................................... 55
1
MỞ ĐẦU
Ngày nay, cùng với sự phát triển của nền kinh tế, xã hội, công tác thống kê, tính
toán được sử dụng trong nhiều lĩnh vực của đời sống xã hội và kinh tế. Song song đó,
nó cũng gặp nhiều thử thách mới, về khả năng lưu trữ, tính tiện lợi trong quá trình thự
hiện,… do đó việc sử dụng các công cụ hỗ trợ tính toán là một nhu cầu mang tính khách
quan. Với những bước tiến vượt bậc của công nghệ thông tin đã có rất nhiều phần mềm
ra đời phục vụ cho nhiều lĩnh vực khoa học kỹ thuật trong đó có công tác thống kê tính
toán.
MATLAB, một sản phẩm của công ty Mathworks, là một môi trường tính toán số
và lập trình với rất nhiều ứng dụng trong lĩnh vực khoa học kỹ thuật trong đó có thống
kê và tính toán. Phần mềm này đã đư ợc đưa vào giảng dạy tại các trường đại học, cao
đẳng ở nước ta. Sức mạnh và tính đa dụng của nó đã đu ợc chứng thực trong suốt quá
trình ứng dụng thời gian qua.
Tuy nhiên, cùng với các tính năng mạnh mẽ ngày càng được hỗ trợ đa dạng phong
phú bởi MATLAB, phần mềm này cũng đòi h ỏi cấu hình máy tính ngày một cao hơn.
Trong khi đó việc nâng cấp phần cứng thường rất tốn kém và gây lãng phí. Bên cạnh
đó, người dùng trả phí trọn gói cho ứng dụng này trong khi chỉ sử dụng một số hàm và
các tiện ích trong đó.
Mặt khác, sự ra đời của các ứng dụng trực tuyến như google.com, google docs,
amazon.com… là những ví dụ điển hình và sống động cho một thế hệ ứng dụng mới,
ứng dụng trên nền web hay xa hơn nữa là ứng dụng trên Cloud computing – điện toán
đám mây, mang lại nhiều tiện ích to lớn cho người dùng do tính tiện lợi đơn giản và hết
sức mạnh mẽ của chúng. Sử dụng các dịch vụ trực tuyến, ngưởi dùng có thể giải quyết
các vấn đề của họ mà không cần cấu hình máy tính cao, không cần cài đặt nhiều ứng
dụng trên máy của mình, và có thể lưu trữ, chia sẻ dữ liệu trực tuyến và nhiều những
tiện ích khác và quan trọng hơn nữa là tính “co giãn” – người dùng chỉ cần trả phí cho
những gì họ dùng.
Theo xu hướng đó, phần mềm trực tuyến, vốn dĩ giao ti ếp với người dùng qua
trình duyệt, sẽ dần thay thế các phần mềm cài đặt ở máy Client truyền thống, phụ thuộc
nhiều vào các nền tảng (platform) và cơ sở hạ tầng của chúng, việc xây dựng ứng dụng
ngày nay với nhiều lối mở hơn, thuận tiện hơn cho người phát triển phần mềm xây dựng
2
các ứng dụng của mình trên mạng. Đồng thời việc phân phối các phần mềm trực tuyến
nhanh hơn rất nhiều so với việc phân phối phần mềm desktop truyền thống, tiết kiệm
nhiều chi phí và bảo vệ bản quyền tốt hơn.
Việc nghiên cứu, ứng dụng các phần mềm trực tuyến sẽ góp phần làm giảm chi
phí bản quyền, chi phí nâng cấp, bảo trì cơ sở hạ tầng… Đề tài: “Ứng dụng MATLAB
trên .NET Framework 3.5 trong thống kê và Đại số tuyến tính” không nằm ngoài những
xu hướng và yêu cầu khách quan nói trên.
Đề tài tập trung làm rõ mối quan hệ giữa các kiểu dữ liệu trong 2 môi trường
MATLAB và .NET thông qua lớp MWArray khi sử dụng MATLAB Builder NE. Đồng
thời nghiên cứu những kỹ thuật liên quan đến lập trình ứng dụng Web và cơ sở dữ liệu.
Trong luận văn này tôi xin phép không đi sâu về lý thuyết thống kê mà tập trung
vào cách thức kết hợp, kỹ thuật xây dựng ứng dụng trực tuyến với MATLAB và
ASP.NET. Cụ thể:
Lập trình với Visual Studio 2008
• Nghiên cứu các hàm làm việc với cơ sở dữ liệu
• Nghiên cứu một số mảng về ngôn ngữ lập trình C# (C Sharp).
• Ứng dụng AJAX (Asynchronous JavaScript and XML) trong ứng dụng web
• Nghiên cứu công nghệ ASP.NET và .NET Framework 3.5 kết hợp cùng
một số ngôn ngữ liên quan như CSS (Cascading Style Sheets ), HTML
(Hyper Text Markup Language), JavaScript…
Lập trình với MATLAB: ứng dụng các hàm tính toán, phân tích một số bài toán
trong thống kê.
Nhằm xây dựng chương trình:
• Quản lý dữ liệu đầu vào.
• Quản lý người dùng.
• Tính toán và lưu trữ kết quả tính toán.
• Các tính năng về chỉnh sửa và tải xuống các tập tin (bao gồm các tập tin dữ
liệu đã tải lên và các kết quả trong các phiên làm việc).
Để thực hiện luận văn này, tôi đã tham kh ảo các tài liệu có liên quan đến đề tài,
nghiên cứu cơ sở lý thuyết về lập trình MATLAB và lập trình, thiết kế Web, về các
3
dạng bài toán được dùng để minh họa trong ứng dụng, cài đặt chương trình ứng dụng
trên server, thử nghiệm trên các máy khách và kiểm lỗi, viết báo cáo kết quả thực hiện
đề tài. Ngoài ra, tôi còn sử dụng các phần mềm:
• MATLAB 7.9.0 (R2009b)
• Visual Studio 2008 Professional edition
• SQL Server 2005 Express Edition.
• Microsoft Word 2007
Và sử dụng các nguồn thông tin từ sách và internet.
Nội dung luận văn được chia làm 3 chương: Chương 1: Tổng quan về ứng dụng,
giới thiệu tổng quan về MATLAB, Visual Studio, SQL Server và tiến trình kết hợp
những công nghệ để xây dựng ứng dụng web trong luận văn. Chương 2: Một số bài toán
trong thống kê, khảo sát một vài bài toán trong thống kê và các đoạn chương trình chính
để giải quyết các bài toán đó. Chương 3: Demo, giới thiệu về các giao diện làm việc
chính của ứng dụng đã xây dựng.
Nhìn chung, nội dung của luận văn đã trình bày cơ b ản cách xây dựng một ứng
dụng trực tuyến (về mặt lý luận) nhằm giải quyết một số bài toán trong thống kê. Ứng
dụng có cơ sở dữ liệu người dùng, cơ sở dữ liệu tài nguyên, giúp dễ dàng quản lý các
nguồn tài nguyên và tính xác thực người dùng. Đồng thời, ứng dụng cũng hỗ trợ hai loại
ngôn ngữ Anh – Việt tạo môi trường thân thiện, dể sử dụng cho người dùng. Đây cũng
là mục đích mà luận văn này hướng tới.
4
NỘI DUNG
CHƯƠNG I.
TỔNG QUAN VỀ ỨNG DỤNG
I. GIỚI THIỆU VỀ MATLAB R2009B
1. Tổng quan
MATLAB là một ngôn ngữ hiệu năng cao cho kỹ thuật máy tính tích hơp tính
toán, ảo hóa và lập trình, một môi trường dễ sử dụng nơi mà các vấn đề và các giải pháp
được thể hiện ở các kí hiệu toán học quen thuộc, điển hình như:
• Toán học và tính toán.
• Phát triển các thuật toán.
• Mô hình hóa, mô phỏng.
• Phân tích dữ liệu, thăm dò và ảo hóa.
• Khoa học và kỹ thuật đồ họa.
• Phát triển ứng dụng, có thể xây dựng giao diện đồ họa người dùng (GUI).
MATLAB, một hệ thống tương tác của toàn bộ các thành phần dữ liệu cơ bản là
một mảng (array) không bắt buộc về chiều. Nó cho phép người dùng giải quyết nhiều
vấn đề trong kỹ thuật máy tính, đặc biệt với các ma trận và các công thức vectơ.
Cái tên MATLAB là viết tắt của Matrix Laboratory. MATLAB ban đầu được viết
để cung cấp sự truy cập dễ dàng vào phần mềm ma trận phát triển bởi dự án LINPACK
và EISPACK. Ngày nay, MATLAB kết hợp LAPACK và các thư viện BLAS.
MATLAB được phát triển trong nhiều năm với sự đóng góp từ nhiều người dùng.
Trong các môi trường đại học, nó là công cụ hướng dẩn chuẩn cho các khóa học cơ bản
và nâng cao trong toán học, kỹ thuật và khoa học. Trong công nghiệp, MATLAB là một
sự lựa chọn cho nghiên cứu chuyên sâu, phát triển và phân tích.
Các tiện ích kèm theo MATLAB cho các ứng dụng chuyên biệt gọi là các hộp
công cụ (toolboxes). Rất quan trọng cho người dùng MATLAB, hộp công cụ cho phép
người dùng tìm hiểu và ứng dụng các kỹ thuật mang tính chuyên biệt. Toolboxes là một
bộ sưu tập toàn diện của các hàm MATLAB, giúp mở rộng môi trường MATLAB nhằm
giải quyết các lớp bài toán, lớp vấn đề đặc biệt. Bạn có thể sử dụng các toolboxes cho
xử lý tính hiệu, mạng neural, logíc mờ, thống kê và nhiều lĩnh vực khác.
5
Hình I.1 Các toolboxes trong MATLAB R2009b
2. Hệ thống MATLAB
Hệ thống MATLAB bao gồm các thành phần chính:
2.1 Công cụ Desktop và môi trường phát triển
Phần này của MATLAB là một tập hợp các công cụ và cơ sở giúp ta sử dụng hữu
hiệu các hàm MATLAB và các tập tin. Nhiều công cụ này là giao diện đồ họa cho
người dùng. Nó ban gồm desktop của MATLAB và cửa sổ lệnh (Command Window),
một trình soạn thảo (editor) và trình gỡ lỗi (debugger), một trình phân tích mã (code
analyzer), một trình duyệt để xem trợ giúp, một vùng làm việc (workspace) và các thư
mục.
2.2 Thư viện các hàm Toán học
Một thư viện lớn các thuật toán tính toán, từ các phép tính cơ bản như cộng, trừ,
nhân, chia, lượng giác, số phức… đến các hàm phức tạp như phép đảo ma trận, giá trị
riêng ma trận, các hàm Bessel, khai triển chuỗi Fourier… mang lại sự dễ dàng trong xử
lý tính toán.
2.3 Ngôn ngữ
Ngôn ngữ MATLAB là một ngôn ngữ ma trận, mảng cấp cao với khả năng kiểm
soát các luồng, các hàm, cấu trúc dữ liệu, nhập xuất, và lập trình hư ớng đối tượng. Nó
cho phép lập trình quy mô nhỏ đề xây dựng nhanh các ứng dụng người dùng không có ý
định dùng lại,đồng thời cho phép xây dựng những chương trình quy mô l ớn đề tạo
những ứng dụng phức tạp để dùng lại.
6
2.4 Đồ họa
MATLAB mở rộng khả năng cho việc hiển thị các véc tơ các ma trận như các đồ
thị, có thể thêm chú thích và in. Nó bao gồm các hàm cấp cao cho ảo hóa dữ liệu 2
chiều và 3 chiều, xử lý ảnh, hoạt hình và đồ họa trình chiếu. Nó cũng có những hàm cấp
thấp cho phép người dùng tùy biến bề ngoài các đồ thị cũng như xây dựng hoàn chỉnh
các giao diện đồ họa người dùng cho ứng dụng MATLAB của lâp trình viên.
2.5 Giao diện mở rộng
Thư viện giao diện mở rộng cho phép ta viết chương trình v ới ngôn ngữ C hay
Fortan. Nó bao gồm khả năng gọi các đoạn chương trình t ừ MATLAB (liên kết động),
gọi MATLAB như một động cơ tính toán, đọc viết các file MAT.
3. MATLAB builder NE
3.1 Tổng quan
3.1.1 Trình biên dịch MATLAB mở rộng
MATLAB® BuilderTM NE là một mở rộng của MATLAB® CompilerTM, một trình
xây dựng, chuyển đổi các hàm MATLAB sang các phương thức .NET, nó đóng gói các
M-code được viết bởi lập trình viên MATLAB. Tất cả các M-code được biên dịch phải
ở dạng một hàm. Mỗi thành phần MATLAB Builder NE chứa một hay nhiều lớp.
Khi ta đóng gói và phân phối ứng dụng đó đến người dùng, chúng bao hàm các tập
tin hỗ trợ sinh ra bởi MATLAB Compiler Runtime (MCR).
3.1.2 Common Language Specification (CLS) Compliancy
CLS là viết tắt của Common Language Specification, CLS là một tập ngôn ngữ
con hỗ trợ bởi .NET common language runtime (CLR). Các lớp MATLAB Builder NE
là CLS compliant – chúng đảm bảo tích hợp liền mạch với tất cả ngôn ngữ lập trình
.NET. CLS – compliant đảm bảo tích hợp với các thành phần và công cụ CLS –
compliant khác.
Sử dụng trình biên dịch để đóng gói các hàm MATLAB, như vậy các lập trình
viên .NET có thể truy xuất chúng từ bất kỳ ngôn ngữ CLS - compliant nào.
3.1.3 Chuyển đổi dữ liệu, chỉ số và định sạng mảng
7
Trình biên dịch cung cấp khả năng chuyển đổi dữ liệu, chỉ số và định dạng mảng
một cách mạnh mẽ. Ví dụ: để hỗ trợ kiểu dữ liệu MATLAB, MATLAB builder NE
cung cấp lớp chuyển đổi dữ liệu MWArray. Ta tham chiếu hợp ngữ này trong ứng dụng
để chuyễn đồi kiểu mảng riêng sang kiểu mảng MATLAB và ngược lại.
3.1.4 Quản lý lỗi
Trình biên dịch cung cấp các cách tùy biến cho việc bắt lỗi, như vậy những lỗi gốc
từ hàm MATLAB có thể được báo cáo như những ngoại lệ (exception) chuẩn. Mô tả lỗi
bao gồm tham chiếu đến mã MATLAB, phục vụ tốt cho quá trình gỡ lỗi (debug).
Ngoài ra, MATLAB builder NE còn có khả năng làm việc với các thành phần
.NET từ xa và các đối tượng COM (Component Object Model).
3.2 Sử dụng MATLAB builder NE
3.2.1 Vai trò của Lập trình viên MATLAB và lập trình viên .NET
Đối với lập trình viên MATLAB:
• Hiểu được yêu cầu người dùng cuối và các mô hình toán học cần hỗ trợ.
• Xây dựng các thành phần thực thi với các công cụ của MATLAB
• Đóng gói các thành phần và phân phối đến người dùng cuối
• Gửi gói thành phần đến lập trình viên .NETđ ể triển khai và tích hợp vào
môi trường của người dùng cuối.
Đối với lập trình viên .NET:
• Viết mã .NET để thực thi hợp ngữ được viết bởi lập trình viên MATLAB
• Triển khai gói thành phần và tích hợp chúng vào môi trường người dùng
cuối.
• Dùng thành phần đó trong các chương ình
tr .NET chuyên d ụng, thêm,
chỉnh sửa các chức năng theo yêu cầu.
• Chắc chắn rằng ứng dụng đó chạy ổn định trong môi trường của người
dùng cuối.
8
Hình I.2 Phát triển ứng dụng .NET dựa trên các thành phần biên dịch từ MATLAB
4. Giao tiếp kiểu dữ liệu, thực thi M-Code trong .NET
Các hàm trong các thành phần được biên dịch từ MATLAB Builder NE không thể
chạy trong môi trường .NET mà không có trình biên dịch riêng của mình, cũng như
.NET không thể hiểu được các kiểu dữ liệu của MATLAB và ngược lại. Do đó cần có
các thành phần khác hỗ trợ.
4.1 Lớp MWArray
Thuộc vào namespace MathWorks.MATLAB.NET.Arrays, lớp MWArray là một
lớp hỗ trợ chuyển đổi các kiểu dữ liệu MATLAB sang .NET và ngược lại. Đồng thời
lớp này chịu trách nhiệm cho việc lưu các lỗi (nếu có) trong quá trình thực thi M-Code
trên báo cáo truy vết chung, dọn dẹp rác trong bộ nhớ. Nó cũng có khả năng chuyển một
tập con của các chức năng đồ họa của MATLAB cho ứng dụng chạy trên Web
ASP.NET.
4.2 MATLAB Compiler Runtime (MCR)
MCR là tập hợp của các thư viện bản xứ được yêu cầu để chạy các hàm MATLAB
được đóng gói từ MATLAB Builder NE, nói cách khác nó là một trình biên dịch các
hàm MATLAB, do đó, MCR phải được cài đặt trên máy chạy các thành phần được xây
dựng từ MATLAB Builder NE. Ta có thể cài MCR bằng cách chạy trình cài đặt MCR –
MCRInstaller. Ở đây, ta sẽ sử dụng MSCInstaller để cài ở Server.
9
4.3 MATLAB Builder NE và kiểu dữ liệu MATLAB
Với các nhà phát triển .NET, MATLAB Builder NE cho phép thực hiện việc truy
xuất vào các kiểu dữ liệu MATLAB thông qua các lớp thứ bậc kèm theo nó. Tất cả các
lớp trong hệ thống thứ bậc nhận được từ lớp trừu tượng MWArray.
Với mỗi lớp dẩn xuất (trừ lớp MWIndexArray, vì nó có thể là lớp trừu tượng), ánh
xạ đến một kiểu dữ liệu MATLAB và bao gồm các lớp .NET MWNumericArray,
MWLogicalArray, MWCharArray, MWStructArray, and MWCellArray. Mỗi lớp có các
thuộc tính (properties) và phương thức (methods) thường được dùng để truy vấn các
thuộc tính (attributes) như kích thước phần tử, số chiều, tên trường…
Bảng I.1. Luật chuyển đổi kiểu dữ liệu từ .NET sang MATLAB qua lớp MWArray
.NET Type
System.Double
System.Number
System.Float
System.Byte
System.Short
System.Int32
System.Int64
System.Char
System.String
System.Boolean
N/A
N/A
Kiểu MWArray
Kiểu MATLAB
MWNumericArray double
MWNumericArray double
MWNumericArray single
MWNumericArray int8
MWNumericArray int16
MWNumericArray int32
MWNumericArray int64
MWCharArray
char
MWCharArray
char
MWLogicalArray
logical
MWStructArray
structure
MWCellArray
cell
II. VỀ VISUAL STUDIO 2008
1. Tổng quan
Visual Studio 2008 phiên bản Professional là bộ công cụ đầy đủ đẩy nhanh quá
trình biến các ý tưởng của nhà phát triển thành hiện thực. Visual Studio 2008 phiên bản
Professional được thiết kế nhằm hỗ trợ cho các dự án phát triển hướng đến nền tảng
Web (như ASP.NET AJAX), Windows Vista, Visual Studio 2008, hệ thống Microsoft
Office 2007, SQL Server 2008 và các thiết bị sử dụng Windows Mobile. Số lượng nền
tảng - mà các nhà phát triển phải nắm được để đáp ứng nhu cầu kinh doanh – đang tăng
lên nhanh chóng. Để đáp ứng nhu cầu này, Visual Studio 2008 phiên bản Professional
cung cấp một bộ công cụ tích hợp có siêu tập tính năng đã có trong Visual Studio 2008
phiên bản Standard.
10
Ngày nay, các nhà phát triển phải đối mặt với thách thức phải bao quát được nhiều
loại nền tảng và ứng dụng thủ công nhanh chóng đem lại giá trị cho tổ chức. Các công
cụ thiết kế tích hợp và những tính năng ngôn ngữ trong Visual Studio cho phép các nhà
phát triển vừa xây dựng các ứng dụng nối mạng đáp ứng cho nghiệp vụ hiện tại mà vẫn
tận dụng tối đa .NET Framework 3.5 để rút ngắn thời gian phát triển sản phẩm.
2. Giới thiệu
2.1 DOT NET Framework
DOT NET Framework (.NET framework) là một framework của Microsoft và có
thể được cài đặt trên máy chạy hệ điều hành Windows, nó bao hàm một thư viện lớn các
mã, các hàm giúp giải quyết các vấn đề phổ biến trong lập trình và một máy ảo quản lý
những sự thực thi của các chương trình được viết cho framework này.
DOT NET Framework được Microsoft cung cấp và có thể được dùng cho hầu hết
các ứng dụng của nền tảng Windows.
Các lớp thư viện cơ sở của framework này cung cấp một lượng lớn các chức năng
bao gồm giao diện người dùng, truy cập dữ liệu, kết nối cơ sở dữ liệu, mã hóa, ứng
dụng web, các thuật toán số, mạng xã hội… Các lớp trong thư viện được dùng bởi lập
trình viên kết hợp với mã của họ để tạo nên ứng dụng của riêng họ.
.NET framework là một thành phần của Windows hỗ trợ xây dựng và thực thi thế
hệ tiếp theo của của các ứng dụng và dịch vụ Web XML. DOT NET Framework được
thiết kế để:
• Cung cấp một môi trường lập trình hư ớng đối tượng nhất quán cho dù mã
đối tượng được lưu trữ và thực thi cục bộ, trừ khi được phân phối qua
internet, hay được thi hành từ xa.
• Cung cấp môi trường thực thi mã tối thiểu hóa xung đột phiên bản và xung
đột khi triển khai phần mềm.
• Cung cấp môi trường thực thi mã được tăng cường tính an toàn khi thực thi,
bao gồm mã đư ợc tạo bởi một nhà phát triển nạc danh hay một bên thứ 3
bán tin cậy.
• Cung cấp môi trường thực thi mã loại bỏ các vấn đề xảy ra khi thực thi các
kịch bản (script).
11
• Hỗ trợ phát triển nhất quán các ứng dụng khác nhau, như ứng dụng dựa trên
Windows (Windows-based application) hay ứng dụng dựa trên nền Web
(Web-based application).
• Để xây dựng các tiêu chuẩn đảm bảo mã dựa trên .NET framework có thể
tích hợp với các mã khác.
Hình I.3 Kiến trúc .NET Framework
.NET framework gồm 2 thành phần chính: common language runtime và lớp thư
viện .NET Framework.
Common language runtime (CLR) là một cổng để chạy các tính năng của .NET,
trong .NET tất cả mọi ngôn ngữ lập trình đều được biên dịch ra Microsoft Intermediate
Language (IL). Các ngôn ngôn ngữ phải dùng cung các kiểu dữ liệu (Common Type
System), bởi thế CLR có thể kiểm soát mọi giao diện, thực thi các thành phần và cho
phép các ngôn ngữ có thể tích hợp với nhau một cách thông suốt. Khi ta thực thi một
ứng dụng .NET, nó được biên dịch bằng JIT (Just – In - Time) ra mã máy đ ể chạy. JIT
cũng có nghĩa là các phần mã cần xử lý mới được biên dịch.
Ngoài ra, CLR còn làm luôn việc dọn rác. .NET xử dụng một quá trình độc lập để
dọn rác. Một hạn chế là, khi ta đã ra l ệnh xử lý (dispose) một đối tượng ta không chắc
rằng nó đã đư ợc hủy khi nào, vì quá trình dọn rác có mức ưu tiên thấp. CLR cũng chịu
trách nhiệm cho tính năng bảo mật.
Như thế bộ thực thi ngôn ngữ dùng chung CLR cho phép phát triển ứng dụng dễ
dàng hơn, cung cấp một môi trường thực thi an toàn và hiệu năng, hỗ trợ đa ngôn ngữ,
đơn giản hóa việc triển khai, quản lý các ứng dụng.
12
Các lớp cơ sở cho ta các đặc tính của runtime và cung cấp những dịch vụ cấp cao
khác theo yêu cầu người lập trình thông qua không gian tên (namespace), thực chất,
không gian tên là một cách đặt tên giúp tổ chức các lớp theo nhu cầu để dễ quản lý và
dùng lại.
2.2 Active Server Page trên .NET (ASP.NET)
ASP.NET là một nền tảng ứng dụng Web (web application framework) cho phép
lập trình viên tạo ra các trang web động (dynamic website), ứng dụng web (web
application), dịch vụ web (web service). ASP.NET được biên dịch dưới dạng CLR cho
phép lập trình viên viết mã sau (code-behind) bằng bất cứ ngôn ngữ nào được hỗ trợ bởi
.NET.
2.3 AJAX
AJAX là viết tắt của “Asynchronous JavaScript and XML” nghĩa là JavaScript và
XMl không đồng bộ.
AJAX là một kỹ thuật đề tạo những trang web động và nhanh.
AJAX cho phép các trang web cập nhật bất đồng bộ bởi sự thay đổi nhỏ số lượng
các dữ liệu với Server. Điều đó có nghĩa là, nó c ập nhật một phần trang web mà không
cần tải lại toàn bộ trang Web.
Ví dụ cho một số ứng dụng dùng AJAX: Google Maps, Gmail, Youtube, và
Facebook Tab.
AJAX dựa trên các chuẩn Internet và là sự kết hợp của:
• Đối tượng XMLHttpRequest (để chuyển dữ liệu bất đồng bộ với Server)
• JavaScript/DOM (để hiển thị/ giao tiếp dữ liệu)
• CSS (để định kiểu dữ liệu)
• XML (dùng như một định dạng cho dữ liệu được vận chuyển)
Ứng dụng AJAX không phụ thuộc vào trình duyệt và nền tảng.
III. VỀ SQL SERVER 2005 EXPRESS EDITION
1. Giới thiệu
SQL Server là một trong những nền tảng dữ liệu hàng đầu
13
SQL Server là một phần mềm quả lý và phân tích dữ liệu toàn diện và tích hơp cho
phép các tổ chức có khả năng quản lý các thông tin quan trọng và tự tin chạy các ứng
dụng mà độ phức tạp ngày càng nâng cao. SQL Server 2005 cung cấp cho các công ty
cái nhìn sâu rộng từ thông tin kinh doanh của mình và thu đư ợc các kết quả nhanh hơn,
mang lại lợi thế cạnh tranh.
SQL Server 2005 phiên bản Express là một thế hệ kế tiếp của MSDE (Microsoft
SQL Server Desktop Engine) và miển phí, dễ dàng sử dụng.
2. Các thành phần của SQL Server 2005 Express Edition
• Databases: Cơ sở dữ liệu của SQL Server 2005
• Diagrams: Các sơ đồ quan hệ , thể hiện mối liên kết giữa các bảng dữ liệu
một cách trực quan, dễ dàng cho việc tạo chỉ mục.
• Tables: Các bảng, là đối tượng chứa các dữ liệu thực sự theo kiểu dữ liệu đã
được thiết kế.
• Views: Các khung nhìn và các bảng ảo, là các truy vấn lưu trữ trong cơ sở
dữ liệu để có thể tham chiếu tới một hoặc nhiều bảng.
• Stored Procedures: thủ tục thường trú – thủ tục lưu trữ, là các lệnh Transact
SQL (các câu lệnh truy vấn dữ liệu) được biên dịch từ trước và chứa trong
cơ sở dữ liệu. Vì các thủ tục lưu trữ sẵn được biên dịch trước nên chúng
mang hiện suất cao.
• Users: người dùng cơ sở dữ liệu
• Roles: các vai trò, cho phép kết hợp các tên người dùng của các cơ sở dữ
liệu vào trong các nhóm người dùng.
• Rules: các quy tắc, ấn định cho các cột, dữ liệu nhập vào phải phù hợp với
chuẩn đã thiết lập.
• Defaults: mặc định, có thể thiết lập cho các cột mà khi không có dữ liệu nào
được nhập (NULL) vào các cột này trong thao tác INSERT thì các cột đó sẽ
nhận các giá trị mặc định được xét.
• User Defined Data Types: kiểu dữ liệu do người dùng tự định nghĩa.
• User Defined Functions: các hàm do người dùng định nghĩa là mã l ệnh
Transact – SQL rất giống các mã lệnh của thủ tục lưu trữ.
14
Trong khuôn khổ luận văn này, tất cả các hàm thao tác trên cơ sở dữ liệu đều là
các Stored Procedure để tăng hiệu năng truy xuất dữ liệu và tính bảo mật.
IV. TỔNG QUAN TIẾN TRÌNH SỬ DỤNG MATLAB VÀ ASP.NET ĐỂ TRIỂN
KHAI ỨNG DỤNG WEB
1. Tiền đề cho sự kết hợp MATLAB và ASP.NET
Với thế mạnh về tính toán dữ liệu số và các hàm toán học được cung cấp trong
MATLAB, ta dễ dàng đưa ra các giải pháp cho những bài toán vốn dĩ có thể rất phức
tạp nếu lập trình bằng các ngôn ngữ khác nói chung và C# nói riêng. Hơn thế nữa việc
viết lại các hàm đó là rất mất thời gian trong khi hiệu quả vá ý nghĩa thực tiễn không
thấy rỏ.
Mặt khác, như đã đ ề cập trước đây, hiện nay các ứng dụng trực tuyến đang ngày
càng chiếm ưu thế bởi những tính năng vượt trội do nó cung cấp. Xây dựng Web động
hay ứng dụng Web với ASP.NET là một trong những cách nhanh nhất để đưa sản phẩm
ra thị trường. Sử dụng công nghệ ASP.NET với code behind là C#, ta sẽ tận dụng được
sức mạnh của ngôn ngữ lập trình hướng đối tượng này ở nhiều mặt.
Với sự hỗ trợ của các thành phần như đã gi ới thiệu ở trên, ta có thể kết hợp sức
mạnh của 2 ngôn ngữ để tạo nên một ứng dụng hoàn chỉnh.
Tuy nhiên, dù thế nào thì đó cũng là 2 loại ngôn ngữ khác nhau, thế nên trong quá
trình giao tiếp còn hàm chứa nhiều nguy cơ về bất tương thích và các lỗi khó sửa trên
cùng một IDE. Ta sẽ nghiên cứu về một số tiến trình chính và quy tắc giao tiếp giữa hai
ngôn ngữ này.
2. Giao diện người dùng, quá trình xử lý dữ liệu và tính toán
15
Cùng với các công cụ và kỹ thuật đã trình bày ở trên, ta triển khai ứng dụng trên
nền Web.
Hình I.4 Tổng quan quá trình xử lý và tính toán dữ liệu
2.1 Các vấn đề về giao diện người dùng
Vấn đề ngôn ngữ: quá trình sử dụng các phần mềm nói chung và phần mềm
chuyên dùng nói riêng có thể gặp phải khó khăn do ngôn ngữ, khi đã sử dụng quen các
thuật ngữ chuyên ngành với tiếng Anh thì sẽ trở nên khá bối rối khi thao tác lại trên
phần mềm tiếng Việt và ngược lại. Để giải quyết vấn đề đó, ứng dụng này hỗ trợ hai
loại ngôn ngữ cho người dùng đó là tiếng Anh và tiếng Việt. Tiện ích này dựa trên sự hỗ
trợ của các thuộc tính CurrentCulture, CurrentUICulture, lớp CultureInfo và các tập tin
resource trong .NET.
Tính tương thích với trình duyệt: đây là vấn đề khá nhạy cảm của hầu hết các
website và ứng dụng web. Sự không tương thích giữa website và trình duyệt có thể
mang tới nhiều tác dụng không mong muốn khi người dùng duyệt Web ở máy khách.
16
Do đó, ứng dụng này được hạn chế sử dụng Javascript (vốn dĩ làm việc khá khác nhau
giữa các trình duyệt và giữa các phiên bản khác nhau của bản thân từng trình duyệt) để
đảm bảo tối đa khả năng làm việc đúng trên các trình duy ệt, đồng thời áp dụng kỹ thuật
CSS thân thiện và an toàn. Hiện ứng dụng này được hỗ trợ tốt bởi Google Chrome,
Internet Explorer 6.0, 7.0, 8.0, Firefox 3.0.
Vấn đề postback(*) trong ứng dụng: khi postback một trang web, trình duyệt gửi
toàn bộ thông tin từ máy khách đến máy chù và phải chờ đến khi máy chủ gửi toàn bộ
dữ liệu về, quá trình này mất khá nhiều thời gian và tiêu tốn nhiều băng thông, đồng
thời nó cũng gây ra hi ện tượng màn hình trình duyệt trên máy khách trở rổng tạo nên
cảm giác “không tự nhiên”, điều này hết sức nhạy cảm với một ứng dụng Web. Giải
pháp cho vấn đề này là công nghệ AJAX (đã được trình bày ở trên). Với công nghệ này,
ta sẽ tiết kiệm nhiều băng thông và tạo cảm giác thân thiện hơn cho người dùng phía
máy khách.
2.2 Thêm các mô đun một cách “AJAX”
Một vấn đề đặt ra là khi người dùng yêu cầu một bài toán mới, ta cần thêm mô đun
đó mà không phải postback lại toàn bộ trang web. Ở đây, tôi không chọn giải pháp mở
một cửa sổ mới vì điều đó buộc ta phải lưu kết quả hay các thông số khác trong chương
trình vào Session hay Cookies làm giảm hiệu năng của ứng dụng. Giải pháp là ta sử
dụng AJAX để tải “động” một mô đun vào một khung nào đó, với mỗi môđun được xây
dựng sẵn trên một Web User Control (*) (có phần mở rộng là .ascx)
2.3 Xây dựng hàm trên MATLAB
(*)
Trong ngữ cảnh sự phát triển web ASP.NET, postback là một tên khác của HTTP POST. Trong một web
tương tác, nội dung của form được gửi về máy chủ để thực hiện các thao tác lấy thông tin, sau quá trình đó, máy
chủ trả về 1 trang web mới cho trình duyệt chứa thông tin đ ã được yêu cầu
(*)
Một Web Server Control là một nhóm gồm một hay nhiều điều khiển trình chủ (server control) hoặc các yếu
tố HTML tỉnh chứa 1 phần chức năng nào đó, một Web User Control có thể đơn giản là một phần mở rộng chức
năng của một điều khiển trình chủ đã tồn tại.
Một Web User Control sau khi được khởi tạo có thể được sử dụng như một điều khiển trình chủ bình thường,
trong đó bao hàm các ch ức năng do người dùng định nghĩa.
17
Viết các hàm để xử lý bài toán trong MATLAB trong một m-file, xác định rõ các
tham số nhập xuất. Điều này vô cùng quan trọng vì khi các lớp .NET làm việc với các
hàm này khônng thể xử lý kiểu “void” (khi hàm không có các biến xuất rõ ràng).
Kiểm tra để chắc rằng hàm chạy đúng với một số mẫu và bắt (xác định kiểu dữ
liệu và đưa vào các điều khiển (Control) thích hợp, thông thường là kiểu chuỗi, kiểu
bảng và kiểu figure) các kết quả bằng cách tạo ra một mảng để thu nhận chính xác theo
thứ tự các kết quả trả vể.
2.4 Biên dịch các m-file thành các thành phần .NET
Đây là công đoạn mà ta chuyển đổi các m-file thành các phương thức (method)
.NET thuộc vào các lớp theo yêu cầu, phục vụ cho việc tính toán trong môi trường
.NET. Để thực hiện điều này ta sử dụng Deploytool được cung cấp trong MATLAB
Trong cửa sổ dòng lệnh của MATLAB gõ: deploytool
Xuất hiện hộp thoại sau:
Hình I.5 Hộp Deployment Project
Trường Name: đặt tên cho dự án. Chú ý rằng, tên của dự án sẽ là tên của
namespace cho các lớp chứa trong thành phần .NET sau khi biên dịch.
Trường Location: nơi chứa các kết quả sau biên dịch. Nếu ta chọn đích biên dịch
là .NET Assembly thì ta nhận được một thư mục có tên là tên của dự án và có cấu trúc
như sau:
Bảng I.2. Cấu trúc thư mục sau khi biên dịch
Thư mục con
src
Tập tin
ComponentName
_mcc_component_data.cs
Mô tả
Tập tin chứa mã C# của thành phần
vừa xuất