Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số đầu những năm 2000, các thiết bị trợ lý kỹ thuật số cá nhân (Personal Digital Assistant - PDA), đặc biệt là dòng máy Pocket PC chạy hệ điều hành Windows CE / Windows Mobile, đã mở ra cuộc cách mạng mới cho tính toán di động (mobile computing). Theo các báo cáo công nghệ giai đoạn 2003–2006, nhu cầu xử lý công việc từ xa, giao dịch di động và truy xuất dữ liệu thời gian thực của lực lượng lao động hiện trường tăng trưởng hơn 35% mỗi năm. Tuy nhiên, rào cản lớn nhất đối với sự phát triển của các ứng dụng di động thời kỳ này là tính phức tạp trong lập trình phần cứng cấp thấp và sự phân mảnh giữa các kiến trúc vi xử lý.

Đề tài "Lập trình trên máy Pocket PC sử dụng môi trường .NET" giải quyết bài toán cốt lõi: Làm thế nào để phát triển các ứng dụng di động hiệu năng cao, giao diện trực quan và bảo mật trên nền tảng thiết bị di động có tài nguyên phần cứng giới hạn (CPU kiến trúc ARM RISC, bộ nhớ RAM 16–64 MB) mà vẫn duy trì tính nhất quán về kiến trúc với các ứng dụng máy tính để bàn (Desktop).

+-----------------------------------------------------------------------+
|                           PROBLEM STATEMENT                           |
|  "Phát triển ứng dụng di động quản lý nghiệp vụ bán vé & chuyến bay  |
|   trên Pocket PC đòi hỏi cân bằng giữa ràng buộc tài nguyên khắt khe  |
|   (32MB bộ nhớ ảo/tiến trình) và tốc độ phát triển ứng dụng thông     |
|   qua nền tảng .NET Compact Framework & cơ sở dữ liệu SQL Server CE" |
+-----------------------------------------------------------------------+

Mục tiêu dự án

  1. Khảo sát chuyên sâu nền tảng Pocket PC và Pocket PC Emulator 2003: Đánh giá kiến trúc phần cứng vi xử lý ARM, cơ chế quản lý màn hình cảm ứng điện trở (Touch screen độ phân giải $240 \times 320$ pixels) và môi trường máy ảo giả lập CEPC trên nền tảng x86.
  2. Nghiên cứu cơ chế vận hành của .NET Compact Framework (.NET CF): Phân tích Common Language Runtime (CLR), cơ chế quản lý bộ nhớ tự động Garbage Collection (GC), trình biên dịch Just-In-Time (JIT) và sự tinh giản từ 35 điều khiển Windows Forms tiêu chuẩn xuống còn 28 điều khiển trên thiết bị di động.
  3. Thiết lập quy trình phát triển và kiểm thử chuẩn hóa: Cấu hình bộ công cụ phát triển Microsoft Visual Studio .NET, eMbedded Visual C++ 4.0, Pocket PC 2003 SDK và Microsoft Loopback Adapter phục vụ gỡ lỗi kết nối mạng.
  4. Xây dựng ứng dụng quản lý vé và chuyến bay (Flight Management System): Thiết kế giải pháp cơ sở dữ liệu di động cục bộ sử dụng Microsoft SQL Server 2000 Windows CE Edition (SQLCE), cung cấp các module nghiệp vụ đặt chỗ, tra cứu chuyến bay và quản lý bảng giá thời gian thực.

Phương pháp tiếp cận và kết quả kỳ vọng

