Hình 2 Tiện ích mở rộng trong ứng dụng iOS iOS Extension cho phép bạn mở rộng chức năng và nội dung tùy chỉnh bên ngoài ứng dụng của mình và cung cấp nó cho người dùng trong khi họ tương
Trang 1ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Trang 2ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CHUYÊN NGÀNH 1
ĐỀ TÀI: HỆ THỐNG NHẬN DIỆN VÀ LỌC SPAM SMS
SỬ DỤNG MACHINE LEARNING
Đà Nẵng, tháng 5 năm 2021
Trang 3MỞ ĐẦU
Công nghệ thông tin trong giai đoạn hiện nay đang phát triển như vũbáo ở mọi lĩnh vực hoạt động khắp nơi trên thế giới Điều xảy ra trong vòngvài năm qua ở Việt Nam là sự đầu tư ồ ạt vào công nghệ Tin học đã và đang
là một trong các vấn đề không thể thiếu đối với bất kỳ công ty nào Đặc biệttin học ngày càng giữ vai trò quan trọng trong vấn đề quản lý tại các tổ chứcnhất là tại các lĩnh vực thu thập thông tin Tuy ngành công nghệ thông tin ởnước ta mới chỉ phát triển trong vài năm trở lại đây và đang từng bước pháttriển nhưng những bước phát triển đó đã cho thấy tiềm năng lớn lao trong lĩnhvực công nghệ thông tin ở nước ta, trong đó phát triển hệ thống thông tin đang
là thế mạnh của đất nước Hệ thống thông tin giúp công việc quản lý dễ dànghơn, nâng cao hiệu quả sản xuất, tiết kiệm được lượng lớn thời gian và côngsức
Qua thời gian tìm hiểu thực tế để xác định đề tài đồ án, em nhận thấy
hệ thống nhận diện và lọc Spam sms sử dụng Machine Learning là một trongnhững vấn đề rất quan trọng trong việc ứng dụng vào cuộc sống của mỗi conngười Bởi hệ thống nhận diện và lọc Spam sms sử dụng Machine Learning làthành phần không thể thiếu để đời sống có thể hoạt động và phát triển
Trang 4LỜI CẢM ƠN
Trong thời gian làm đồ án chuyên ngành 2, nhóm em đã nhận được nhiều sựgiúp đỡ, đóng góp ý kiến và chỉ bảo nhiệt tình của thầy cô
Em xin gửi lời cảm ơn chân thành đến T.S Nguyễn Sĩ Thìn, giảng Khoa CNTT
và TT người đã tận tình hướng dẫn, chỉ bảo nhóm em trong suốt quá trình làm báo cáo
Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường nói chung, cácthầy cô trong Bộ môn Lập trình mạng,lập trình di động nói riêng đã dạy dỗ cho emkiến thức về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ
sở lý thuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều kiện,quan tâm, giúp đỡ, động viên em trong suốt quá trình học tập và hoàn thành bài báocáo này
Trang 5NHẬN XÉT
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6MỤC LỤC
GIỚI THIỆU 11
1 Tổng quan 11
2 Phương pháp, kết quả 11
3 Cấu trúc đồ án 12
CHƯƠNG 1: NGHIÊN CỨU TỔNG QUAN 13
1.1 Giới thiệu ngôn ngữ, công cụ 13
1.1.1 Ngôn ngữ lập trình Swift 13
1.1.2 iOS Extension 14
1.1.3 Hiểu cách hoạt động của một iOS Extension: 15
1.1.4 Cách một iOS Extension giao tiếp 16
1.1.5 Message Filter App Extension 18
1.1.6 Call Directory Extension 21
1.1.7 CoreML 22
1.1.8 Ngôn ngữ lập trình Python 23
1.1.9 SailsJS 24
1.1.10 Realm database 25
1.1.11 MongoDB 26
1.2 Machine Learning 28
1.2.1 Machine Learning 28
1.2.2 Học máy có giám sát 29
1.2.3 Học không giám sát 31
1.3 Natural language processing 33
1.3.1 Xử lý ngôn ngữ tự nhiên 33
1.3.2 Xử lý ngôn ngữ tự nhiên cho tiếng Việt 33
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 35
2.1 Giải pháp nhận diện tin nhắn rác 35
2.1.1 Xử lý ngôn ngữ tự nhiên 35
Trang 72.1.3 Mô hình Bernoulli 38
2.2 Phân tích thiết kế hệ thống 42
CHƯƠNG 3: TRIỂN KHAI XÂY DỰNG 44
3.1 Giới thiệu 44
3.2 Dataset 44
3.3 Model 47
3.4 Ứng dụng iOS 48
3.5 Xây dựng Server 49
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 51
1 Kết quả 51
2 Hạn chế 51
3 Hướng phát triển 51
Trang 8DANH MỤC CÁC BẢNG
Bảng 1: Ví dụ về dữ liệu với tin nhắn 38 Bảng 2: Ví dụ về dữ liệu với tin nhắn rác 38 Bảng 3 : Ví dụ về dữ liệu với tin nhắn không phải tin nhắn rác 39
Trang 9DANH MỤC HÌNH
Hình 1 Swift logo 13
Hình 2 Tiện ích mở rộng trong ứng dụng iOS 15
Hình 3 Vòng đời cơ bản của tiện ích mở rộng ứng dụng 16
Hình 4 iOS Extension chỉ giao tiếp trực tiếp với ứng dụng chủ 17
Hình 5 Tiện ích mở rộng ứng dụng có thể giao tiếp gián tiếp với ứng dụng chứa nó 18
Hình 6 Tạo 1 App Group trong Xcode 18
Hình 7 Chuyển một truy vấn đến Message Filter App Extension để nhận trạng thái của tin nhắn 19
Hình 8 Mô hình hoạt động của Message Filter App Extension 20
Hình 9 Tiện ích mở rộng danh bạ cuộc gọi 21
Hình 10 Python 24
Hình 11 SailsJs 25
Hình 12 Cơ sở dữ liệu Realm 26
Hình 13 MongoDB 28
Hình 14: Mô hình chung cho các thuật toán học máy có giám sát 30
Hình 15 Mô hình chung cho các thuật toán học máy không giám sát 32
Hình 16 Sơ đồ quá trình 35
Hình 17 Quy trình làm sạch tin nhắn 36
Hình 18 Quy trình chuẩn hóa tin nhắn 36
Hình 19 Quy trình loại bỏ các từ không có nghĩa 37
Hình 20 Quy trình hoạt động của ứng dụng 42
Hình 21 Xuất tin nhắn trong công cụ iMazing 45
Hình 22 Dataset được sử dụng trong dự án 45
Hình 23 Tỷ lệ thư rác - lượng thư trong dự án 46
Hình 24 Top 30 từ được sử dụng nhiều nhất trong tin nhắn rác 46
Hình 25 Top 30 từ được sử dụng nhiều nhất trong tin nhắn không phải là tin rác 47
Hình 26 Màn hình chính 48
Trang 10Hình 28 Màn hình Bộ lọc thư 48
Hình 29 Thêm keyword 48
Hình 30 Thêm số điện thoại bị chặn 49
Hình 31 Xóa số điện thoại 49
Hình 32 Văn bản có nội dung không phải là thư rác khi được gửi đến máy chủ 49
Hình 33 Văn bản có nội dung spam khi được gửi đến máy chủ 50
Trang 12GIỚI THIỆU
1 Tổng quan
Trong những năm gần đây, sự bùng nổ của mạng di động tại Việt Nam đã kích thích việc
sử dụng Dịch vụ tin nhắn ngắn (SMS) Thư rác qua SMS đã tăng lên vì chi phí cho ngườigửi thư rác thấp và tỷ lệ phản hồi cao hơn email Spam SMS đang là một vấn đề nghiêmtrọng ở Việt Nam do các gói SMS trả trước không giới hạn và rất rẻ
Theo một báo cáo vào năm 2015 của BKAV, một hãng bảo mật thông tin, có 13,9 triệutin nhắn rác được gửi đến người dùng điện thoại di động mỗi ngày ở Việt Nam và cứ haingười thì có một người nhận được tin nhắn rác Trong khi đó, có ít nhất 120 triệu ngườidùng di động tích cực trên thị trường theo một báo cáo của Bộ Thông tin và Truyềnthông, được công bố vào năm 2015
Spam SMS gây ra nhiều vấn đề cho người dùng di động Họ có thể bị tổn thất tài chính từnhững tin nhắn này bằng cách phản ứng lại chúng Người dùng có thể vô tình gọi đến các
số giá cước cao cấp hoặc đăng ký các dịch vụ đắt tiền bằng cách trả lời các tin nhắn này.Hơn nữa, họ có thể gặp phải một số rủi ro khi truy cập các trang web có hại hoặc tảixuống phần mềm độc hại Các nhà khai thác mạng di động cũng bị thiệt hại về tài chính
vì họ có thể mất người dùng hoặc chi nhiều hơn cho việc ngăn chặn thư rác
Có nhiều phương pháp và hệ thống lọc tin nhắn rác tiếng Anh trên mạng di động nhưngvới người Việt Nam, có một số nghiên cứu về email rác nhưng không tập trung vào SMS
2 Phương pháp, kết quả
Ứng dụng này dành cho những ai muốn bảo vệ quyền riêng tư trước những phiền toái,đồng bộ toàn bộ dữ liệu, số điện thoại rác, từ đó xây dựng cộng đồng chống tin nhắn,cuộc gọi rác trên cả nước
Mục tiêu của dự án là xây dựng một ứng dụng với ba tính năng chính:
- Bảo vệ điện thoại của bạn khỏi các tin nhắn lừa đảo, thư rác và độc hại
- Dễ dàng cài đặt và sử dụng
- Ngăn chặn mọi sự làm phiền riêng tư
Trang 133 Cấu trúc đồ án
Hệ thống bao gồm:
- Server hỗ trợ nhận diện và đồng bộ tin nhắn rác
- Ứng dụng di động và tiện ích mở rộng lọc tin nhắn rác cho thiết bị iOS vàAndroid
Trang 14CHƯƠNG 1: NGHIÊN CỨU TỔNG QUAN
1.1 Giới thiệu ngôn ngữ, công cụ
1.1.1 Ngôn ngữ lập trình Swift
Hình 1 Swift logo
Swift là một ngôn ngữ tuyệt vời để viết phần mềm do chính Apple phát triển, hỗ trợ các nền tảng như điện thoại, máy tính, máy chủ Đó là một ngôn ngữ lập trình an toàn, nhanh chóng và mạnh mẽ, kết hợp những gì tốt nhất trong tư duy ngôn ngữ hiện đại với sự khônngoan từ văn hóa kỹ thuật Apple rộng lớn, cùng với đó là những đóng góp đa dạng từ cộng đồng mã nguồn mở của nó Trình biên dịch được tối ưu hóa cho hiệu suất và ngôn ngữ được tối ưu hóa để phát triển Swift thân thiện với các lập trình viên mới Viết mã Swift trong Playground cho phép bạn thử nghiệm với mã và xem kết quả ngay lập tức màkhông phải tốn công xây dựng và chạy ứng dụng
Ưu điểm:
- Swift miễn phí và là mã nguồn mở
- Code của ngôn ngữ Swift ngắn, gọn và dễ đọc
- Tốc độ thực thi các đoạn mã rất nhanh và an toàn
- Swift dễ tiếp cận và quen thuộc (Mã C và C++ có thể được thêm bởi các lập trình viên Swift vào các ứng dụng Swift)
Trang 15- Khả năng phát triển ứng dụng di động nhanh và dễ dàng
- Swift dùng được cho cả MacOS và iOS Apps
Nhược điểm:
- Ngôn ngữ còn khá non trẻ và nguồn lực ít
- Khả năng tương tác kém với các công cụ và IDE bên thứ ba
- Thiếu hộ trợ các phiên bản iOS trước đó
1.1.2 iOS Extension
iOS Extension không phải là một ứng dụng Nó thực hiện một nhiệm vụ cụ thể, có phạm
vi, tuân thủ các chính sách được xác định trước bởi ứng dụng chứa nó
Hình 2 Tiện ích mở rộng trong ứng dụng iOS
iOS Extension cho phép bạn mở rộng chức năng và nội dung tùy chỉnh bên ngoài ứng dụng của mình và cung cấp nó cho người dùng trong khi họ tương tác với các ứng dụng khác hoặc hệ thống
Trang 16Bạn tạo iOS Extension để kích hoạt một tác vụ cụ thể Ví dụ: để cho phép người dùng đăng lên dịch vụ xã hội của bạn từ trình duyệt web, bạn có thể cung cấp tiện ích mở rộng Share Hoặc, để cho phép người dùng theo dõi đội yêu thích của họ, bạn có thể cung cấp tiện ích Today hiển thị điểm số thể thao hiện tại trong Trung tâm thông báo.
Bạn thậm chí có thể tạo iOS Extension cung cấp bàn phím tùy chỉnh mà người dùng có thể sử dụng thay cho bàn phím hệ thống iOS
1.1.3 Hiểu cách hoạt động của một iOS Extension:
Vì iOS Extension không phải là một ứng dụng nên vòng đời và môi trường của nó làkhác nhau Trong hầu hết các trường hợp, iOS Extension khởi chạy khi người dùng chọn
nó từ giao diện người dùng của ứng dụng hoặc từ bộ điều khiển chế độ xem hoạt độngđược trình bày Ứng dụng mà người dùng sử dụng để chọn tiện ích mở rộng ứng dụngđược gọi là ứng dụng lưu trữ Ứng dụng lưu trữ xác định ngữ cảnh được cung cấp choiOS Extension và bắt đầu vòng đời khi nó gửi yêu cầu để phản hồi lại hành động củangười dùng Tiện ích thường chấm dứt ngay sau khi hoàn thành yêu cầu mà nó nhận được
từ ứng dụng lưu trữ
Ví dụ: hãy tưởng tượng rằng người dùng chọn một số văn bản trong Ứng dụng máy chủ
OS X, kích hoạt nút Chia sẻ và chọn tiện ích mở rộng ứng dụng từ danh sách chia sẻ đểgiúp họ đăng văn bản lên trang web chia sẻ xã hội Ứng dụng lưu trữ phản hồi lựa chọncủa người dùng bằng cách gửi tới tiện ích một yêu cầu có chứa văn bản đã chọn Mộtphiên bản khái quát của tình huống này trong bước 1
Trang 17Hình 3 Vòng đời cơ bản của tiện ích mở rộng ứng dụng
Trong bước 2 của Hình 3, hệ thống khởi tạo iOS Extension được xác định trongyêu cầu của ứng dụng chủ và thiết lập một kênh giao tiếp giữa chúng iOS Extension hiểnthị chế độ xem của nó trong ngữ cảnh của ứng dụng lưu trữ và sau đó sử dụng các mục
mà nó nhận được trong yêu cầu của ứng dụng lưu trữ để thực hiện nhiệm vụ của nó
Trong bước 3 của Hình 3, người dùng thực hiện hoặc hủy tác vụ trong iOSExtension và loại bỏ nó Đáp lại hành động này, iOS Extension sẽ hoàn thành yêu cầucủa ứng dụng lưu trữ bằng cách thực hiện ngay tác vụ của người dùng hoặc nếu cần, bắtđầu quy trình nền để thực hiện tác vụ đó
Ứng dụng lưu trữ loại bỏ chế độ xem của tiện ích và người dùng quay lại ngữ cảnhtrước đó của họ trong ứng dụng lưu trữ Khi tác vụ của iOS Extension kết thúc, dù ngaylập tức hay sau đó, kết quả có thể được trả về ứng dụng lưu trữ
Ngay sau khi iOS Extension thực hiện tác vụ của nó (hoặc bắt đầu phiên nền đểthực hiện nó), hệ thống sẽ kết thúc tiện ích mở rộng, như được hiển thị trong bước 4
1.1.4 Cách một iOS Extension giao tiếp
Trang 18Tiện ích ứng dụng giao tiếp chủ yếu với ứng dụng lưu trữ của nó và làm như vậy về mặt
xử lý giao dịch: Có yêu cầu từ máy chủ và phản hồi từ tiện ích Hình 10 cho thấy một cáinhìn đơn giản về mối quan hệ giữa tiện ích mở rộng đang chạy, ứng dụng lưu trữ đã khởichạy nó và ứng dụng chứa
Hình 4 iOS Extension chỉ giao tiếp trực tiếp với ứng dụng chủ
Không có giao tiếp trực tiếp giữa iOS Extension và ứng dụng chứa nó; thông thường, ứngdụng chứa thậm chí không chạy trong khi tiện ích mở rộng được chứa đang chạy iOSExtension chứa ứng dụng và ứng dụng lưu trữ hoàn toàn không giao tiếp với nhau
Ứng dụng không thể truy cập dữ liệu bên ngoài vì lý do riêng tư và bảo mật Để hỗ trợiOS Extension, Apple cung cấp tài nguyên được chia sẻ có tên là App Groups
Trang 19Hình 5 Tiện ích mở rộng ứng dụng có thể giao tiếp gián tiếp với ứng dụng chứa nó
Hình 6 Tạo 1 App Group trong Xcode
1.1.5 Message Filter App Extension
Khi người dùng nhận được tin nhắn SMS hoặc MMS từ một người gửi không xác định,ứng dụng Tin nhắn có thể yêu cầu Message Filter App Extension xác định xem tin nhắn
đó là mong muốn hay không mong muốn Extension của bạn có thể đưa ra quyết định này
Trang 20bằng cách sử dụng dữ liệu và logic tích hợp của riêng nó hoặc bằng cách trì hoãn phântích được thực hiện bởi máy chủ được liên kết của bạn
Message Filter App Extension chỉ hoạt động với tin nhắn SMS và MMS từ những ngườigửi không xác định , nó không hoạt động với tin nhắn từ những người gửi trong danhsách Liên hệ của người dùng hoặc với tin nhắn iMessage từ bất kỳ nguồn nào
Để tìm hiểu xem liệu tin nhắn từ một người gửi không xác định có mong muốn haykhông, ứng dụng Tin nhắn sẽ khởi chạy Message Filter App Extension hiện được bật vàtruy vấn nó
Hình 7 Chuyển một truy vấn đến Message Filter App Extension để nhận trạng thái của
tin nhắn
Ứng dụng Tin nhắn sử dụng đối tượng ILMessageFilterQueryRequest để chuyển thôngtin về tin nhắn tới Message Filter App Extension Nếu extension có thể xác định liệuthông báo có không mong muốn hay không, nó sẽ trả về quyết định cho Messages trongđối tượng ILMessageFilterQueryResponse Ngược lại, nếu nó không thể tự xác định điều
Trang 21này, chúng ta sẽ yêu cầu Messages gửi thông tin về tin nhắn đến máy chủ được liên kếtvới ứng dụng Máy chủ sẽ kiểm tra thông tin tin nhắn và gửi phản hồi tới Tin nhắn, phảnhồi này sẽ chuyển phản hồi đến extension Message Filter App Extension sẽ phân tích cúpháp phản hồi của máy chủ và trả về quyết định cuối cùng cho Tin nhắn trong một đốitượng Message Filter Query Response, như thể hiện trong Hình 8
Hình 8 Mô hình hoạt động của Message Filter App Extension
Trang 221.1.6 Call Directory Extension
Call Directory là một tiện ích mở rộng ứng dụng đơn giản cho phép ứng dụng của bạn bổsung vào danh mục cuộc gọi hệ thống Bạn là một chỉ làm hai việc với phần mởrộng Bạn có thể chặn số điện thoại và bạn có thể thêm nhãn cho số điện thoại Các nhãn
đó sau đó sẽ được hiển thị trên màn hình cuộc gọi đến
Hình 9 Tiện ích mở rộng danh bạ cuộc gọi
Hệ thống iOS sẽ sử dụng Call Directory Extension làm tùy chọn dự phòng Ví dụ: nếu sốđiện thoại gọi đến không có trong danh bạ của người dùng, thì nhãn do Call DirectoryExtension cung cấp sẽ được hiển thị Hệ thống iOS sẽ luôn được ưu tiên
Một điều cần lưu ý ở đây là phần mở rộng danh bạ cuộc gọi không cho phép bạn chặncuộc gọi Đây là một nguồn dữ liệu đơn giản cho hệ thống iOS sẽ được truy vấn định kỳ
và không có gì khác Bạn phải có tất cả dữ liệu có thể truy cập vào tiện ích mở rộng (tệp
Trang 23trên đĩa, dữ liệu lõi, v.v ) Ý tưởng là ứng dụng sẽ tải xuống và cập nhật dữ liệu và tiệních mở rộng sẽ chỉ sử dụng dữ liệu đó để chuyển tiếp đến hệ thống.
1.1.7 CoreML
Core ML là khung công tác học máy được sử dụng trên các sản phẩm của Apple (macOS,iOS, watchOS và tvOS ) để thực hiện dự đoán hoặc suy luận nhanh chóng với việc tíchhợp dễ dàng các mô hình học máy được đào tạo trước, cho phép bạn thực hiện các dựđoán theo thời gian thực hình ảnh hoặc video trực tiếp trên thiết bị
Đối với suy luận học máy, các nhà phát triển iOS có ba lựa chọn để truy cập các mô hìnhđược đào tạo để cung cấp suy luận:
- Sử dụng Core ML để truy cập mô hình được đào tạo trước trên thiết bị cục
bộ
- Lưu trữ Mô hình học máy trên đám mây và gửi dữ liệu từ thiết bị đến điểm cuối đượclưu trữ để đưa ra dự đoán
- Gọi các dịch vụ được quản lý trên đám mây API-Driven Machine Learning của bên thứ
ba nơi dịch vụ lưu trữ và quản lý mô hình được đào tạo được xác định trước Dữ liệungười dùng được chuyển qua lệnh gọi API từ thiết bị và dịch vụ trả về các giá trị được dựđoán
Ưu điểm :
- Độ trễ thấp và kết quả gần thời gian thực: Bạn không cần tạo mạng Lệnhgọi API bằng cách gửi dữ liệu và sau đó chờ phản hồi Điều này có thể rấtquan trọng đối với các ứng dụng như xử lý video các khung hình liên tiếp
từ camera trên thiết bị
- Tính khả dụng (Ngoại tuyến), Quyền riêng tư và Chi phí hấp dẫn khi ứngdụng chạy mà không có kết nối mạng, không có lệnh gọi API và dữ liệukhông bao giờ rời khỏi thiết bị Hãy tưởng tượng sử dụng thiết bị di độngcủa bạn để xác định các ô lịch sử khi ở trên tàu điện ngầm, lập danh mục
Trang 24các bức ảnh kỳ nghỉ riêng tư khi ở chế độ trên máy bay hoặc phát hiện raloại cây độc trên vùng đất lớn
- Đào tạo mô hình : Trong hầu hết các trường hợp, mô hình trên thiết bị phảiđược đào tạo liên tục bên ngoài thiết bị với dữ liệu người dùng mới Sau khi
mô hình được đào tạo lại, ứng dụng sẽ cần được cập nhật với mô hình mới
và tùy thuộc vào kích thước của mô hình, điều này có thể gây khó khăn choviệc truyền mạng cho người dùng Tham khảo lại thử thách về kích thướcứng dụng được liệt kê ở trên và bây giờ chúng tôi có thể gặp sự cố về trảinghiệm người dùng
1.1.8 Ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình hướng đối tượng, được thông dịch và là một ngôn ngữngữ nghĩa động, cấp cao Python hỗ trợ các mô-đun và gói, khuyến khích mô-đun hóa vàtái sử dụng mã Trình thông dịch Python và thư viện tiêu chuẩn mở rộng có sẵn dướidạng mã nguồn hoặc mã nhị phân miễn phí cho tất cả các nền tảng chính và có thể đượcphân phối tự do
Trang 25Hình 10 Python
Các đặc điểm của Python:
- Cú pháp đơn giản dễ đọc
- Hướng thủ tục, hướng đối tượng
- Hỗ trợ mo-dun hoặc gói
- Xử lý lỗi với các trường hợp ngoại lệ
- Kiểu dữ liệu động ở mức cao
- Có bộ thư viện chuẩn và các module bên ngoài, đáp ứng mọi nhu cầu lậptrình
- Có khả năng tương tác với các module khác được viết bằng C / C ++ (Hoặc Javacho Jython ,hoặc.Netcho IronPython )
1.1.9 SailsJS
Trang 26Hình 11 SailsJs
Sails.js là một Node.js Framework MVC (model – view – controller) tuân theo nguyên
tắc “quy ước trên cấu hình” Nó được lấy cảm hứng từ khuôn khổ web Ruby on Rails phổbiến và cho phép bạn nhanh chóng xây dựng các API REST, ứng dụng một trang và ứngdụng thời gian thực ( dựa trên WebSockets ) Nó sử dụng rộng rãi các trình tạo mã chophép bạn xây dựng ứng dụng của mình mà ít phải viết mã hơn - đặc biệt là mã phổ biến
có thể được dựng theo cách khác
Khung được xây dựng dựa trên Express.js, một trong những thư viện Node.js phổ biếnnhất và Socket.io, một thư viện / công cụ JavaScript để thêm giao tiếp theo thời gianthực, hai chiều, dựa trên sự kiện vào các ứng dụng Tại thời điểm viết bài, phiên bản ổnđịnh chính thức của Sails.js là 0.12.14, có sẵn từ npm Sails.js phiên bản 1.0 vẫn chưachính thức được phát hành, nhưng theo những người sáng tạo Sails.js , phiên bản 1.0 đãđược sử dụng trong một số ứng dụng sản xuất và họ thậm chí còn khuyên bạn nên sửdụng nó khi bắt đầu các dự án mới
Sails.js có nhiều tính năng tuyệt vời:
- nó được xây dựng trên Express.js
- nó có hỗ trợ thời gian thực với WebSockets
- cần có cách tiếp cận "quy ước trên cấu hình"
- nó có khả năng tạo mã mạnh mẽ, nhờ Bản thiết kế
- cơ sở dữ liệu bất khả tri nhờ có Waterline mạnh mẽ của nó