CƠ SỞ LÝ THUYẾT

Một phần của tài liệu Xây dựng hệ thống đỗ xe ô tô thông minh với thiết bị cảm biến . (Trang 29 - 42)

LẬP TRÌNH KẾT NỐI THIẾT BỊ

Arduino là một bo mạch được dùng để lập trình tương tác với các thiết bị phần cứng khác như cảm biến, động cơ,... Thêm nữa, vì Arduino là một nền tảng được chuẩn hóa, nên đã có rất nhiều bo mạch mở rộng có thể cắm chồng lên mạch chủ Arduino như là thư viện của các ngôn ngữ lập trình.

Lập trình cho Arduino dùng ngôn ngữ C/C++, so với lập trình lập trình trực tiếp với vi điều khiển, lập trình với Arduino đơn giản hơn nhiều vì chỉ phải giao tiếp với phần cứng thông qua các thư viện.

Hình 2.2-7: Cài đặt môi trường Java.

Hình 2.2-9: Arduino IDE.

Một chương trình viết trên bo mạch Arduino dùng ngôn ngữ C/C++, được gọi là sketch với 2 phương thức quan trọng là setup() và loop().

• Những lệnh trong setup() thường là những khai báo biến và các hàm chức năng, sẽ được chạy khi chương trình khởi động.

• Những lệnh trong loop() được chạy lặp đi lặp lại cho tới khi ngắt nguồn hoặc nút reset được nhấn trên bo mạch chủ Arduino.

Sketch sau đó được build và nạp lên bo mạch chính qua cổng giao tiếp USB.

Hình 2.2-11: Cấu trúc của Sketch.

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER

SQL, từ viết tắt của Structured Query Language, là ngôn ngữ truy vấn có cấu trúc, cho phép truy cập và thao tác với các cơ sở dữ liệu để tạo, xóa, sửa đổi, trích xuất dữ liệu.

Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ được phát triển bởi Microsoft, bao gồm phần mềm quản lý, tổ chức, lưu trữ và khai thác dữ liệu cho người dùng chuyên nghiệp và cho doanh nghiệp.

Một vài hệ quản trị cơ sở dữ liệu mã nguồn mở cũng đã phát triển, nhưng Microsoft SQL Server vẫn dễ sử dụng và có nhiều tính năng hơn. Nó cũng hỗ trợ đầy đủ các trình kích hoạt. SQL Server luôn cập nhật và không ngừng tung ra những phiên bản mới, vì vậy mà nó vẫn là hệ quản trị cơ sở dữ liệu hàng đầu được lựa chọn trong các dự án lớn ngày nay.

SQL Server hoạt động tự nhiên với các ứng dụng chạy trên nền tảng .NET, do đó, nó là sự lựa chọn tối ưu cho phần mềm chạy trên máy chủ Windows hoặc máy tính để bàn.

Hình 2.2-13: Mô hình liên kết dữ liệu với ứng dụng

L

ẬP TRÌNH ỨNG DỤ N G W EB V Ớ I iASP . NET MVC

ASP.NET MVC là một mô hình phát triển phần mềm mới, đây được xem là sự lựa chọn tiếp theo cho việc xây dựng các ứng dụng Web dựa trên nền tảng ASP.NET.

MVC Là một framework được được xây dựng bởi Microsoft, thực thi mô hình MVC (model–view–controller). ASP.NET MVC là 1 phần mềm mã nguồn mở, tách rời với thành phần độc quyền ASP.NET Web Forms, tối ưu ứng dụng, dễ dàng chỉnh sửa code xử lý hoặc giao diện người dùng. ASP.NET MVC đang nổi lên là phương pháp phát triển web mạnh và phổ biến nhất trên nền ASP.NET hiện nay.

Hình 2.2-14: Mô hình MVC trong phát triển ứng dụng.

Hình 2.2-15: Kiến trúc ASP.NET MVC

Những ưu điểm mà ASP.Net MVC mạng lại so với mô hình cũ:

 Do sử dụng mô hình MVC nên trong ASP.Net MVC đã tách biệt được các tầng trong mô hình lập trình web, giúp tối ưu ứng dụng và giản đơn trong việc viết code, bảo trì.

 Giao diện trong ASP.Net MVC sử dụng công nghệ thiết kế web HTML, CSS nên việc thiết kế giao diện trở nên linh hoạt và dễ dàng hơn.

 ASP.Net MVC không sử dụng thuộc tính view state như mô hình cũ vì vậy trang web không bị tăng kích thước, do đó mà hiệu năng hoạt động không bị giảm.

Sự kết hợp của .NET và MVC thành một nền tảng mới với các tính năng:

Kiểm tra hướng phát triển (TDD) : .NET MVC hỗ trợ mô hình Phát