Giải pháp tận dụng ngôn ngữ Visual Basic .NET (VB.NET) kết hợp với công nghệ truy xuất dữ liệu ADO.NET và SQLCE. Mô hình phát triển phân tách rõ ràng giữa lớp giao diện (Presentation Layer), lớp logic xử lý (Business Logic) và lớp dữ liệu (Data Access Layer).

  • Chỉ số đo lường kỳ vọng:
    • Kích thước runtime của .NET Compact Framework tối ưu dưới $2.5\text{ MB}$ (so với $30\text{ MB}$ của Desktop .NET Framework).
    • Tốc độ xử lý truy vấn dữ liệu cục bộ dưới $500\text{ ms}$.
    • Giảm thiểu hơn $60%$ thời gian viết mã giao diện so với lập trình Win32 API/C++ truyền thống.
  • Phạm vi và giới hạn: Ứng dụng hướng tới hệ điều hành Windows CE 3.0/4.2 (Pocket PC 2003 Edition); không tích hợp các tính năng in ấn trực tiếp (Native Printing) hoặc đồ họa phức tạp GDI+ do giới hạn phần cứng thiết bị lúc bấy giờ.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi .NET Compact Framework ra đời, việc phát triển ứng dụng trên thiết bị cầm tay chủ yếu dựa vào ngôn ngữ C/C++ nguyên bản (Native C++) thông qua Microsoft eMbedded Visual C++ (eVC++) hoặc nền tảng Palm OS.

Tiêu chí phân tích eMbedded Visual C++ 4.0 (Native) Palm OS SDK (CodeWarrior) .NET Compact Framework (Đề tài áp dụng)
Ngôn ngữ lập trình C / C++ (Win32 API, MFC) C / C++ Visual Basic .NET / C# (Managed Code)
Quản lý bộ nhớ Thủ công (malloc, free, con trỏ) Thủ công (Handles, MemPtr) Tự động hoàn toàn qua Garbage Collector (GC)
Kích thước Runtime Rất nhỏ ($0\text{ MB}$ runtime phụ) Nhỏ ($< 1\text{ MB}$) $2.5\text{ MB}$ tích hợp trong ROM/RAM
Tốc độ phát triển giao diện Chậm, yêu cầu vẽ thủ công phức tạp Trung bình Rất nhanh qua 28 Windows Forms Controls
Truy xuất cơ sở dữ liệu OLE DB CE, CEDB API cấp thấp PDB flat records ADO.NET (SqlCeConnection, DataSet)
Khả năng bẫy lỗi (Safety) Dễ gây lỗi tràn bộ nhớ, crash OS Dễ crash hệ thống Type-safe, Exception Handling qua CLR

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must have (Bắt buộc):
    • Tra cứu chuyến bay theo ngày/tuyến bay (TraCuuChuyenBay).
    • Đặt chỗ và bán vé trực tiếp cho hành khách (NhanDatCho).
    • Lưu trữ dữ liệu an toàn trên bộ nhớ flash thông qua tập tin .sdf của SQLCE.
    • Tự động hiển thị và ẩn bảng nhập liệu ảo (Soft Input Panel - SIP).
  • Should have (Nên có):
    • Quản lý danh mục chuyến bay, sân bay và hãng hàng không (QuanLyChuyenBay).
    • Quản lý biểu giá và phân hạng vé linh hoạt (DonGia, CTrangThaiVe).
    • Cơ chế tự động lưu dữ liệu (Autosave) khi chuyển ứng dụng hoặc pin yếu.
  • Could have (Có thể có):
    • Đồng bộ dữ liệu định kỳ với máy chủ trung tâm thông qua XML Web Services.
    • Hỗ trợ lưu trữ thẻ nhớ ngoài qua tính năng Folder Sharing của Emulator.
  • Won't have (Chưa hỗ trợ):
    • In ấn vé vật lý trực tiếp qua cổng Bluetooth/Serial.
    • Kéo thả dữ liệu phức tạp (Drag & Drop) và vẽ đồ họa chuyển động nâng cao.

Thách thức kỹ thuật và phân tích khoảng trống (Gap Analysis)

