Sự ra đời củacác ngôn ngữ lập trình cho phép chúng ta xây dựng các trang Web đáp ứng đượccác yêu cầu của người sử dụng .Qua quá trình được học trên lớp và tìm hiểu về môn học phát triển
CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ SỬ DỤNG
CƠ SỞ LÝ THUYẾT
1.1.1 Tìm hiểu về dịch vụ web
Với sự bùng nổ của Internet, Web Services trở nên vô cùng quan trọng, cung cấp một nền tảng điện toán theo hướng dịch vụ thông qua môi trường web Chúng cho phép truy cập các dịch vụ từ các ứng dụng khác thông qua giao thức và định dạng dữ liệu chuẩn Do đó, các phần mềm viết bằng các ngôn ngữ khác nhau và chạy trên các nền tảng khác nhau có thể trao đổi dữ liệu qua mạng Internet bằng Web Services, giống như cách chúng giao tiếp trong cùng một máy tính Bằng cách này, các hệ thống riêng lẻ có thể được tích hợp dễ dàng mà không cần quan tâm đến nền tảng phát triển của chúng.
Theo định nghĩa của W3C [1] (World Wide Web Consortium), dịch vụ Web là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, với giao diện chung được mô tả bằng XML Web service có thể xác định bằng địa chỉ URL, thực hiện các chức năng và dưa ra các thông tin người dùng yêu cầu Các chức năng này có thể được yêu cầu bởi các client bằng cách sử dụng giao thức SOAP [2] thông qua HTTP Web services độc lập về ngôn ngữ và nền tảng bởi vì nó tách biệt đặc tả ra khỏi cài đặt Web services dựa trên kiến trúc phân tán trong đó không có bất kì dịch vụ xử lý trung tâm nào và tất cả dạng truyền thông đều sử dụng các giao thức chuẩn.
Một trong những đặc tính quan trọng của mô hình tính toán dựa trên Web services là ở đó cả các client và Web services đều không cần biết cài đặt của nhau.Web services hứa hẹn mang đến khả năng tạo ra các môi trường phân tán trong đó bất kì ứng dụng nào, hoặc bất kì component ứng dụng nào cũng đều có thể kết hợp với nhau dễ dàng với tính độc lập nền nền tảng và độc lập ngôn ngữ Điểm khác biệt chính của Web services với các công nghệ phân tán trước đây như Win32, J2EE, là ở sự chuẩn hoá Web services sử dụng XML, một ngôn ngữ độc lập trong việc biểu diễn dữ liệu, làm ngôn ngữ trao đổi thông tin Bởi vậy khi được kết hợp với nhau, khả năng tích hợp phần mềm, tính liên tác và sử dụng lại của các hệ thống theo mô hình Web Services thật đáng kinh ngạc.
Hiện nay các ứng dụng có tích hợp dịch vụ Web là rất phổ biến, ví dụ như chọn lọc và phân loại tin tức (thư viện có kết nối đến các web portal để tìm kiếm các thông tin từ các nhà xuất bản), hay ứng dụng cho các dịch vụ đại lý du lịch (cung cấp giá vé, thông tin về địa điểm du lịch), bán hàng, đấu giá qua mạng Đặc biệt trong thời đại thương mại điện tử và Internet phát triển mạnh mẽ như hiện nay thì các dịch vụ Web ngày càng được quan tâm phát triển và sử dụng rộng rãi hơn.
1.1.1.2 Đặc điểm của Web service
- Độc lập về ngôn ngữ, nền tảng:
Dịch vụ web sử dụng XML, một chuẩn mở được công nhận rộng rãi, cho phép Client và Server tương tác với nhau trong mọi môi trường Nhờ đó, bất kỳ ngôn ngữ lập trình nào cũng có thể hiểu được XML, giúp cho việc kết nối giữa các hệ thống khác nhau trở nên dễ dàng.
- Khả năng tự mô tả:
Giao diện của dịch vụ web được xuất bản thông qua tài liệu WSDL [3] Tài liệu này định nghĩa cấu trúc thông điệp trao đổi và cấu trúc dữ liệu sử dụng trong thông điệp đó.
- Tách biệt giữa mô tả và nội dung: Đây là một trong những đặc tính then chốt làm nên thành công cho Web Services.
- Web service không đòi hỏi phía client phải cải đặt bất cứ một thành phần mới nào.Còn ở phía server, để triển khai Web service thi chỉ cần có Servlet engine, Apache hoặc NET Runtime Khi đã được triển khai thì client có thể sử dụng ngay các dịch vụ Điều này khác với các công nghệ khác như DCOM hay RMI, khi mà client phải cài đặt Client stub để có thể truy cập dịch vụ.
- Dựa trên các chuẩn mở XML, SOAP, WSDL, UDDI
- Truy cập thông qua môi trường Web:
Web service được phát hành, xác định và gọi đều thông qua môi trường Web. Trong đó các mô tả về dịch vụ được xuất bản sử dụng WSDL, người dùng tìm kiếm và xác định dịch vụ nhờ sự trợ giúp của UDDI và yêu cầu dịch vụ bằng SOAP Tất cả các giao thức này đều dựa trên Web
1.1.1.3 Ưu nhược điểm của Web service
- Cung cấp khả năng tương tác rộng lớn hơn Web service có thể được truy xuất bởi con người thông qua trình duyệt web, bởi các ứng dụng chạy trên các nền tảng khác nhau và thậm chí là cả các web service khác.
- Dựa trên các chuẩn mở đã được chấp nhận rộng rãi, giúp cho các lập trình viên dễ dàng hiểu được.
- Nâng cao khả năng tái sử dụng và đóng gói lại phần mềm trong giao diện Web Service.
Tạo kết nối linh hoạt giữa các thành phần hệ thống giúp giảm độ phức tạp, thuận lợi cho phát triển ứng dụng phân tán.
- Thúc đẩy sự phát triển của các hệ thống tích hợp, dẫn đến khả năng phát triển hệ thống nhanh với giá thành hạ, nhờ có sự tương tác hiệu quả với các phần mềm, hệ thống khác thông qua dịch vụ Web.
- Web Services phụ thuộc vào môi trường web, vì vậy khi một Web Service không hoạt động sẽ gây ảnh hưởng dụng dịch vụ nó cung cấp t cả các ứng dụng tới tất phụ thuộc và sử
- Web Service dựa trên quá nhiều chuẩn mở khiến người dùng, người phát triển hệ thống khó nắm bắt và cập nhật.
- Vấn đề an toàn và bảo mật của Web Service cũng cần được quan tâm, ngoài việc bảo vệ an toàn thông tin trước hacker khi truyền qua môi trường mạng. còn cần lưu tâm đến an toàn thông tin giữa các bên cung cấp dịch vụ
1.1.1.4 Mô hình hoạt động của Web service
Trong mô hình hoạt động của dịch vụ Web, có ba thực thể cơ bản là: bên cung cấp dịch vụ (Service provider), bên sử dụng dịch vụ (Service requestor) và đơn vị quản lý đăng ký dịch vụ (Service registry) Service provider có một dịch vụ, nó sẽ phát hành giao diện và mô tả dịch vụ đó Dịch vụ này được đăng ký với thực thể Service registry bằng cách gửi mô tả dịch vụ tới đó Mô tả dịch vụ này chứa tất cả các thông tin cần thiết để một Service requestor có thể tìm thấy và sử dụng dịch vụ, bao gồm kiểu dữ liệu, giao diện mô tả các hàm chức năng, địa chỉ của dịch vụ trong mạng, thông tin cần thiết để thiết lập kết nối Các bên sử dụng dịch vụ có thể tìm kiếm dịch vụ mình cần trên Service registry được mô tả sử dụng UDDI(Universal Description, Discovery and Integration)
Một Web service cũng có thể đóng vai trò một Service requestor , bàng cách sử dụng dịch vụ của các Web Service khác để thực hiện mục tiêu của mình
1.1.1.5 Kiến trúc giao thức của Web service
CÔNG NGHỆ SỬ DỤNG
Ra mắt lần đầu vào năm 2015, React Native là một framework phát triển ứng dụng di động mã nguồn mở do Facebook tạo ra React Native sử dụng ngôn ngữ lập trình JavaScript để tạo các ứng dụng di động trên các hệ điều hành iOS và Android với một cơ sở mã duy nhất.
Tích hợp nhanh chóng và đơn giản của React Native với các thành phần giao diện người dùng gốc giúp các nhà phát triển tiết kiệm đáng kể thời gian và công sức trong quá trình xây dựng ứng dụng di động Nhờ vậy, React Native đã trở thành một trong những framework được ưa chuộng nhất hiện nay Theo khảo sát năm 2021 của Stack Overflow, 58,08% lập trình viên đã chọn React Native trong năm qua và tiếp tục ưu tiên lựa chọn framework này trong tương lai.
1.2.1.1 React Native hoạt động như thế nào?
React Native sẽ hoạt động bằng cách tích hợp Main Thread và JS Thread cho một ứng dụng mobile Main Thread sẽ có vai trò cập nhật giao diện người dùng (UI) và xử lý tương tác của người dùng JS Thread là nơi thực thi và xử lỹ mã Javascript
Main Thread và JS Thread hoạt động độc lập vì vậy cần sử dụng một cầu nối(Bridge) để giúp 2 thread này tương tác với nhau Cầu nối cho phép chúng chuyển đổi dữ liệu giữa thread này và thread kia, giúp chúng giao tiếp mà không phải phụ thuộc vào nhau
1.2.1.2 Ưu điểm và nhược điểm của React Native
Phát triển ứng dụng đa nền tảng với React Native mang lại nhiều lợi thế đáng kể, bao gồm: tiết kiệm thời gian và chi phí phát triển, tối ưu hóa nguồn lực nhân sự, giảm thiểu lỗi và bảo trì code Tương thích xuyên suốt trên cả Android và iOS giúp các tính năng ứng dụng đồng nhất trên cả hai hệ điều hành Hơn nữa, React Native sở hữu một cộng đồng người dùng rộng lớn, hỗ trợ tích cực cho quá trình phát triển Ngoài ra, nền tảng này được phát triển bởi Facebook, đảm bảo hiệu năng ổn định và tối ưu, đáp ứng nhu cầu của doanh nghiệp và người dùng một cách hiệu quả.
Nhược điểm: Yêu cầu Native code Hiệu năng kém hơn so với Native App Bảo mật chưa thật sự tốt do dùng JavaScript Do sử dụng JavaScript, người dùng cũng sẽ bị ảnh hưởng bởi những đặc điểm của JavaScript: dễ làm dễ sai, dẫn đến khó duy trì về sau Quản lý bộ nhớ Tùy biến chưa thật sự tốt ở một số module Không thích hợp cho các app cần năng lực tính toán cao (hash, crypto, etc).
Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ Đây là một nền tảng (platform) phát triển độc lập dựa trên V8 JavaScript engine Đây là một trình thông dịch thực thi mã JavaScript cho phép tạo các ứng dụng web như video clip và diễn đàn, đặc biệt có thể mở rộng nhanh chóng và dễ dàng cũng như thu hẹp phạm vi hoạt động của các trang mạng mạng xã hội. Ý tưởng chính của Node js là sử dụng non – blocking, nhanh chóng định tuyến đầu vào/ đầu ra dữ liệu thông qua các tác vụ thời gian thực Bởi vì Node js có khả năng mở rộng nhanh chóng và có thể xử lý một số lượng lớn các kết nối đồng thời với thông lượng cao.
1.2.2.1 Ưu và nhược điểm của NodeJS Ưu điểm
IO hướng sự kiện không đồng bộ, cho phép xử lý nhiều yêu cầu đồng thời.
Sử dụng JavaScript – một ngôn ngữ lập trình dễ học.
Chia sẻ cùng code ở cả phía client và server.
NPM(Node Package Manager) và module Node đang ngày càng phát triển mạnh mẽ.
Cộng đồng hỗ trợ tích cực.
Cho phép stream các file có kích thước lớn
Không có khả năng mở rộng, vì vậy không thể tận dụng lợi thế mô hình đa lõi trong các phần cứng cấp server hiện nay.
Khó thao tác với cơ sử dữ liệu quan hệ.
Mỗi callback sẽ đi kèm với rất nhiều callback lồng nhau khác.
Cần có kiến thức tốt về JavaScript.
Không phù hợp với các tác vụ đòi hỏi nhiều CPU.
Express.js là một framework Node.js linh hoạt và đơn giản, được phát triển bởi TJ Holowaychuk Nó được thiết kế để xây dựng các ứng dụng web đơn trang, đa trang và cung cấp một bộ tính năng phong phú để hỗ trợ cho các ứng dụng web và di động.
Tổng hợp một số chức năng chính của express như sau:
Thiết lập các lớp trung gian để trả về các HTTP request
Định nghĩa router cho phép sử dụng với các hành động khác nhau dựa trên phương thức HTTP và URL
Cho phép trả về các trang HTML dựa vào các tham số.
MongoDB là một database hướng tài liệu (document), một dạng NoSQL database Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON có một schema rất linh hoạt gọi là BSON MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document khác nhau Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh.
MongoDB lần đầu ra đời bởi MongoDB Inc., tại thời điểm đó là thế hệ 10, vào tháng Mười năm 2007, nó là một phần của sản phẩm PaaS (Platform as a Service) tương tự như Windows Azure và Google App Engine Sau đó nó đã được chuyển thành nguồn mở từ năm 2009.
1.2.3.1 Những nऀi bâ ̣t tính năng của MongoDB
MongoDB có khá nhiều những tính năng hỗ trợ người dùng trong quản lý, lưu trữ và xử lý dữ liê ̣u phức tạp
Sử d甃⌀ng truy vấn Ad hoc: Đây là mô ̣t trong những tính năng hiê ̣u quả nhất của chương trình MongoDB truy vấn Ad hoc sẽ hỗ trợ các trường, truy vấn vào phạm vi và truy xuất các biểu thức để trả về những trường document cụ thể gồm những JavaScript function do người dùng xác định hoă ̣c những truy vấn được cấu hình và trả lại những kết mẫu kết quả có kích thước xác định.
Kh愃ऀ năng nhân rô ̣ng
Khả năng nhân rô ̣ng Replication hay còn được hiểu là nhân bản, tức là sẽ có những bản sao tương tự những phiên bản mà bạn đang sử dụng Nhu cầu lưu trữ dữ liê ̣u lớn do cơ sở dữ liê ̣u ngày càng đa dạng, chính vì vâ ̣y nó càng đòi hỏi dữ liê ̣u phải được toàn vẹn và tránh bị mất mát trước những sự cố trong quá trình xử lý.
Trong cân bằng t愃ऀi
Sử dụng Sharding, MongoDB phân chia dữ liệu theo chiều ngang, cung cấp khả năng lựa chọn Shard key để xác định phân phối dữ liệu trong Collection Dữ liệu được chia đều và phân phối dựa trên Shard key, hỗ trợ chạy trên nhiều máy chủ để cân bằng tải, sao chép dữ liệu và đảm bảo hệ thống tiếp tục hoạt động ngay cả khi có sự cố phần cứng.
H̀ trợ lưu trữ c愃Āc tê ̣p dữ liê ̣u
MongoDB sử dụng như hê ̣ thống tê ̣p nhờ khả năng lưu trữ tê ̣p dữ liê ̣u từ đó hỗ trợ cân bằng tải và copy dữ liê ̣u từ nhiều máy tính Trong đó, hê ̣ thống tê ̣p GridFS sẽ phân chia từng tê ̣p ra những phần hay đoạn lưu thành những document riêng và người dùng có thể truy xuất GridFS thông qua tiê ̣n ích Mongofiles.
MongoDB cung cấp 3 phương pháp tâ ̣p hợp chính bao gồm Aggregation Pipeline, Single-purpose Aggregation và Mapreduce Trong đó, Aggregation Pipeline được đánh giá là mang lại hiê ̣u suất cao hơn so với những hoạt đô ̣ng tổng hợp khác.
Quy đ椃⌀nh k椃Āch thước giới h愃⌀n Collection
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
PHÂN TÍCH YÊU CẦU CỦA ĐỀ TÀI
- Là một Website chuyên bán các sản phẩm về máy tính, các linh kiện phụ tùng máy tính …cho các cá nhân và doanh nghiệp
- Là một Website động, các thông tin được cập nhật theo định kỳ.
- Người dùng truy cập vào Website có thể xem, tìm kiếm, mua các sản phẩm,hoặc đặt hàng sản phẩm
- Các sản phẩm được sắp xếp hợp lý Vì vậy người dùng sẽ có cái nhìn tổng quan về tất cả các sản phẩm hiện có.
- Người dùng có thể xem chi tiết từng sản (có hình 愃ऀnh minh ho愃⌀ s愃ऀn phẩm).
- Khi đã chọn được món hàng vừa ý thì người dùng click vào nút cho vào giỏ hàng hoặc chọn biểu tượng giỏ hàng để sản phẩm được cập nhật trong giỏ hàng.
- Người dùng vẫn có thể quay trở lại trang sản phẩm để xem và chọn tiếp, các sản phẩm đã chọn sẽ được lưu vào trong giỏ hàng.
- Khách hàng cũng có thể bỏ đi những sản phẩm không vừa ý đã có trong giỏ hàng.
Sau khi chọn những sản phẩm ưng ý và thêm vào giỏ hàng, người dùng có thể tiến hành thanh toán để hoàn tất quá trình mua sắm Ngoài ra, người dùng cũng có thể hủy bỏ đơn hàng nếu có thay đổi ý định.
- Đơn giá của các món hàng sẽ có trong giỏ hàng.
2.1.1 PHẠM VI CỦA DỰ ÁN
- Dành cho mọi đối tượng có nhu cầu mua sắm trên mạng.
- Do nghiệp vụ của cửa hàng kết hợp với công nghệ mới và được xử lý trên hệ thống máy tính nên công việc liên lạc nơi khách hàng cũng như việc xử lý hoá đơn thực hiện một cách nhanh chóng và chính xác Rút ngắn được thời gian làm việc, cũng như đưa thông tin về các sản phẩm mới nhanh chóng đến cho khách hàng.
Có 2 đối tượng sử dụng cơ bản là người dùng và nhà quản trị:
* Người dùng: Qua Website, khách hàng có thể xem thông tin, lựa chọn những sản phẩm ưa thích ở mọi nơi thậm chí ngay trong phòng làm việc của mình.
* Nhà qu愃ऀn tr椃⌀: Nhà quản trị có toàn quyền sử dụng và cập nhật sản phẩm, hoá đơn, quản lý khách hàng, đảm bảo tính an toàn cho Website.
2.1.3 MỤC ĐÍCH CỦA DỰ ÁN
- Đáp ứng nhu cầu mua bán ngày càng phát triển của xã hội, xây dựng nên một môi trường làm việc hiệu quả.
- Thúc đẩy phát triển buôn bán trực tuyến.
- Rút ngắn khoảng cách giữa người mua và người bán, tạo ra một Website trực tuyến có thể đưa nhanh thông tin cũng như việc trao đổi mua bán các loại điện thoại qua mạng.
- Việc quản lý hàng trở nên dễ dàng.
- Sản phẩm được sắp xếp có hệ thống nên người dùng dễ tìm kiếm sản phẩm
PHÂN TÍCH CÁC CHỨC NĂNG HỆ THỐNG
Các tác nhân của hệ thống gồm có:
Admin: là thành viên quản trị của hệ thống, có các quyền và chức năng như: tạo các tài khoản, quản lý sản phẩm, quản trị người dùng, quản lý hoá đơn…
User: là hệ thống thành viên có chức năng: Đăng kí, đăng nhập, tìm kiếm, xem, sửa thông tin cá nhân, xem giỏ hàng, đặt hàng, xem thông tin về các hóa đơn đã lập.
STT Tên Use case Ý nghĩa/ Ghi chú
1 Đăng nhập Use case này giúp người dùng sử dụng các chức năng của hệ thống cần đến quyền truy cập
2 Đăng ký Use case này giúp người dùng trở thành khách hàng để sử dụng các chức năng của hệ thống
3 Tìm kiếm Use case này miêu tả chức năng tìm kiếm sản phẩm của người dùng
4 Thêm vào giỏ hàng Chức năng của giỏ hàng là đựng những mặt hàng mà khách chọn
5 Quản lý người dùng Admin quản lý tài khoản của khách hàng đăng ký là thành viên của trang web
6 Quản lý đơn hàng Admin quản lý đơn hàng khi khách hàng đặt mua và quản lý những hóa đơn nhập xuất sản phẩm của công ty
7 Quản lý sản phẩm Use case này mô tả chức năng cập nhật thông tin sản phẩm vào hệ thống của Admin.
2.2.2 Biểu đồ phân rã chức năng
2.2.3 Biểu đồ luồng dữ liệu
2.2.4 Thiết kế cơ sở dữ liệu
2.2.4.1 Thiết kế cơ sở dữ liệu người dùng
Tên thuộc tính Kiểu dữ liệu Mô tả name String Tên người dùng email String Email password String Mật khẩu isAdmin Boolean Xác nhận Admin phone Number Số điện thoại address String Địa chỉ avatar String ảnh đại diện city String Tên thành phố
2.2.4.2 Cơ sở dữ liệu cho sản phẩm
Thuộc tính Kiểu dữ liệu Mô tả name String Tên sản phẩm image String Hình ảnh sản phẩm type String Loại sản phẩm price Number Giá sản phẩm countInStock Number Số lượng sản phẩm rating Number Đánh giá description String Mô tả discount Number Giảm giá sold Number Đã bán
2.2.4.3 Thiết kế cở sở dữ liệu đơn đặt hàng
Thuộc tính Kiểu dữ liệu Mô tả name String Tên sản phẩm amount Number Số lượng image String Hình ảnh price Number Giá discount Number Giảm giá product Object Sản phẩm
Thuộc tính Kiểu dữ liệu Mô tả fullName String Tên đầy đủ address String Địa chỉ city String Tên thành phố phone Number Số điện thoại
Thuộc tính Kiểu dữ liệu Mô tả paymentMethod String Phương thức thanh toán itemsPrice Number Gía sản phẩm totalPrice Number Số lượng sản phẩm user Object Người dùng isPaid Boolean Xác nhận trả tiền paidAt Date Ngày trả isDelivered Boolean Đã được giao hàng deliveredAt Date Ngày được giao shippingPrice Number Tiền vận chuyển
THIẾT KẾ GIAO DIỆN TRANG WEB
PHÂN TÍCH QUY TRÌNH HOẠT ĐỘNG
Hoạt động của khách hàng:
Khi 1 khách hàng ghé thăm website, họ sẽ xem thông tin website đó bán những gì,thông tin về giá cả được bán Nếu họ có nhu cầu mua sản phẩm thì họ sẽ tiến đăng ký tài khoản để tiến hành đặt hàng.
Hoạt động của nhà quản lý:
Giới thiệu các sản phẩm , cung cấp giỏ hàng và quản lý sản phẩm.
GIỚI THIỆU CÁC FORM CHÍNH
Khi truy cập vào website bán hàng thì khách hàng sẽ được truy cập vào trang chủ của website
Hình 1: Trang chủKhách hàng có thể tìm kiếm sản phẩm mong muốn hoặc đăng nhập/ đăng ký/ tạo tài khoản
Hình 2: Chức năng xem thêm sản phẩm
Khách hàng sau khi chọn được sản phẩm mong muốn nếu muốn mua thì phải đăng nhập hoặc đăng ký tài khoản.
Hình 3: Chức năng đăng nhập
Để quản lý sản phẩm, người dùng cần đăng nhập với tài khoản quản trị viên để được cấp quyền thêm, xóa hoặc sửa thông tin sản phẩm hoặc người dùng hiện có.
Hình 6: Chức năng quản lý người dùng
Hình 7: Chức năng quản lý sản phẩm