triển ứng dụng nhanh. Cùng với đó, vì mô hình MVC cho phép các ứng dụng web được phát triển theo từng phần, việc kiểm tra trở nên dễ dàng hơn. Kiểm thử và phát triển ứng dụng được làm việc đồng bộ trong mọi giai đoạn phát triển. Bằng cách này, sản phẩm cuối cùng được phân phối nhanh chóng và với mức độ hài lòng cao.

Tích hợp dễ dàng với JavaScript : .NET MVC của Microsoft có khả

năng cung cấp bất kỳ mức độ tương tác nào với JavaScript.

Tính khả dụng của cộng đồng nguồn mở : Vì .NET MVC

framework là mã nguồn mở, có rất nhiều nhà phát triển web trên khắp thế giới chia sẻ ý tưởng và hỗ trợ cùng nhau, liên tục đưa ra các bản nâng cấp.

Tính linh hoạt cao với khả năng tương thích đa nền tảng : Khung

này tương thích với tất cả các nền tảng, cụ thể là hệ điều hành Windows, Linux và Mac. Vì vậy, việc phát triển ứng dụng .NET có thể được thực hiện trên nền tảng ưa thích của lập trình viên mà không phải lo lắng về việc thực thi môi trường ứng dụng. Khi ứng dụng được phát triển và chạy thành công trên một nền tảng cụ thể, nó chắc chắn sẽ hoạt động trơn tru trên các nền tảng còn lại.

CÔNG NGHỆ SIGNAL-R

HTTP hoạt động theo mô hình yêu cầu và phản hồi, trong đó yêu cầu cần được gửi đến máy chủ để nhận bất kỳ cập nhật nào từ đó. Điều này tạo ra những thách thức trong việc xử lý một vài tình huống, trong đó chúng ta cần dữ liệu thời gian thực: người dùng mở một trang web thì nó cần được cập nhật khi có thay đổi trên máy chủ, nhưng theo kiến trúc HTTP, phải có yêu cầu gửi đến từ máy khách để nhận được một bản cập nhật từ máy chủ. Điều này tạo ra trải nghiệm xấu cho người dùng vì vô tình không biết những thay đổi dữ liệu từ phía server để gởi yêu cầu lấy bản cập nhật mới.

Hình 2.2-16: HTTP request – respond mô hình yêu cầu và phản hồi

Để xử lý các kịch bản này, công nghệ AJAX đã giúp ích rất nhiều khi cho phép gửi yêu cầu (tương đối rất nhỏ) và cập nhật giao diện người dùng dựa trên phản hồi, tuy vậy, vẫn còn một số hạn chế bao gồm hành vi khác nhau của trình duyệt về các tính năng và hỗ trợ. Từ quan điểm hiệu suất, việc sử dụng tài nguyên băng thông mạng của máy chủ và các vấn đề khác, ta thấy rằng không thể gửi một cách mù quáng nhiều yêu cầu đến máy chủ.

Signal-R ra đời như là một thư viện cấp cao giúp cho việc phát triển các ứng dụng web thời gian thực. Có thể xây dựng ứng dụng web thời gian thực với các công nghệ khác như AJAX hay Forever Frame hoặc một số cách giải quyết khác, nhưng chúng khá phức tạp và logic khác nhau là cần thiết cho các tình huống khác nhau. Signal-R ẩn tất cả các phức tạp liên quan và hoạt động trơn tru trên tất cả các trình duyệt bao gồm các phiên bản khác nhau. Nó rất mạnh mẽ và cho phép giao tiếp hai chiều giữa máy khách và máy chủ. Máy chủ không bắt buộc phải chờ yêu cầu của khách hàng gửi phản hồi, thay vào đó, nó có thể đẩy phản hồi một cách hợp lý khi có dữ liệu mới.

Kết nối giữa client và server là liên tục, không giống như kết nối HTTP cổ điển, cái mà sẽ thành lập lại kết nối cho mỗi lần giao tiếp.

SignalR sử dụng nhiều công nghệ truyền tải và chọn một công nghệ phù hợp nhất cho kịch bản.

SignalR là một tầng trừu tượng trên một số truyền tải mà yêu cầu để làm công việc thời gian thực giữa client và server. Một kết nối SignalR bắt đầu như một HTTP, và tiếp theo được đẩy lên một kết nối WebSocket nếu nó là có sẵn.

WebSocket là một ý tưởng truyền tải cho SignalR, vì nó làm cho việc sử dụng bộ nhớ server hiệu quả nhất, có độ trễ thấp nhất, và có những tính năng cơ bản nhất (như giao tiếp hai chiều đầy đủ giữa client và server), nhưng nó cũng có những yêu cầu nghiêm ngặt nhất về chứng thực, bảo mật. Nếu những yêu cầu này không được đáp ứng, SignalR sẽ cố gắng để sử dụng những truyền tải khác để làm những kết nối của nó.