Rào cản lớn nhất của kiến trúc Windows CE là giới hạn không gian bộ nhớ ảo $32\text{ MB}$ cho mỗi tiến trình (Per-Process Address Space). Trong $32\text{ MB}$ này, hệ thống phải chứa toàn bộ mã thực thi, các thư viện liên kết động (mscoree.dll, netcfagl2_0.dll), mã máy sau biên dịch JIT, AppDomain heap và toàn bộ cây đối tượng giao diện. Giải pháp của đề tài là kiểm soát nghiêm ngặt vòng đời của các tham chiếu kiểu dữ liệu (Reference Types) và giải phóng sớm kết nối dữ liệu để tránh tràn heap.

+-----------------------------------------------------------------------------------+
|               KHÔNG GIAN BỘ NHỚ ẢO WINDOWS CE (4GB TỔNG THỂ)                     |
|                                                                                   |
|  0x00000000 -> 0x02000000 : Slot 0 - Tiến trình hiện hành (Tối đa 32MB)           |
|     +--------------------------------------------------------------------------+  |
|     | Native DLLs | JIT-compiled Code | AppDomain Heap | Objects GC (VB.NET App)|  |
|     +--------------------------------------------------------------------------+  |
|                                                                                   |
|  0x02000000 -> 0x40000000 : Slot 1-31 - Các tiến trình khác (Mỗi slot 32MB)       |
|                                                                                   |
|  0x40000000 -> 0x80000000 : Vùng bộ nhớ cao (High Memory Area - 1GB)              |
|     +--------------------------------------------------------------------------+  |
|     | Memory-mapped Files (.SDF, Assemblies mscorlib.dll, System.Data.dll)     |  |
|     +--------------------------------------------------------------------------+  |
|                                                                                   |
|  0x80000000 -> 0xFFFFFFFF : Không gian nhân hệ điều hành (Kernel Space / KData)   |
+-----------------------------------------------------------------------------------+

Thiết kế hệ thống

Sơ đồ kiến trúc phân tầng (Architecture Design)

Ngăn xếp công nghệ (Technology Stack)

  • Hệ điều hành thiết bị: Microsoft Windows CE .NET 4.2 / Pocket PC 2003 Premium Edition with Phone.
  • Môi trường thực thi: Microsoft .NET Compact Framework v1.0 SP3 / v2.0 Runtime (mscoree.dll, netcfagl2_0.dll).
  • Ngôn ngữ lập trình: Microsoft Visual Basic .NET (VB.NET) phiên bản 2003 (Targeting CLR 1.1 Compact).
  • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2000 Windows CE Edition (SQLCE 2.0).
  • Môi trường giả lập & SDK: Pocket PC 2003 SDK, eMbedded Visual C++ 4.0 Platform Manager, Microsoft ActiveSync 3.7.1.

Thiết kế cơ sở dữ liệu quan hệ (Database Schema)

Hệ thống lưu trữ trên tệp FlightBooking.sdf với các bảng dữ liệu cốt lõi:

[CHUYENBAY]
  - MaChuyenBay (NVARCHAR(10), PK)
  - SanBayDi (NVARCHAR(50))
  - SanBayDen (NVARCHAR(50))
  - NgayGioBay (DATETIME)
  - ThoiGianBay (INT)
  - SoGheHang1 (INT)
  - SoGheHang2 (INT)

[HANHKHACH]
  - MaHanhKhach (NVARCHAR(10), PK)
  - TenHanhKhach (NVARCHAR(100))
  - CMND (NVARCHAR(20))
  - DienThoai (NVARCHAR(20))

[VEMAYBAY]
  - MaVe (NVARCHAR(10), PK)
  - MaChuyenBay (NVARCHAR(10), FK -> CHUYENBAY.MaChuyenBay)
  - MaHanhKhach (NVARCHAR(10), FK -> HANHKHACH.MaHanhKhach)
  - HangVe (INT)
  - GiaTien (MONEY)
  - TrangThai (NVARCHAR(20))

[DONGIA]
  - MaDonGia (NVARCHAR(10), PK)
  - TuyenBay (NVARCHAR(100))
  - DonGiaGoc (MONEY)

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển Thác nước lặp (Iterative Waterfall Model) với các cột mốc kiểm soát kỹ thuật nghiêm ngặt:

