Thạc Sĩ Áp dụng OSGi trong việc xây dựng hệ thống dựa thành phần

Thảo luận trong 'THẠC SĨ - TIẾN SĨ' bắt đầu bởi Phí Lan Dương, 1/8/15.

  1. Phí Lan Dương

    Phí Lan Dương New Member
    Thành viên vàng

    Bài viết:
    18,524
    Được thích:
    18
    Điểm thành tích:
    0
    Xu:
    0Xu
    MỤC LỤC
    GIỚI THIỆU 1
    1.1. Giới thiệu hệ thống dựa thành phần 3
    1.2. Kiến trúc phần mềm dựa thành phần 4
    1.3. Đặc tính của thành phần phần mềm 5
    1.4. Một số mô hình thành phần hiện tại 6
    2.1. OSGi framework . 10
    2.1.1. Tổng quan về OSGi 10
    2.1.2. Lớp Module 12
    2.1.3. Lớp Lifecycle 23
    2.1.4. Lớp Service . 28
    2.2. OSGi trong phát triển phần mềm dựa thành phần . 33
    2.2.1. Mô hình thành phần 33
    2.2.2. Mô hình thành phần trong OSGi 33
    Chương 3. ÁP DỤNG XÂY DỰNG ỨNG DỤNG BÁN HÀNG TRỰC TUYẾN 38
    3.1. Phân tích kiến trúc và lựa chọn các công nghệ . 40
    3.1.1. Kiến trúc phân tầng và dựa thành phần 42
    3.1.2. Áp dụng kiến trúc phân tầng và dựa thành phần vào ứng dụng . 43
    3.2. Phát triển ứng dụng . 51
    3.2.1. Biên dịch ứng dụng với Bndtool . 51
    3.2.2. Triển khai ứng dụng với Apache Felix . 52
    3.2.3. Các chức năng của ứng dụng 53
    3.3. Đánh giá so với việc phát triển hệ thống với phương pháp truyền thống . 61
    4.1. Các kết quả đạt được . 67
    4.2. Định hướng nghiên cứu trong tương lai 68
    PHỤ LỤC 1 . 71
    PHỤ LỤC 2 . 72

    iv
    BẢNG CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
    STT Ký hiệu Diễn giải Tiếng Việt
    1 API Application Programming Interface Giao diện lập trình ứng dụng
    2 CIDL
    Component Implementation
    Definition Language
    Ngôn ngữ định nghĩa cài đặt
    thành phần
    3 CIF
    Component Implementation
    Framework
    Framework cài đặt thành
    phần
    4 COM Component Object Model
    Mô hình đối tượng thành
    phần
    5 CORBA
    Common Object Request Broker
    Architecture
    Kiến trúc chung gian yêu
    cầu đối tượng chung
    6 DS Declarative Services
    Một trong những mô hình
    thành phần để khai báo và
    sử dụng dịch vụ trong OSGi
    7 EJB Enterprise JavaBeans
    Mô hình thành phần dùng
    cho phát triển ứng dụng
    doanh nghiệp với Java
    8 GPS Global Positioning System Hệ thống định vị toàn cầu
    9 IDE
    Integrated Development
    Environment
    Môi trường phát triển tích
    hợp
    10 IDL Interface Defination Language
    Ngôn ngữ định nghĩa giao
    diện
    11 JMS Java Message Service Dịch vụ truyền tin trongJava
    12 JRE Java Runtime Environment Môi trường chạy Java
    13 JVM Java Virtual Machine Máy ảo Java
    14 REST Representational State Transfer
    Một phong cách kiến trúc
    cho hệ thống mạng. Ứng
    dụng phổ biến là cho dịch
    vụ Web
    15 SCA Service Component Architechture
    Kiến trúc thành phần dịch
    vụ
    16 SCR Service Component Runtime
    Môi trường chạy thành phần
    dịch vụ
    17 SOA Service-Oriented Architecture Kiến trúc hướng dịch vụ
    18 SOAP Simple Object Access Protocol
    Giao thức truy cập đối
    tượng đơn giản


    v
    DANH MỤC HÌNH VẼ
    STT Số hiệu Tên hình vẽ
    1 1.1 Phát triển hệ thống phần mềm dựa thành phần
    2 1.2 Kiến trúc hệ thống dựa thành phần
    3 1.3 Ví dụ hệ thống dựa thành phần
    4 1.4 Sự kết hợp có thể giữa client cũ và mới và các thành phần của nó
    5 2.1 Kiến trúc OSGi
    6 2.2
    Một module định nghĩa phạm vi logic. Module tự nó cũng tường
    minh chỉ định lớp nào được đóng gói bên trong, lớp nào được hiện
    diện ra bên ngoài
    7 2.3
    Các lớp có phụ thuộc tường minh vì các tham chiếu trong mã
    nguồn. Các module có phụ thuộc ngầm định vì mã nguồn chúng
    bao gồm
    8 2.4
    Mặc dù hướng đối tượng và tính module đều cung cấp những khả
    năng như nhau nhưng ở các cấp độ khác nhau
    9 2.5 Cấu trúc của bundle
    10 2.6 Classloader trong OSGi
    11 2.7
    Chuỗi Classloader, nếu một Classloader không thể nạp một lớp nó
    sẽ chuyển cho Classloader tiếp theo
    12 2.8 Khả năng thay thế
    13 2.9
    Một bundle fragment được gắn với một bundle chủ của nó và cùng
    chia sẻ một Classloader
    14 2.10 Cấu trúc đánh phên bản
    15 2.11
    Các phụ thuộc của phụ thuộc có thể có các phiên bản không tương
    thích. OSGi cho phép cùng tồn tại bằng cách cô lập chúng với cái
    kia
    16 2.12 Class Path trong Java và quản lý vòng đời trong OSGi framework
    17 2.13 Vòng đời của bundle trong OSGi
    18 2.14 Các lệnh OSGi tương ứng với các thao tác khi triển khai ứng dụng
    19 2.15
    Một dịch vụ được cung cấp bởi một bundle và được sử dụng bởi
    một bundle khác. Hình tam giác có đỉnh trỏ về bên cung cấp dịch
    vụ
    20 2.16
    Một service consumer có thể sử dụng nhiều instance của một dịch
    vụ
    21 3.1 Đối tượng người dùng và chức năng của hệ thốngđặt hàng
    22 3.2 Các bước xử lý khi khách hàng đặt hàng

    vi
    23 3.3 Kiến trúc và các thành phần công nghệ trong ứng dụng
    24 3.4 Kiến trúc ba tầng
    25 3.5 Phụ thuộc vòng
    26 3.6 Chia các tầng thành các thành phần nhỏ hơn
    27 3.7 Các tầng trong ứng dụng
    28 3.8 Các thành phần trong ứng dụng
    29 3.9 Các thành phần và giao tiếp giữa chúng
    30 3.10 Cấu trúc bundle chipshop.admin.general.ui trong Bnd project
    31 3.11 Cấu trúc bundle chipshop.admin.general.ui sau khi build
    32 3.12
    Tương tác giữa các bundle liên quan đến sản phẩm thông qua dịch
    vụ
    33 3.13 Các bundle xử lý đơn hàng
    34 3.14 Các bundle của toàn bộ ứng dụng
    35 3.15 Phát triển ứng dụng với Bndtool
    36 3.16 Chạy ứng dụng trực tiếp trong Eclipse
    37 3.17 Kết quả chạy unit test
    38 3.18 Danh sách và trạng thái các bundle
    39 3.19 Danh sách sản phẩm trên frontend
    40 3.20 Xem thông tin trong giỏ hàng
    41 3.21 Đăng ký và đăng nhập
    42 3.22 Đặt hàng
    43 3.23 Đặt hàng thành công
    44 3.24 Xem lại đơn hàng đã đặt
    45 3.25 Đăng nhập vào trang quản trị
    46 3.26 Xem thông tin và sửa sản phẩm
    47 3.27 Thêm sản phẩm, danh mục hoặc xóa danh mục
    48 3.28 Sản phẩm mới tạo trên backend
    49 3.29 Sản phẩm mới tạo trên frontend
    50 3.30 Xem và cập nhật trạng thái các đơn hàng
    51 3.31
    Các bundle cung cấp chương trình khuyến mại sau khi được triển
    khai
    52 3.32
    Thực đơn khuyến mại tự động xuất hiện sau khi các bundle được
    triển khai
    53 3.33 Thông tin khuyến mại

    vii
    54 3.34 Dừng bundle chipshop.discounts.mongo
    55 3.35
    Bundle chipshop.discounts.mongo chuyển sang trạng thái
    Resolved
    56 3.36
    Thực đơn “khuyến mại” biến mất sau khi bundle
    chipshop.discounts.mongo bị dừng
    57 3.37
    Các thành phần liên quan đến khuyến mại có thể được triển độc lập
    và động
    58 3.38
    Các bundle không thể chuyển sang trạng thái Active khi các phụ
    thuộc và ràng buộc chưa được thỏa mãn 1


    GIỚI THIỆU
    Các hệ thống phần mềm ngày càng trở nên phức tạp, cùng với nhu cầu phát triển
    nhanh và cập nhật thường xuyên, từ đó tạo ra nhu cầu cần một kiến trúc để đáp ứng
    được những nhiệm vụ khó khăn này. Kiến trúc dựa thành phần là một giải pháp, đặc
    tính cơ bản của kiến trúc dựa thành phần là chia mã nguồn thành những thành phần
    nhỏ, độc lập giúp ta dễ dàng hiểu, nâng cấp và bảo trì. Khái niệm hệ thống phần mềm
    dựa thành phần và việc phát triển hệ thống phần mềm dựa thành phần không còn là
    mới. Nhưng những ưu điểm của việc phát triển phần mềm theo mô hình dựa thành
    phần vẫn còn nguyên giá trị và ngày càng phổ biến hơn. Chia hệ thống thành các phần
    mã nguồn nhỏ giúp ta có thể thay đổi, cập nhật hoặc đơn giản thay thế nó mà không
    ảnh hưởng đến các phần khác của hệ thống.
    Để đưa kiến trúc dựa thành phần từ thiết kế áp dụng vào thực tế không hề đơn
    giản và dễ dàng và không thể thực hiện được nếu chỉ sử dụng Java thuần túy. OSGi
    giúp ta thực hiện được điều này cùng với Java. Ngoài việc giúp ta phát triển một hệ
    thống dựa thành phần OSGi cũng khắc phục một số nhược điểm còn tồn tại của class
    path trong Java, tránh được những lỗi khi hệ thống đang chạy (run time) rất thường
    xuyên xảy ra với một hệ thống lớn và phức tạp. Triển khai hay cập nhật các thành
    phần khi hệ thống vẫn đang chạy mà không phải khởi động lại, điều này không thể có
    được với một hệ thống phát triển với Java thông thường.
    Những ưu điểm mà OSGi mang lại là rất rõ ràng, tuy nhiên trước đây OSGi
    thường có tiếng là quá phức tạp và khó sử dụng, do vậy OSGi còn chưa được sử dụng
    rộng rãi. Gần đây có nhiều sự thay đổi về công cụ phát triển cũng như framework.
    Trong luận văn tôi đã tìm hiểu và đưa ra những kinh nghiệm lập trình, áp dụng những
    công nghệ, kỹ thuật được cho là tốt nhất hiện có với nhiều ưu điểm như dịch vụ Web
    RESTful đang dần thay thế SOAP và WSDL, NoSQL hay AngularJS [21,23,16]. Kết
    hợp với OSGi để đưa ra lựa chọn cho một kiến trúc hiệu quả giúp ta không còn tốn
    nhiều thời gian để lựa chọn kiến trúc cũng như công nghệ trước khi phát triển một hệ
    thống, nhất là hệ thống lớn và phức tạp. Giúp ta có nhiều thời gian tập trung vào phát
    triển nghiệp vụ cho hệ thống.
    Nội dung luận văn chia thành bốn chương. Chương 1 tìm hiểu về các khái niệm
    trong hệ thống dựa thành phần, kiến trúc dựa thành phần và phát triển hệ thống phần
    mềm dựa thành phần. Tìm hiểu, phân tích một số mô hình thành phần hiện tại và đưa
    ra lựa chọn mô hình phù hợp cho phát triển phần mềm hiện nay. Chương 2 tìm hiểu về
    lịch sử, kiến trúc và các đặc tính của OSGi. Từ đó hiểu rõ về kiến trúc, mục đích thiết
    kế giúp OSGi có được những đặc tính phù hợp với việc phát triển hệ thống dựa thành
    phần, bổ sung và khắc phục những nhược điểm còn tồn tại trong Java chuẩn. Chương
    3 trình bày việc áp dụng OSGi để xây dựng một hệ thống bán hàng trực tuyến theo
    kiến trúc dựa thành phần. Trình bày việc phân tích kiến trúc hệ thống, tìm hiểu những 2


    công nghệ liên quan và những công cụ tốt nhất hiện có sử dụng cho quá trình phát
    triển. Đưa ra những lựa chọn khi thiết kế, phân tách các thành phần sao cho phát huy
    được tốt nhất những ưu điểm của kiến trúc dựa thành phần và OSGi. Hệ thống sau khi
    hoàn thành sẽ bao gồm đầy đủ các thành phần cơ bản như một ứng dụng doanh nghiệp.
    Như một giao diện Web frontend cho phép khách hàng xem và đặt mua sản phẩm
    thông qua chức năng giỏ hàng và một trang quản trị dành cho quản trị viên. Web
    frontend sẽ giao tiếp với hệ thống backend xử lý nghiệp vụ thông qua dịch vụ Web
    RESTful. Dịch vụ Web RESTful giao tiếp với các thành phần OSGi bên dưới thông
    qua các dịch vụ OSGi, bản thân dịch vụ Web RESTful cũng là một dịch vụ OSGi. Các
    dịch vụ OSGi bên dưới cũng truy cập đến cơ sở dữ liệu NoSQL thông qua các dịch vụ
    OSGi. Chương 4 là kết luận, đánh giá những kết quả đạt được và định hướng phát triển
    của đề tài. Phần cuối cùng là tài liệu tham khảo và phụ lục.
     
Đang tải...