AJAX POLLING:

Polling là một kỹ thuật được sử dụng trong các ứng dụng AJAX, ý tưởng của nó là client sẽ gọi tới server một cách liên tục để yêu cầu dữ liệu mới (polls/requests data). Client sẽ tạo ra một request và đợi kết quả trả về từ Server, nếu Server không tìm thấy hoặc trả kết quả về là rỗng (empty), thì một empty response sẽ được gửi về.

1. Client tiến hành mở một connection và request dữ liệu từ Server thông qua cổng kết nối HTTP.

2. Những request trên sẽ được gửi đến Server theo định kỳ, ví dụ theo mỗi khoảng thời gian ngắn cố định sẽ có một yêu cầu được chuyển đi. 3. Server sẽ tính toán và trả dữ liệu về thông qua cổng kết nối HTTP. 4. Phía Client sẽ lặp lại các bước trên để có thể lấy được dữ liệu mới

nhất từ máy chủ.

HTTP LONG-POLLING

Đây là một biến thể của HTTP Polling truyền thống, cho phép Server chủ động đẩy thông tin tới Client khi có dữ liệu mới, bằng cách Client sẽ gửi request tới Server mà không cần Server phải trả dữ liệu về ngay tức thì mà sẽ làm theo logic như bên dưới:

Nếu Server không có dữ liệu mới, thay vì không trả về hay trả về dữ liệu rỗng, thì Server sẽ giữ request đó và đợi cho tới khi có dữ liệu mới về.

Khi dữ liệu đã sẵn sàng thì Server sẽ gửi trả (response) về cho Client. Ngay lúc đó Client lại tiếp tục gửi một request tới Server, vì thế ở phía Server sẽ luôn luôn có một request mà nó có thể sử dụng để luôn cập nhật dữ liệu về phía Client.

1. Client tạo một HTTP request về phía Server và chờ đợi tới khi có response trả về.

2. Server sẽ chờ cho tới khi có dữ liệu trả về hoặc quá thời gian time-out. 3. Khi có dữ liệu Server sẽ trả về cho Client (HTTP respone)

4. Client sau khi nhận được dữ liệu trả về hoặc quá time-out sẽ gửi tiếp một HTTP Long-Polling đến Server. Lúc này sẽ có một khoảng thời gian trễ giữa lúc client nhận và gửi request mới, nhưng thời gian trễ này tạm chấp nhận được.

5. Mỗi HTTP Long-Polling sẽ có một khoảng time-out, nếu quá thời time-out connection sẽ đóng lại và mở lại một connection mới.

WEB-SOCKET

Websocket là giao thức chuẩn cho trao đổi dữ liệu hai chiều giữa client và server hay gọi là kênh Full Duplex. Giao thức WebSocket thực hiện trên giao thức TCP chứ không chạy trên HTTP

Nó cung cấp một phương thức liên tục giữa Client và Server mà cả hai bên có thể gửi dữ liệu cho nhau bất kỳ lúc nào. Kết nối giữa Client với Server thông qua Websocket bằng một cú bắt tay (WebSocket handshake).

Người ta thường dùng Websocket thay vì HTTP cho những trường hợp yêu cầu thời gian thực bởi vì gói tin của WebSockets nhẹ hơn HTTP rất nhiều, giảm độ trễ của network và không cần phải gửi request liên tiếp như cách vận hành HTTP.

Điều này được hiện thực bằng cung cấp môt chuẩn hóa truyền tin giữa Server và client thông qua cổng iws:// hoặc wss:// có thêm bảo mật. Và dữ liệu truyền đi chấp nhận kiểu String và Binary Type ( large objects (blobs), ArrayBuffers).

SERVER-SENT EVENTS (SSES)

SSEs cũng gần giống với Long-Polling nhưng khác là connection sẽ được lưu trữ (persistent) sử dụng cho một thời gian dài (long-terms) mà không có time- out và chỉ có Server sẽ sử dụng connection này để gửi dữ liệu về cho Client, và client chỉ có request (GET) dữ liệu mà không được phép gửi dữ liệu (POST) lên Server.

Vòng đời của của SSEs

1. Client yêu cầu lữ liệu từ Server sử dụg kết nối HTTP thông thường. 2. Connection giữa client và server sẽ được mở và duy trì.

SSEs cũng giống WebSocket là thích hợp với các ứng dụng thời gian thực (real time) nhưng khác là SSEs chỉ là một chiều (Half duplex) giữa Server tới Client.

CHƯƠNG 3: THI CÔNG HỆ THỐNG

Một phần của tài liệu Xây dựng hệ thống đỗ xe ô tô thông minh với thiết bị cảm biến . (Trang 29 - 42)

Tải bản đầy đủ (DOC)

(61 trang)
w