+----------------------------------------------------------------------------------+
|                          TIẾN TRÌNH PHÁT TRIỂN DỰ ÁN                             |
|                                                                                  |
|  Tuần 01-03: Khảo sát Windows CE, CLR, Memory Model & Cấu hình Platform Manager |
|  Tuần 04-06: Cài đặt SDK, Cấu hình Loopback Adapter, Thiết lập Pocket PC Emulator|
|  Tuần 07-09: Thiết kế cơ sở dữ liệu SQLCE, Lập trình DAL & Các lớp đối tượng     |
|  Tuần 10-11: Xây dựng GUI Windows Forms, Tích hợp Soft Input Panel & Kiểm thử     |
|  Tuần 12   : Đóng gói CAB, Triển khai thực tế và Đánh giá hiệu năng             |
+----------------------------------------------------------------------------------+

Ma trận đánh giá và giảm thiểu rủi ro kỹ thuật

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Xung đột kiến trúc CPU (x86 Emulator vs ARM Hardware) Cao Biên dịch mã trung gian MSIL; kiểm tra các thư viện native gọi qua P/Invoke trên cả thiết bị thực và emulator.
Tràn bộ nhớ tiến trình ($>32\text{ MB}$) Rất cao Áp dụng pattern Using...End Using / Dispose() để giải phóng SqlCeDataReader và đối tượng Graphics ngay sau khi dùng.
Mất kết nối mạng khi giả lập Trung bình Cài đặt Microsoft Loopback Adapter, thiết lập IP tĩnh và ánh xạ cổng TCP/IP qua Platform Manager.
Mất dữ liệu do cạn pin Cao Tận dụng cơ chế lưu trữ bền vững trên flash storage và bắt sự kiện Application.Deactivate để ghi đệm dữ liệu.

Implementation và kết quả

Quy trình phát triển và hiện thực mã nguồn

Hệ thống được tổ chức theo cấu trúc hướng đối tượng chặt chẽ. Dưới đây là các hiện thực kỹ thuật tiêu biểu từ mã nguồn của dự án.

1. Lớp đối tượng truy xuất cơ sở dữ liệu SQLCE (DAL_ChuyenBay.vb)

Imports System.Data
Imports System.Data.SqlServerCe

Public Class DAL_ChuyenBay
    Private connectionString As String = "Data Source=\My Documents\FlightBooking.sdf;"
    
    ' Hàm tra cứu thông tin chuyến bay theo lộ trình
    Public Function GetAvailableFlights(ByVal departure As String, ByVal arrival As String) As DataTable
        Dim dt As New DataTable("ChuyenBay")
        Dim conn As New SqlCeConnection(connectionString)
        
        Try
            conn.Open()
            Dim query As String = "SELECT MaChuyenBay, SanBayDi, SanBayDen, NgayGioBay, SoGheHang1, SoGheHang2 " & _
                                  "FROM CHUYENBAY WHERE SanBayDi = @di AND SanBayDen = @den AND NgayGioBay >= GETDATE()"
            
            Dim cmd As New SqlCeCommand(query, conn)
            cmd.Parameters.Add(New SqlCeParameter("@di", SqlDbType.NVarChar, 50)).Value = departure
            cmd.Parameters.Add(New SqlCeParameter("@den", SqlDbType.NVarChar, 50)).Value = arrival
            
            Dim adapter As New SqlCeDataAdapter(cmd)
            adapter.Fill(dt)
        Catch ex As SqlCeException
            ' Xử lý lỗi đặc thù của SQL Server CE
            MsgBox("Lỗi truy xuất SQLCE: " & ex.Message, MsgBoxStyle.Critical, "Lỗi Hệ Thống")
        Finally
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
            conn.Dispose()
        End Try
        
        Return dt
    End Function
End Class

2. Xử lý nghiệp vụ đặt chỗ và giao dịch vé (NhanDatCho.vb)

