LẬP TRÌNH KẾT NỐI THIẾT BỊ
Arduino ilà imột ibo imạch iđược idùng iđể ilập itrình itương itác ivới icác ithiết ibị
iphần icứng ikhác inhư icảm ibiến, iđộng icơ,... iThêm inữa, ivì iArduino ilà imột inền itảng iđược
ichuẩn ihóa, inên iđã icó irất inhiều ibo imạch imở irộng icó ithể icắm ichồng ilên imạch ichủ
iArduino inhư ilà ithư iviện icủa icác ingôn ingữ ilập itrình. i
Lập itrình icho iArduino idùng ingôn ingữ iC/C++, iso ivới ilập itrình ilập itrình itrực
itiếp ivới ivi iđiều ikhiển, ilập itrình ivới iArduino iđơn igiản ihơn inhiều ivì ichỉ iphải igiao itiếp ivới
iphần icứng ithông iqua icác ithư iviệ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 itrữ ivà ikhai ithác idữ
iliệu icho ingười idùng ichuyên inghiệp ivà icho idoanh inghiệp. i
Một ivài ihệ iquản itrị icơ isở idữ iliệu imã inguồn imở icũng iđã iphát itriển, inhưng
iMicrosoft iSQL iServer ivẫn idễ isử idụng ivà icó inhiều itính inăng ihơn. iNó icũng ihỗ itrợ iđầy
iđủ icác itrình ikích ihoạt. iSQL iServer iluôn icập inhật ivà ikhông ingừng itung ira inhững iphiên
ibản imới, ivì ivậy imà inó ivẫn ilà ihệ iquản itrị icơ isở idữ iliệu ihàng iđầu iđược ilựa ichọn itrong icác
idự ián ilớn ingày inay.
SQL iServer ihoạt iđộng itự inhiên ivới icác iứng idụng ichạy itrên inền itảng i.NET, ido
iđó, inó ilà isự ilựa ichọn itối iưu icho iphần imềm ichạy itrên imáy ichủ iWindows ihoặc imáy itính
iđể ibà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ỤNG WEB VỚI ASP.NET MVC
ASP.NET MVC iiilà iiimột iiimô iiihình iiiphát iiitriển iiiphần iiimềm iiimới, iiiđây iiiđược
iiixem iiilà iiisự iiilựa iiichọn iiitiếp iiitheo iiicho iiiviệc iiixây iiidựng iiicác iiiứng iiidụng iiiWeb iiidựa iiitrên
iiinền iiitảng iiiASP.NET. ii
MVC iiLà iimột iiframework iiđược iiđược iixây iidựng iibởi iiMicrosoft, iithực iithi iimô
iihình iiMVC ii(model–view–controller). iiASP.NET iiMVC iilà ii1 iiphần iimềm iimã iinguồn
iimở, iitách iirời iivới iithành iiphần iiđộc iiquyền iiASP.NET iiWeb iiForms, iitối iiưu iiứng iidụng, iidễ
iidàng iichỉnh iisửa iicode iixử iilý iihoặc iigiao iidiện iingười iidùng. iiASP.NET iiMVC iiđang iinổi
iilên iilà iiphương iipháp iiphát iitriển iiweb iimạnh iivà iiphổ iibiến iinhất iitrên iinền iiASP.NET iihiện
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
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 ws:// 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.
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