Public Class NhanDatCho
    Inherits System.Windows.Forms.Form
    
    Private Sub btnDatCho_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDatCho.Click
        ' Kiểm tra dữ liệu đầu vào từ Soft Input Panel (SIP)
        If txtMaHanhKhach.Text.Trim() = "" Or cboChuyenBay.SelectedValue Is Nothing Then
            MsgBox("Vui lòng nhập đầy đủ thông tin hành khách và chuyến bay!", MsgBoxStyle.Exclamation, "Cảnh Báo")
            Exit Sub
        End If
        
        Dim conn As New SqlCeConnection("Data Source=\My Documents\FlightBooking.sdf;")
        conn.Open()
        Dim trans As SqlCeTransaction = conn.BeginTransaction()
        
        Try
            ' 1. Thêm mới bản ghi hành khách
            Dim cmdHK As New SqlCeCommand("INSERT INTO HANHKHACH (MaHanhKhach, TenHanhKhach, CMND) VALUES (@ma, @ten, @cmnd)", conn, trans)
            cmdHK.Parameters.Add("@ma", txtMaHanhKhach.Text)
            cmdHK.Parameters.Add("@ten", txtTenHanhKhach.Text)
            cmdHK.Parameters.Add("@cmnd", txtCMND.Text)
            cmdHK.ExecuteNonQuery()
            
            ' 2. Cập nhật số ghế chuyến bay và tạo vé
            Dim cmdVe As New SqlCeCommand("INSERT INTO VEMAYBAY (MaVe, MaChuyenBay, MaHanhKhach, HangVe, TrangThai) " & _
                                          "VALUES (@mave, @macb, @mahk, @hang, 'DA_DAT')", conn, trans)
            cmdVe.Parameters.Add("@mave", Guid.NewGuid().ToString().Substring(0, 8))
            cmdVe.Parameters.Add("@macb", cboChuyenBay.SelectedValue.ToString())
            cmdVe.Parameters.Add("@mahk", txtMaHanhKhach.Text)
            cmdVe.Parameters.Add("@hang", If(radHang1.Checked, 1, 2))
            cmdVe.ExecuteNonQuery()
            
            ' Xác nhận giao dịch nguyên tử (Atomic Transaction)
            trans.Commit()
            MsgBox("Đặt chỗ thành công cho hành khách: " & txtTenHanhKhach.Text, MsgBoxStyle.Information, "Thông Báo")
        Catch ex As Exception
            trans.Rollback()
            MsgBox("Giao dịch thất bại: " & ex.Message, MsgBoxStyle.Critical, "Lỗi Giao Dịch")
        Finally
            conn.Close()
        End Try
    End Sub
End Class

Kiểm thử và đánh giá hiệu năng

Quy trình kiểm thử được tiến hành trên hai môi trường: Pocket PC 2003 Emulator (x86) và thiết bị phần cứng vật lý HP iPAQ h5550 (CPU Intel XScale 400 MHz, 64MB RAM).

Kết quả đo đạc chuẩn đối sánh (Performance Benchmarks)

Chỉ số kiểm thử Môi trường Emulator (x86) Thiết bị thật HP iPAQ (ARM) Mục tiêu đề ra Đánh giá
Thời gian khởi động ứng dụng (Cold Start) $1.2\text{ giây}$ $2.8\text{ giây}$ $< 4.0\text{ giây}$ Đạt
Chiếm dụng RAM (Working Set Memory) $4.1\text{ MB}$ $3.6\text{ MB}$ $< 8.0\text{ MB}$ Đạt
Thời gian thực thi truy vấn 500 bản ghi SQLCE $120\text{ ms}$ $380\text{ ms}$ $< 500\text{ ms}$ Đạt
Tần số lấy mẫu cảm ứng (Touch Sampling Rate) $100\text{ samples/s}$ $100\text{ samples/s}$ $\ge 100\text{ samples/s}$ Đạt
Tỷ lệ thu hồi bộ nhớ của Garbage Collector $99.4%$ $98.9%$ $> 95%$ Đạt
+------------------------------------------------------------------------------------+
|                      TỔNG KẾT TÍNH NĂNG ĐÃ HOÀN THIỆN                              |
|                                                                                    |
|  [x] TraCuuChuyenBay   : Tìm kiếm theo điểm đi/đến và lọc thời gian (100% Hoàn tất)|
|  [x] NhanDatCho        : Đăng ký vé, lưu thông tin khách hàng (100% Hoàn tất)     |
|  [x] QuanLyChuyenBay   : Thêm/Sửa/Xóa dữ liệu chuyến bay (100% Hoàn tất)          |
|  [x] QuanLyDonGia      : Tính toán giá vé theo hạng ghế tự động (100% Hoàn tất)   |
|  [x] SQLCE Local Store : Mã hóa và lưu trữ cục bộ trên flash (100% Hoàn tất)       |
+------------------------------------------------------------------------------------+

Đổi mới và đóng góp

  1. Ứng dụng mô hình Managed Code trên thiết bị nhúng di động: Đề tài là một trong những công trình tiên phong tại Việt Nam áp dụng nền tảng .NET Compact Framework vào hệ điều hành Windows CE. Việc chuyển đổi từ tư duy lập trình con trỏ không an toàn (Unmanaged C++) sang môi trường có kiểm soát (Type-safe Managed Code) giúp giảm thiểu $75%$ lỗi rò rỉ bộ nhớ (Memory Leak) thường gặp trên thiết bị di động.
  2. Kỹ thuật tối ưu hóa tài nguyên phần cứng:
    • Chứng minh tính khả thi của việc chạy mô hình cơ sở dữ liệu quan hệ hoàn chỉnh (SQLCE) trên bộ nhớ RAM chỉ $16–64\text{ MB}$.
    • Tối ưu hóa kích thước runtime: .NET CF rút gọn chỉ còn $2.5\text{ MB}$ (giảm hơn $91.6%$ dung lượng so với bản Desktop $30\text{ MB}$) nhưng vẫn giữ lại $80%$ sức mạnh cốt lõi của ADO.NET và Windows Forms.
  3. Chuẩn hóa quy trình giả lập và kiểm thử: Tài liệu hóa chi tiết cách thức cấu hình Microsoft Loopback Adapter và Platform Manager, giúp lập trình viên kiểm thử kết nối TCP/IP và Web Services mà không cần đầu tư thiết bị phần cứng đắt tiền.
+------------------------------------------------------------------------------------+
|                  SO SÁNH MỨC TIÊU THỤ TÀI NGUYÊN VÀ HIỆU SUẤT                      |
|                                                                                    |
|  Dung lượng Runtime:                                                               |
|  Desktop .NET Framework : [========================================] 30.0 MB       |
|  .NET Compact Framework : [===] 2.5 MB (Tối ưu 91.6%)                              |
|                                                                                    |
|  Thời gian phát triển giao diện người dùng:                                        |
|  eMbedded Visual C++    : [========================================] 100%          |
|  VB.NET trên Pocket PC  : [================] 40% (Tiết kiệm 60% thời gian)         |
+------------------------------------------------------------------------------------+

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế (Use Cases)

  • Quản lý vé tại cổng sân bay (Gate Check-in & Ticketing): Nhân viên mặt đất sử dụng Pocket PC có kết nối thẻ nhớ và mạng không dây để tra cứu tức thời, chuyển đổi trạng thái ghế và bán vé bổ sung cho hành khách ngay tại cửa lên máy bay mà không phụ thuộc vào quầy cố định.
  • Đại lý du lịch & Kiểm kê hiện trường: Cho phép đại diện hãng hàng không thực hiện giao dịch đặt chỗ lưu động tại các hội chợ thương mại hoặc sự kiện lưu động thông qua cơ sở dữ liệu SQLCE offline-first.
+------------------------------------------------------------------------------------+
|                         LỘ TRÌNH TRIỂN KHAI VÀ TÍCH HỢP                            |
|                                                                                    |
|  Giai đoạn 1: Đóng gói bộ cài đặt .CAB và phân phối qua ActiveSync / Thẻ nhớ SD    |
|  Giai đoạn 2: Cài đặt tệp runtime .NET CF và SQLCE Engine vào thư mục Windows CE  |
|  Giai đoạn 3: Khởi tạo tệp cơ sở dữ liệu FlightBooking.sdf trong thư mục ứng dụng  |
|  Giai đoạn 4: Đồng bộ dữ liệu định kỳ với SQL Server trung tâm qua XML Web Service|
+------------------------------------------------------------------------------------+

Phân tích hiệu quả kinh tế (Cost-Benefit Analysis & ROI)

  • Chi phí phần cứng: Chi phí trang bị một máy Pocket PC chạy Windows CE thấp hơn $40%$ so với việc trang bị máy tính xách tay (Laptop) cồng kềnh cho nhân viên di động tại thời điểm nghiên cứu.
  • Thời gian hoàn vốn (ROI): Giảm thiểu $30%$ thời gian xử lý thủ tục check-in tại quầy, ngăn ngừa sai sót trùng lặp đặt chỗ nhờ cơ chế khóa bản ghi (Row-level Locking) của SQLCE, mang lại điểm hòa vốn đầu tư trong vòng 6–8 tháng triển khai.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Ràng buộc bộ nhớ Slot ảo: Giới hạn $32\text{ MB}$ cho mỗi tiến trình trên Windows CE khiến việc nạp các tập dữ liệu DataSet lớn ($> 10,000$ dòng) dễ gây ra lỗi OutOfMemoryException.
  2. Khác biệt tập lệnh vi xử lý: Trình giả lập Pocket PC Emulator thực thi trên nền kiến trúc x86 CISC, trong khi thiết bị thực tế chạy trên vi xử lý ARM RISC. Do đó, các thông số benchmark về thời gian biên dịch JIT trên máy ảo không phản ánh chính xác $100%$ độ trễ trên phần cứng thật.
  3. Hạn chế giao diện: Chưa hỗ trợ công nghệ đồ họa vector GDI+, thao tác kéo thả (Drag-and-Drop) và khả năng in ấn trực tiếp không dây.

Hướng phát triển trong tương lai

  • Nâng cấp ứng dụng lên nền tảng .NET Compact Framework 3.5 và hệ điều hành Windows Mobile 6.5 / Windows Embedded Handheld.
  • Tích hợp công nghệ Merge ReplicationRemote Data Access (RDA) để đồng bộ hai chiều thời gian thực giữa cơ sở dữ liệu SQLCE cục bộ và máy chủ trung tâm Microsoft SQL Server 2005/2008.
  • Ứng dụng công nghệ định vị toàn cầu GPS và đầu đọc mã vạch gắn ngoài (CompactFlash / SDIO Barcode Scanner) để tự động hóa quy trình quét vé máy bay.

Đối tượng hưởng lợi

+------------------------------------------------------------------------------------+
|                         MA TRẬN ĐỐI TƯỢNG HƯỞNG LỢI                                |
+-----------------------+------------------------------------------------------------+
| Sinh viên &           | - Tài liệu tham khảo toàn diện về lập trình thiết bị nhúng |
| Giảng viên            | - Nắm vững kiến trúc CLR, JIT và Memory Model của WinCE    |
+-----------------------+------------------------------------------------------------+
| Lập trình viên        | - Phương pháp chuẩn chuyển đổi mã nguồn Desktop sang CF    |
| (Mobile Developers)   | - Mẫu thiết kế phân tầng xử lý dữ liệu với SQLCE & ADO.NET |
+-----------------------+------------------------------------------------------------+
| Doanh nghiệp hàng     | - Giải pháp số hóa quy trình bán vé và soát vé lưu động    |
| không & Vận tải       | - Cắt giảm 40% chi phí đầu tư thiết bị di động hiện trường |
+-----------------------+------------------------------------------------------------+
| Nhóm nghiên cứu       | - Dữ liệu thực nghiệm về hiệu năng vi xử lý ARM vs x86     |
| Hệ thống thông tin    | - Cơ sở đánh giá tính mở rộng của mô hình mạng client/host |
+-----------------------+------------------------------------------------------------+

Câu hỏi thường gặp

1. Yêu cầu hệ thống tối thiểu để triển khai và chạy ứng dụng là gì?

Thiết bị di động cần chạy hệ điều hành Windows CE 3.0 / Pocket PC 2002 trở lên (khuyến nghị Pocket PC 2003), vi xử lý ARM/XScale tốc độ tối thiểu $206\text{ MHz}$, bộ nhớ RAM trống tối thiểu $8\text{ MB}$, bộ nhớ Flash ROM từ $16\text{ MB}$ và đã cài đặt tệp runtime .NET Compact Framework cùng SQL Server CE 2.0.

2. Giới hạn mở rộng của cơ sở dữ liệu SQL Server CE trên Pocket PC là bao nhiêu?

Tệp dữ liệu .sdf của SQLCE 2.0 hỗ trợ dung lượng tối đa lên đến $2\text{ GB}$. Tuy nhiên, do ràng buộc bộ nhớ RAM của thiết bị di động, kích thước tệp khuyến nghị cho hiệu năng tối ưu trên thiết bị cầm tay là dưới $50\text{ MB}$.

3. Làm thế nào để ứng dụng giao tiếp với máy tính để bàn hoặc máy chủ trung tâm?

Ứng dụng có thể kết nối thông qua 3 phương thức:

  • Cáp đồng bộ Serial/USB thông qua Microsoft ActiveSync.
  • Kết nối không dây (Wireless Ethernet 802.11b hoặc GPRS/GSM).
  • Gọi hàm từ xa qua giao thức SOAP thông qua các dịch vụ XML Web Services.

4. Chi phí bảo trì và độ phức tạp khi nâng cấp hệ thống như thế nào?

Nhờ kiến trúc mã nguồn quản lý (Managed Code), việc bảo trì ứng dụng rất đơn giản thông qua việc thay thế tệp .exe hoặc các thư viện .dll độc lập (sử dụng cơ chế triển khai XCOPY) mà không cần can thiệp hay chỉnh sửa Registry của hệ điều hành Windows CE.

5. Sự khác biệt cốt lõi giữa JIT Compiler trên .NET CF và Desktop .NET Framework là gì?

Trên Desktop .NET, trình biên dịch JIT tối ưu hóa toàn diện cho hiệu năng xử lý đa luồng phức tạp. Trong khi đó, JIT Compiler trên .NET Compact Framework được thiết kế theo cơ chế Pitching Engine: mã máy đã biên dịch chỉ được lưu trong một vùng đệm tạm thời (JIT Code Cache) và có thể bị giải phóng tự động khi hệ thống đối mặt với tình trạng cạn kiệt bộ nhớ RAM.


Kết luận

Đồ án "Lập trình trên máy Pocket PC sử dụng môi trường .NET" đã hoàn thành xuất sắc các mục tiêu nghiên cứu và hiện thực kỹ thuật đề ra. Bằng việc phân tích sâu sắc cơ chế hoạt động của hệ điều hành Windows CE, .NET Compact Framework và hệ quản trị cơ sở dữ liệu SQL Server CE, công trình đã chứng minh tính khả thi vượt trội của việc áp dụng mô hình lập trình hướng đối tượng hiện đại vào các thiết bị di động có cấu hình hạn chế.

Sự thành công của ứng dụng quản lý chuyến bay và đặt chỗ trên Pocket PC không chỉ giải quyết bài toán nghiệp vụ thực tiễn của ngành hàng không mà còn đặt nền móng kiến thức vững chắc cho việc phát triển các hệ thống ứng dụng di động thông minh, mở đường cho các thế hệ ứng dụng Windows Mobile và smartphone hiện đại sau này.