1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo chuyên đề học phần lập trình web nâng cao đề tài tìm hiểu nền tảng net core 6 0

84 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 84
Dung lượng 2,23 MB

Cấu trúc

  • CHƯƠNG 1: Tổng quan .NET và Webservers (8)
    • 1. Tổng quan .NET 6 (8)
      • 1.1. Hỗ trợ (10)
      • 1.2. Hiệu năng (11)
      • 1.3. C# 10 (11)
      • 1.4. Bảo mật (11)
      • 1.5. Arm64 (12)
    • 2. Tổng quan về NGINX/Kestrel/IIS/Apache (12)
      • 2.1. NGINX (12)
        • 2.1.1. NGINX là gì (12)
        • 2.1.2. Tính năng của NGINX (13)
        • 2.1.3. Cài đặt (13)
        • 2.1.4. Cấu hình NGINX (14)
      • 2.2. Apache (19)
        • 2.2.1. Apache là gì? (19)
        • 2.2.2. Apache và những web server khác (19)
          • 2.2.2.1. Apache vs NGINX (19)
          • 2.2.2.2. Apache vs Tomcat (20)
        • 2.2.3. Ưu điểm (20)
        • 2.2.4. Nhược điểm (21)
      • 2.3. Kestrel (21)
        • 2.3.1. Kestrel là gì? (21)
        • 2.3.2. Tại sao sử dụng Kestrel? (21)
        • 2.3.3. Sử dụng Kestrel (21)
          • 2.3.3.1. Tự host (Self Hosting) (22)
          • 2.3.3.2. Đằng sau Web Server khác (23)
      • 2.4. IIS (24)
        • 2.4.1. IIS là gì? (24)
        • 2.4.2. IIS có thể làm được gì? (25)
        • 2.4.3. IIS hoạt động như thế nào? (25)
        • 2.4.4. Các tính năng của IIS (26)
        • 2.4.5. So sánh IIS với các web server khác (26)
    • 3. Tổng quan về lập trình với ngôn ngữ Python (27)
      • 3.1. Ngôn ngữ Python (27)
        • 3.1.1. Python là gi? (27)
        • 3.1.2. Ứng dụng của Python (27)
        • 3.1.3. Lợi thế của Python (28)
      • 3.2. Các bước cài đặt môi trường lập trình Python (29)
  • CHƯƠNG 2: ASP.NET và ASP.NET Core (35)
    • 1. ASP.NET (35)
      • 1.1. ASP.NET là gì? (35)
      • 1.2. Chức năng của ASP.NET (35)
      • 1.3. Các thành phần của ASP.NET (35)
    • 2. ASP.NET Core (35)
      • 2.1. ASP.NET Core là gì? (35)
      • 2.2. Ứng dụng (35)
      • 2.3. Sự khác nhau giữa ASP.NET và ASP.NET Core (0)
        • 2.3.1. Cấu trúc project (37)
        • 2.3.2. Cấu trúc một solution (38)
        • 2.3.3. Tập tin dự án csproj (39)
        • 2.3.4. Tập tin Program.cs (40)
        • 2.3.5. Tập tin Startup.cs (40)
    • 3. Demo Project (42)
  • CHƯƠNG 3: Hệ quản trị cơ sở dữ liệu PostgreSQL (45)
    • 1. Tìm hiểu tổng quan Hệ quản trị cơ sở dữ liệu PostgreSQL (45)
      • 1.1. Đặc điểm của PostgreSQL (45)
      • 1.2. Tính năng (45)
      • 1.3. Ưu điểm và hạn chế (47)
    • 2. Kết nối ASP.NET Core với PostgreSQL có nhiều tác dụng quan trọng trong việc phát triển ứng dụng web (48)
      • 2.1. Đặc điểm (48)
      • 2.2. Ưu và nhược điểm (48)
        • 2.2.1. Ưu điểm (48)
        • 2.2.2. Nhược điểm (49)
    • 3. Tổng quan kết nối ASP.NET Core MVC, với Hệ quản trị cơ sở dữ liệu PostegreSQL (49)
  • CHƯƠNG 4: AJAX (56)
    • 1. AJAX là gì? (56)
    • 2. Sử dụng AJAX trong Javascript (56)
      • 2.1. Khởi tạo đối tượng (56)
      • 2.2. Các thuộc tính và phương thức (57)
        • 2.2.1. Thuộc tính (57)
        • 2.2.2. Phương thức (57)
        • 2.2.3. AJAX hoạt động như thế nào? (58)
    • 3. POST & GET Request trong AJAX (58)
      • 3.1. GET Request (59)
      • 3.2. POST Request (59)
      • 3.3. Ưu và Nhược điểm của việc sử dụng AJAX (59)
        • 3.3.1. Ưu điểm (59)
        • 3.3.2. Nhược điểm (60)
    • 4. Demo Ajax (60)
  • CHƯƠNG 5: NoSQL, MongoDB, Cassandra (61)
    • 1. NoSQL (61)
      • 1.1. Cơ sở dữ liệu NoSQL là gì? (61)
      • 1.2. Tại sao lại cần phải có NoSQL (62)
      • 1.3. Một số đặc điểm (62)
      • 1.4. Lý do nên sử dụng NoSQL (63)
    • 2. Cassandra (63)
      • 2.1. Cassandra là gì? (63)
      • 2.2. Internet of things (63)
      • 2.3. Cơ chế dữ liệu (64)
    • 3. Mongo DB (65)
      • 3.1. Mongo DB là gì (66)
      • 3.2. Ưu điểm của mongoDB (67)
      • 3.3. Nhược điểm của mongoDB (67)
    • 4. Demo: Thiết lập kết nối với Cassandra (68)
  • CHƯƠNG 6: Tổng quan Webservice (72)
    • 1. Tổng quan về WebService (72)
      • 1.1. WebService làC gì (72)
      • 1.2. Các loại Web Service hiện nay (72)
      • 1.3. Web Service hoạt động thế nào? (72)
      • 1.4. Lợi ích khi sử dụng (73)
      • 1.5. Ưu điểm và nhược điểm (73)
        • 1.5.1. Ưu điểm (73)
        • 1.5.2. Nhược điểm (73)
    • 2. Kiến trúc WebService (74)
      • 2.1. Vai trò của Web Service (74)
      • 2.2. Các công nghệ sử dụng trong Web Service (74)
      • 2.3. WSDL (Ngôn ngữ mô tả Web Service) (74)
    • 3. Tổng quan về RESTful Web Service (75)
      • 3.1. Restful Web Service là gì? (75)
      • 3.2. Đặc điểm (75)
      • 3.3. Những yếu tố chính của RESTful Web Service (75)
      • 3.4. So sánh REST với SOAP (76)
  • CHƯƠNG 7: TỔNG QUAN RAZOR PAGE (77)
    • 1. Tổng quan Single Page Application (77)
      • 1.1. Khái niệm (77)
      • 1.2. Single Page Application hoạt động ra sao? (77)
      • 1.3. Một vài hạn chế của Single Page Application (77)
    • 2. Tổng quan Razor Page (78)
      • 2.1. Thành phần Razor Page (78)
      • 2.2. Phương pháp tạo một Razor Page (78)
    • 3. Dependency Injection (79)
      • 3.1. Khái niệm (79)
      • 3.2. Các loại Dependency Injection (81)
      • 3.3. Các Ưu điểm và Nhược điểm (81)
  • KẾT LUẬN (84)

Nội dung

Tổng quan NET và Webservers

Tổng quan NET 6

Vào tháng 11/2021, MS đã ra măt bản NET 6 đánh dấu một bước phát triển rất ngoạn mục cho nền tảng này Cụ thể là lần đầu tiên có một bản cập nhật lớn LTS (Long Term Support) tức là hỗ trợ lâu dài (trong ít nhất 3 năm) hợp nhất giữa NET Core và NET Framework Trước đây có NET 5 đã là phiên bản tiền đề để hợp nhất 2 nền tảng NET của Microsoft nhưng chưa phải là LTS mà đến 6.0 mới là LTS Điều này có nghĩa là các ứng dụng doanh nghiệp có thể tự tin nâng cấp lên 6.0 từ NET Core 3.1, NET 5 hay NET Framework 4.8 mà không lo về độ ổn định cũng như thời gian cam kết của Microsoft.

Bản cập nhật này thực sự có những tính năng mà cộng đồng mong chờ, nổi bật nhất là cơ chế Hot Reload cho ứng dụng NET Ngoài ra chúng ta cũng có phiên bản mới nhất của C# là C# 10 và F# 6 Song song với đó thì Microsoft cũng luôn cải tiến hiệu năng của nền tảng NET qua từng lần ra mắt.

Chúng ta có thể điểm qua các thay đổi và các tính năng mới như:

Tương tự như các bản release trước, nền tảng NET 6 cũng hỗ trợ cr Linux, macOS và Windows Ngoài ra còn có Visual Studio 2022 là một môi trường phát triển tích hợp (IDE) cho nền tảng NET 6 Những ai dùng Visual Studio Code thì vẫn yên tâm là luôn xài được với mọi phiên bản Riêng có Visual Studio thì phải nâng cấp lên Visual Studio bản 2022 để có thể phát triển được NET 6 Riêng với Visual Studio for Mac thì vẫn có thể dùng Visual Studio 2019.

Các tính năng mới trong NET 6 như sau:

 Hỗ trợ Production stress-tested dành cho ứng dụng Microsoft services, ứng dụng cloud chạy bởi các công ty khác, và đã mở mã nguồn.

 Hỗ trợ trong 3 năm hay gọi là LTS.

 Nền tảng thống nhất hỗ trợ nhiều loại trình duyệt, cloud, desktop, IoT, và mobile apps, tất cả sử dụng chung code base có thể share code dễ dàng.

 Hiệu năng được cải thiện rất nhiều và cho tác tác vụ I/O cụ thể, bằng cách giảm thời gian thực thi, độ trễ và bộ nhớ sử dụng.

 C# 10 cải tiến ngôn ngữ bằng các tính năng như record structs, implicit using, và new lambda capabilities, trong khi trình biên dịch tăng khả năng gen code.

 Hot Reload cho phép bạn tránh được việc build và khởi động lại ứng dụng khi có thay đổi mới trong lúc ứng dụng vẫn đang chạy, hỗ trợ trên Visual Studio 2022 và từ NET CLI cho C# lẫn Visual Basic.

 Cloud diagnostics được cải tiến với OpenTelemetry và dotnet monitor, hỗ trợ cho tìm lỗi trên môi trường Production trên Azure App Service.

 JSON APIs được tăng khả năng và có hiệu năng cao hơn với source generator cho bộ xử lý JSON.

 Minimal APIs được giới thiệu trong NET Core giúp đơn giản và dễ dàng bắt đầu cũng như cải tiến hiệu năng của HTTP services.

 Blazor có thể được render từ JavaScript và tích hợp với ứng dụng Javascript base.

 WebAssembly AOT biên dịch cho ứng dụng Blazor WebAssembly

(Wasm), as well as support for runtime relinking and native dependencies.

 Single-page apps được giới thiệu với ASP.NET Core giờ đây sử dụng một pattern linh hoạt giúp bạn có thể sử dụng Angular, React hoặc các framework frontend Javascript khác.

 HTTP/3 được thêm vào ASP.NET Core, HttpClient, và gRPC có thể tương tác với HTTP/3 giữa client và server.

 Cơ chế đọc ghi file (File IO) đã hỗ trợ liên kết tượng trưng và cải tiến mạnh mẽ về hiệu năng với việc viết lại từ đầu FileStream class.

 Bảo mật được cải tiến bằng việc hỗ trợ OpenSSL 3, phương thức mã hoá

ChaCha20Poly1305, và các biện pháp ngăn chặn chiều sâu, đặc biệt là W^X và CET.

 Single-file apps (extraction-free) được ra mắt trên Linux, macOS và

Windows (trước đây chỉ có trên Linux).

 IL trimming hiệu quả hơn với cảnh báo mới, bộ phân tích để đảm bảo kết quả đúng cuối cùng.

 Source generators và analyzers được thêm vào giúp bạn tái hiện bug tốt hơn, an toàn hơn và tối ưu hiệu năng hơn.

 Source build cho phép tổ chức như Red Had xây dựng NET từ mã nguồn mở và tự xây dựng cho người dùng của mình.

 Bản NET 6 là một bản hỗ trợ lâu dài (LTS) được phát hành và được hỗ trợ trong 3 năm Nó hỗ trợ nhiều hệ điều hành bao gồm cả macOS Apple Silicon và Windows Arm64

 Red Hand hỗ trợ NET trên Red Hat Enterprise Linux và đã làm việc với team.

 NET 6 được hỗ trợ với Visual Studio 2022 và Visual Studio 2022 for Mac.

Nó không hỗ trợ Visual Studio 2019, Visual Studio for Mac 8 hoặc MSBuild

16 Nếu bạn muốn dùng NET 6 thì phải upgrade lên Visual Studio 2022. Nếu dùng Visual Studio Code thì có thể phát triển sử dụng C# Extension

 Có thể bắt đầu migrate ứng dụng của mình lên NET 6 từ NET 5 Nó cũng tương thích tốt khi upgrade từ NET 3.1 và NET 5.

 Nền tảng thống nhất và mở rộng

 Có thể dùng 1 nền tảng mà có thể phát triển nhiều loại ứng dụng từ Desktop, Web, IoT, WebAssembly, Cloud và có thể chia sẻ được code base dễ dàng. Một điều thú vị nữa là NET Multi-platform App UI (.NET MAUI) tức là chính ta có thể viết code với 1 project nhưng có thể tạo ra một ứng dụng chạy trên cả Desktop lẫn Mobile .NET MAUI được đính kèm trong NET 6.

 Có thể phát triển cả Windows Desktop với Windows Forms và WPF cũng như trên cloud với ASP.NET Core.

Các nội dung chủ đạo trong việc tăng hiệu năng như:

 Dynamic PGO: viết tắt của Dynamic Profile-guided Optimization

(PGO) cho phép biên dịch nhanh, tăng hiệu năng khởi động và tăng khả năng phục vụ nhiều hơn số request (dự tính 26%) số request trên giây.

 Cải tiến xử lý JSON

 Cải tiến hiệu năng nhập xuất File, ví dụ với NET 5 và NET 6 ghi ghi 1 file 100MB cho ra 2 kết quả rất tốt.

C# 10 có rất nhiều tính năng mới như:

 Global using directive: sử dụng global using sẽ không phải using mọi nơi như System namespace chẳng hạn.

 File scoped namespace: không cần phải lồng class trong namespace

Tính năng hot reload là một tính năng được mong đợi nhất hỗ trợ cho nhà phát triển có thể tăng hiệu quả làm việc Cho phép edit code ngay khi ứng dụng đang chạy, giảm thời gian chờ rebuild, khởi động lại và điều hướng đến đúng điểm bạn có thay đổi Hot Reload có sẵn trong dotnet watch CLI và Visual Studio 2022. Bạn có thể sử dụng Hot Reload với các loại ứng dụng khác nhau từ ASP.NET Core, Blazor, NET MAUI, Console, Windows Forms, WPF, WinUI 3, Azure Functions

Bảo mật được cải tiến đáng kể trong NET 6 từ việc mô hình, mã hoá và ngăn chặn xâm nhập Trên Linux chúng ta có OpenSSL, trên macOS và Windows chúng ta có chức năng tương tự từ hệ điều hành Với mỗi phiên bản NET chúng ta thường cần thêm OpenSSL và NET 6 hỗ trợ OpenSSL 3.

Trên NET Core 3.0 đã hỗ trợ Arm 32 nhưng với NET 6 đã hỗ trợ Arm 64 giúp NET 6 tương thích nhiều loại thiết bị hơn.

Tổng quan về NGINX/Kestrel/IIS/Apache

NGINX là một web server mạnh mẽ mã nguồn mở Nginx sử dụng kiến trúc đơn luồng, hướng sự kiện vì thế nó hiệu quả hơn Apache server Nó cũng có thể làm những thứ quan trọng khác, chẳng hạn như load balancing, HTTP caching, hay sử dụng như một reverse proxy Nginx là kiến thức không thể thiếu đối với một web developer, system administrator hay devops.

Các mốc ra đời và phát triển của Nginx

Năm 2002, Igor Sysoev phát triển Nginx ban đầu và công bố lần đầu vào năm 2004 Tháng 7 năm 2011, công ty Nginx Inc được thành lập với trụ sở đầu tiên tại San Francisco, California, USA.

Những tính năng của NGINX

 Có khả năng xử lý hơn 10.000 kết nối cùng lúc với bộ nhớ thấp.

 Phục vụ tập tin tĩnh (static files) và lập chỉ mục tập tin.

 Tăng tốc reverse proxy bằng bộ nhớ đệm (cache), cân bằng tải đơn giản và khả năng chịu lỗi.

 Hỗ trợ tăng tốc với bộ nhớ đệm của FastCGI, uwsgi, SCGI, và các máy chủ memcached.

 Kiến trúc modular, tăng tốc độ nạp trang bằng nén gzip tự động.

 Hỗ trợ mã hoá SSL và TLS.

 Cấu hình linh hoạt; lưu lại nhật ký truy vấn

 Chuyển hướng lỗi 3XX-5XX

 Rewrite URL (URL rewriting) dùng regular expressions

 Hạn chế tỷ lệ đáp ứng truy vấn

 Giới hạn số kết nối đồng thời hoặc truy vấn từ 1 địa chỉ

 Khả năng nhúng mã PERL

 Hỗ trợ và tương thích với IPv6

 Hỗ trợ truyền tải file FLV và MP4

 Những tính năng máy chủ mail proxy của Nginx

 Các phương pháp xác thực :

 POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;

 IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;

 SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;

 Hỗ trợ SSL, STARTTLS và STLS

Có 2 cách để cài đặt NGINX, có thể sử dụng gói (package) dựng sẵn hoặc cài đặt từ source.

Phương thức đầu tiên dễ và nhanh hơn, nhưng cài đặt từ source cung cấp khả năng cài đặt thêm các module khác giúp NGINX mạnh mẽ hơn Nó cho phép chúng ta tùy chỉnh cho phù hợp với nhu cầu của ứng dụng.

- Để cài đặt một gói Debian dựng sẵn, thứ duy nhất cần làm là: sudo apt-get update sudo apt-get install nginx

- Sau khi quá trình cài đặt kết thúc, bạn có thể kiểm tra mọi thứ là ỔN bằng cách chạy lệnh dưới đây, nó sẽ hiển thị phiên bản NGINX được cài đặt: sudo nginx -v nginx version: nginx/1.18.2

- Webserver mới sẽ được cài đặt tại /etc/nginx/ Nếu bạn vào trong thư mục này, bạn sẽ thấy nhiều tệp tin và thư mục Nhưng thứ quan trọng nhất cần chú ý là tệp tin nginx.conf và thư mục sites-available.

Những thiết lập quan trọng nhất ở trong tập tin nginx.conf, mặc định nó sẽ như thế này: user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768;

} http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048;

# server_names_hash_bucket_size 64;

# server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6";

# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;

Tệp tin được cấu trúc thành các ngữ cảnh Đầu tiên là events, và thứ 2 là http Cấu trúc này có một vài lợi thế trong việc cấu hình, như mỗi ngữ cảnh có thể lồng trong ngữ cảnh khác, cái kế thừa mọi thứ từ cha mẹ của chúng nhưng cũng có thể ghi đè thiết lập nếu cần.

Nhiều thứ trong tệp tin này có thể tinh chỉnh dựa theo nhu cầu của bạn, nhưng bạn cũng có thể sử dụng các thiết lập mặc định Một số phần quan trọng của tệp tin cấu hình này là:

- worker_processes: Thiết lập này định nghĩa số worker processes mà NGINX sẽ sử dụng Bởi vì NGINX là đơn luồng (single threaded), nó thường bằng với số lõi CPU.

- worker_connection: Đây là số lượng tối đa của các kết nối đồng thời cho mỗi worker process và nói cho các worker process của chúng ta có bao nhiêu người có thể được phục vụ đồng thời bởi NGINX.

- access_log & error_log: Đây là những tệp tin mà NGINX sẽ sử dụng để log bất kỳ lỗi và số lần truy cập Các bản ghi này thường được sử dụng để gỡ lỗi hoặc sửa chữa.

- gzip: Đây là các thiết lập nén GZIP của các NGINX reponse Tính năng này có nhiều thiết lập phụ, phần bị comment bởi mặc định có thể giúp hiệu suất được cải thiện đáng kể Trong các thiết lập phụ của GZIP, cần quan tâm tới gzip_comp_level, nó là mức nén và nằm trong khoảng từ 1 tới 10 Thông thường, giá trị này không nên lớn hơn 6 — trên mức này lợi ích từ việc nén là không đáng kể, vì nó cần sử dụng nhiều CPU hơn gzip_types là một danh sách các kiểu response sẽ được nén.

NGINX có thể hỗ trợ nhiều hơn một website, và các tệp tin định nghĩa các trang web của bạn ở trong thư mục /etc/nginx/sites-available.

Tuy nhiên, các tệp tin trong thư mục này không “live” — bạn có thể có nhiều tệp tin định nghĩa các trang web ở đây, nhưng NGINX không thực sự làm bất cứ điều gì với chúng trừ khi chúng được symlink (liên kết tượng trưng) tới thư mục /etc/nginx/sites-enabled (bạn cũng có thể copy chúng tới thư mục này, nhưng symlink đảm bảo rằng chỉ có duy nhất một bản copy của mỗi tệp tin được theo dõi).

Nó cung cấp cho bạn một phương thức để nhanh chóng đưa các trang web online hoặc offilne mà không cần phải thực sự xóa bất kỳ tệp tin nào — khi bạn sẵn sàng cho một trang web online, tạo symlink tới sites-enabled và khởi động lại NGINX.

Tổng quan về lập trình với ngôn ngữ Python

Python là ngôn ngữ lập trình máy tính bậc cao thường được sử dụng để xây dựng trang web và phần mềm, tự động hóa các tác vụ và tiến hành phân tích dữ liệu Python là ngôn ngữ có mục đích chung, nghĩa là nó có thể được sử dụng để tạo nhiều chương trình khác nhau và không chuyên biệt cho bất kỳ vấn đề cụ thể nào

Tính linh hoạt này, cùng với sự thân thiện với người mới bắt đầu, đã khiến nó trở thành một trong những ngôn ngữ lập trình được sử dụng nhiều nhất hiện nay Một cuộc khảo sát được thực hiện bởi công ty phân tích ngành RedMonk cho thấy rằng đây là ngôn ngữ lập trình phổ biến thứ hai đối với các nhà phát triển vào năm 2021.

Python thường được sử dụng để phát triển back-end của trang web hoặc ứng dụng những phần mà người dùng không nhìn thấy Vai trò của Python trong phát triển web có thể bao gồm gửi dữ liệu đến và đi từ máy chủ, xử lý dữ liệu và giao tiếp với cơ sở dữ liệu, định tuyến URL và đảm bảo tính bảo mật Python cung cấp một số khuôn khổ để phát triển web Những cái thường được sử dụng bao gồm Django và Flask.

Một số công việc phát triển web sử dụng Python bao gồm kỹ sư phụ trợ, nhà phát triển Python, kỹ sư phần mềm và kỹ sư DevOps.

- Tự động hoá và phát triển phần mềm

Nếu bạn thấy mình thực hiện một nhiệm vụ lặp đi lặp lại, bạn có thể làm việc hiệu quả hơn bằng cách tự động hóa nó bằng Python Quá trình viết code được sử dụng để xây dựng các quy trình tự động này được gọi là viết script Trong thế giới mã hóa, tự động hóa có thể được sử dụng để kiểm tra lỗi trên nhiều tệp, chuyển đổi tệp, thực hiện phép toán đơn giản và loại bỏ các bản sao trong dữ liệu.

Python thậm chí có thể được sử dụng bởi những người mới bắt đầu để tự động hóa các tác vụ đơn giản trên máy tính—chẳng hạn như đổi tên tệp, tìm và tải xuống nội dung trực tuyến hoặc gửi email hoặc văn bản theo khoảng thời gian mong muốn Trong phát triển phần mềm, Python có thể hỗ trợ các tác vụ như kiểm soát bản dựng, theo dõi lỗi và thử nghiệm Với Python, các nhà phát triển phần mềm có thể tự động kiểm tra các sản phẩm hoặc tính năng mới Một số công cụ Python được sử dụng để kiểm thử phần mềm bao gồm Green và Requestium.

Python là một ngôn ngữ dễ đọc và đơn giản để hiểu cho các nhà phát triển chưa bao giờ viết code Do đó, cộng đồng người dùng Python không ngừng phát triển và lớn mạnh Có rất nhiều học giả và giáo sư trong cộng đồng người dùng Python Vì vậy, khi xảy ra sự cố, nhà phát triển có thể tập trung vào vấn đề đó và nhận trợ giúp từ những người khác trong cộng đồng mà không phải lo lắng về sự phức tạp của ngôn ngữ.

Python là một ngôn ngữ lập trình miễn phí và mở Giấy phép nguồn mở được OSI phê chuẩn mà Python được phát triển theo đó làm cho Python trở thành ngôn ngữ tự do sử dụng và phân phối, kể cả cho mục đích thương mại Nó sẽ làm giảm chi phí của bạn để bảo trì Trong khi các nhà phát triển có thể chia sẻ, sao chép và thay đổi nó Đối với cộng đồng Python, đây là cơ hội để chia sẻ kiến thức với các chuyên gia cấp dưới.

Các lập trình viên nói rằng Python rất dễ sử dụng Mặc dù khi xây dựng các ứng dụng hoặc trò chơi dành cho thiết bị di động, C++ hoặc bất kỳ ngôn ngữ kịch bản điển hình nào khác có thể dễ sử dụng hơn, nhưng Python sẽ tốt hơn để vì nó dễ dàng xây dựng các ứng dụng phía máy chủ, tự động hóa hệ thống xây dựng và thu thập dữ liệu thử nghiệm.

Python có nhiều lựa chọn thư viện và framework, đây là một trong những lợi thế lớn nhất của Python Từ NumPy đến TensorFlow, thư viện Python được sử dụng cho mọi thứ từ trực quan hóa dữ liệu, học máy, khoa học dữ liệu, xử lý ngôn ngữ tự nhiên và phân tích dữ liệu phức tạp

Nó sở hữu một thư viện lớn với khả năng quản lý bộ nhớ và thiết kế trống giúp tăng năng suất của nhà phát triển Python Nhờ đó, các nhà phát triển có thể quản lý cơ sở dữ liệu, tài liệu, trình duyệt web; thực hiện kiểm tra đơn vị và nhiều chức năng khác Ngoài ra, Python có thể được sử dụng để phát triển nhiều tác vụ, chẳng hạn như phát triển ứng dụng web và máy tính để bàn, phát triển các hệ thống tính toán phức tạp, hệ thống quản lý hỗ trợ cuộc sống, Internert of Thing (IoT), trò chơi, v.v.

3.2 Các bước cài đặt môi trường lập trình Python

Bước 1: Truy cập vào trang chủ của Python https://www.python.org/

Bước 2: Chọn phiên bản ở mục Downloads và nhập chọn Python 3.10.0 để download

Bước 3: Sau download hoàn tất Chúng ta nhấn chọn chạy file python-3.6.1.exe để bắt đầu tiến trình cài đặt.

Bước 4: Tick vào ô Add Python 3.6 to PATH và chọn Install Now

Chờ đợi cho quá trình cài đặt hoàn thành

Bước 5: Khi cửa sổ hiển thị Setup was successful là ta đã cài đặt thành công môi trường Python > Close

Chờ đợi cho quá trình cài đặt hoàn thành

Bước 6: Tiếp đến, ta mở Command Prompt (CMD) để kiểm tra.

 Để mở Command Prompt bạn dùng tổ hợp phím Windows + R để mở hộp thoại Run

 Sau đó, gõ cmd > Enter để mở Command Prompt

 Cửa sổ Command Prompt hiển thị như bên dưới:

Bước 7: Trong cửa sổ Command Prompt, bạn gõ python > Enter để kiểm tra

 Nếu bạn hiển thị ra được shell để tương tác với Python như hình ở dưới có nghĩa là phần cài đặt đã hoàn tất.

ASP.NET và ASP.NET Core

ASP.NET

ASP.NET là một nền tảng web được sử dụng để tạo các trang web, ứng dụng, và dịch vụ web.Là Sản phẩm được tích hợp của các ngôn ngữ HTML,CSS,và Javascript.

1.2 Chức năng của ASP.NET

Web Forms:ASP.NET cung cấp tương tác hướng sự kiện cho các ứng dụng web, nó được sử dụng để phát triển ứng dụng có quyền truy cập dữ liệu.

ASP.NET MVC: cung cấp các Model View Controller để xây dựng trang web động.Những mẫu này được sử dụng cho dữ liệu (Model), giao diện người dùng (View) và logic ứng dụng (Controller).

ASP.NET web Pages: dùng để tạo ra các trang web động kết hợp máy chủ với HTML một cách nhanh chóng.

1.3 Các thành phần của ASP.NET

Ngôn ngữ:ASP.NET sử dụng nhiều ngôn ngữ lập trình khác nhau như VB.NET và C#.

Thư viện:ASP.NET có bộ thư viện chuẩn bao gồm các giao diện,các lớp và kiểu giá trị.

Thời gian chạy ngôn ngữ chung (CLR): Được sử dụng để thực hiện cac shoajt động mã cũng như xử lý các ngoại lệ và thu gom rác.

ASP.NET Core

2.1 ASP.NET Core là gì?

ASP.NET Core là một phiên bản mới của ASP.NET, được phát hành bởi Microsoft và là một mã nguồn mở trên GitHub Ban đầu, phiên bản này có tên là ASP.NET 5 nhưng sau đó được đổi tên thành ASP.NET Core.

Xây dựng web UI và web API với ASP.NET Core MVC

 Người dùng có thể tạo ra những ứng dụng web có thể thực hiện testing theo mô hình MVC.

 Xây dựng HTTP services hỗ trợ nhiều định dạng và đầy đủ những hỗ trợ cho nội dung của dữ liệu trả về.

 Razor cung cấp ngôn ngữ tạo Views hiệu quả.

 Tag Helper cho phép code server side tham gia vào quá trình tạo và render phần tử HTML.

 Model Binding có thể tự động ánh xạ dữ liệu từ HTTP request tới những tham số của method action.

 Model validation thực hiện validate client và server một cách tự động.

 ASP.NET Core được thiết kế tích hợp với nhiều client side frameworks một cách liên tục bao gồm AngularJS, Bootstrap và KnockoutJS.

 Là khung mẫu và gọn gàng hơn kiến trúc nhiều tầng.

 Là một khung công tác với mã nguồn mở.

 Dễ dàng tạo ứng dụng ASP.NET đa nền tảng trên Windows, Mac và Linux.

 Cấu hình là môi trường sẵn sàng cho đám mây.

 Khả năng lưu trữ trên: IIS, HTTP.sys, Kestrel, Nginx, Apache và Docker.

2.3 Sự khác nhau giữa ASP.NET và ASP.NET Core.

ASP.NET ASP.NET CORE

Chỉ hỗ trợ Windows Chạy đa nền tảng

Windows,Linux,Mac OS Hiệu năng chạy framework cao Có hiệu năng chạy cao hơn

WCF,WPF,VB,Web Config, và các files khác

Chỉ chạy được trên NET

Không hỗ trợ các files Global.asax và Web config, nhưng lại hỗ trợ appsettings.json

Chạy được trên hai nền NET Framework và Core Framework.

Sử dụng ngôn ngữ C#, VB, WCF,

Chỉ hỗ trợ ngôn ngữ C#, F# và VB trong thời gian ngắn, không hỗ trợ WCF, WPF và WF Tuy nhiên, Asp.Net Core lại có thể hỗ trợ cho các thư viện WCP có sẵn.

Hỗ trợ vùng chứa không được đánh giá quá cao.

Hỗ trợ vùng chứa phù hợp cho các triển khai như Docker.

Hỗ trợ mọi phiên bản Chỉ có các phiên bản Visual Code từ 2015 trở lên mới được hỗ trợ Người dùng cần biên dịch lại sau khi thay đổi mã.

Khi làm mới Core Browser sẽ tự động biên dịch và thực thi mã mà không cần phải dịch lại.

- Từ cửa sổ Solution Explorer, chúng ta có thể lướt qua cấu trúc tổng thể của một dự án ASP.NET Core MVC với một số thành phần sau:

Vị trí cao nhất trong cửa sổ Solution Explorer là thư mục gốc của dự án được lồng trong một thư mục solution Visual Studio dùng khái niệm solution để làm việc với nhiều dự án, trong trường hợp này chỉ có một dự án.

Tại thư mục này chúng ta sẽ tìm thấy một tập tin solution (có phần mở rộng sln).

Kế tiếp thư mục gốc dự án là tập tin quan trọng nhất của dự án, tập tin MVCBooks.csproj.

Vì chúng ta đang dùng mô hình MVC nên chú ý tiếp theo của chúng ta sẽ là các thư mục Controllers, Models và Views chứa các tập tin dùng để xây dựng dự án.

Thư mục Properties chứa tập tin launchSettings.json kiểm soát cách Visual Studio sẽ chạy và debug ứng dụng.

Thư mục wwwroot là thư mục đặc biệt cho phép các trình duyệt web có thể truy cập trực tiếp đến nội dung bên trong nó như các tập tin CSS, JS, hình ảnh hay các tập tin HTML Các trình duyệt sẽ không thể truy cập được các tập tin này nếu chúng ở bên thư mục wwwroot.

Properties và wwwroot được xem như là hai thư mục đặc biệt, được đặt phía trên cửa sổ Solution Explorer, gần mục dự án và không tuân theo thứ tự các chữ cái Phía trên hai thư mục này có hai mục đặc biệt hơn gọi là Dependencies và Connected Servives chứa các thành phần phụ thuộc đến dự án như các gói NuGet, các dịch vụ từ xa, các thành phần hướng client.

Tập tin appsettings.json cung cấp thông tin cấu hình ứng dụng tại thời điểm thực thi hay thời điểm biên dịch.

Cuối cùng là hai tập tin Program.cs và Startup.cs kiểm soát cấu hình và quá trình khởi động của ứng dụng tại thời điểm thực thi Chúng ta sẽ tìm hiểu kĩ hơn nội dung hai tập tin này.

2.3.3 Tập tin dự án csproj

Là tập tin quan trọng nhất của ứng dụng NET nhưng trong ASP.NET Core, nội dung tập tin này được lược giản để dễ đọc, dễ chỉnh sửa hơn Ví dụ nội dung MVCBooks.csproj :

Thuộc tính Sdk của phần tử Project xác định kiểu dự án đang xây dựng (trong trường hợp này là Web) Phần tử TargetFramework xác định framework ứng dụng đang chạy, trong trường hợp này là NET Core 3.1

Tương tự các ứng dụng Console, dự án ASP.NET Core cũng chứa lớp Program với hàm Main nhưng mục đích của hàm này là dùng để xây dựng và thực thi một đối tượng IWebHost IWebHost là cốt lõi ứng dụng ASP.NET Core chứa cấu hình ứng dụng và Kestrel server để lắng nghe các yêu cầu và hồi đáp đến người dùng Nó dùng một WebHostBuilder, được tạo bằng lời gọi CreateDefaultBuilder để định nghĩa cách IWebHost được cấu hình trước khi một đối tượng IWebHost được tạo bằng lời gọi Build() Nội dung lớp Program từ MVCBooks:

{ public static void Main(string[] args)

} public static IHostBuilder CreateHostBuilder(string[] args) =>

Tập tin này chứa lớp Startup chứa thông tin cấu hình ứng dụng dựa trên hai khía cạnh:

 Tất cả các lớp được dùng trong ứng dụng phải được đăng ký để chúng có thể được sử dụng một cách chính xác tại thời gian thực thi.

 Cách thức ứng dụng xử lý và hồi đáp các yêu cầu từ người dùng.

// This method gets called by the runtime Use this method to

// add services to the container. public void ConfigureServices(IServiceCollection services)

// This method gets called by the runtime Use this method to

// configure the HTTP request pipeline. public void Configure(IApplicationBuilder app,

// The default HSTS value is 30 days You may want to

// change this for production scenarios, see

// https://aka.ms/aspnetcore-hsts. app.UseHsts();

} app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints =>

{ endpoints.MapControllerRoute( name: "default", pattern: "

{controller=Home}/{action=Index}/{id?}");

Demo Project

Tạo một project ASP.NET Core cơ bản, xuất ra màn hình trang web thông tin về nhóm: tên và MSSV của các thành viên trong nhóm

Các bước thực hiện tạo Project ASP.NET CoreBước 1 : Tìm ASP.NET Core app

Bước 2: Nhập tên Project muốn tạo rồi nhấn Next

Bước 3: Truy cập vào View/Solution tìm tệp Page rồi tìm file index.cshtml để chỉnh sửa

Bước 4 : Nhấn tổ hợp phím Ctrl+F5 để chạy chương trình lên local host

Hệ quản trị cơ sở dữ liệu PostgreSQL

Tìm hiểu tổng quan Hệ quản trị cơ sở dữ liệu PostgreSQL

PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ và đối tượng (object-relational database management system) miễn phí và nguồn mở (RDBMS) tiên tiến nhất hiện nay, khả năng mở rộng và tuân thủ các tiêu chuẩn kỹ thuật Nó được thiết kế để xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ web có nhiều người dùng đồng thời.

Linh động có thể chạy được trên nhiều nền tảng khác nhau như MacOS X, Solaris và Windows

Là một phần mềm mã nguồn mở miễn phí nên PostgreSQL có thể được dùng, sửa đổi và phổ biến bởi bất kỳ ai cho bất kỳ mục đích nào.

PostgreSQL có tính ổn định cao.

PostgreSQL là hệ thống quản lý cơ sở dữ liệu đầu tiên triển khai tính năng kiểm soát đồng thời nhiều phiên bản (MVCC).

PostgreSQL tích hợp nhiều tính năng tuyệt vời giúp hỗ trợ nhà phát triển xây dựng app đáp ứng các chức năng phức tạp, truy vấn nhanh chóng và bảo mật duy trì tính toàn vẹn và độ tin cậy Để đáng tin cậy hơn, Postgresql cung cấp các tùy chọn bảo mật, xác thực và khôi phục thảm họa khác nhau PostgreSQL được chứng minh là có khả năng mở rộng cao cả về số lượng dữ liệu và số lượng người dùng có thể thao tác cùng lúc.

Dưới đây là một số các tính năng nổi bật được tổng hợp lại:

 Câu truy vấn phức hợp (complex query)

 Thủ tục sự kiện (trigger)

 Tính toàn vẹn của các giao dịch (integrity transactions)

 Việc kiểm tra truy cập đồng thời đa phiên bản (multiversion concurrency control)

 Truy vấn xử lý song song (parallel query)

 Sao chép dữ liệu dạng luồng (Streaming replication) a Kiểu dữ liệu

 Nguyên hàm: Số nguyên, số, chuỗi, Boolean

 Cấu trúc: Date/Time, Array, Phạm vi, UUID

 Document: JSON/JSONB, XML, Key-value (Hstore)

 Hình học: Điểm, Đường thẳng, Vòng tròn, Đa giác

 Tùy chỉnh: Composite, Các kiểu tùy chỉnh b Toàn vẹn dữ liệu

 Khóa hàm số, Khóa khuyến nghị

 Lập danh mục: B-tree, Multicolumn, Expressions, Partial

 Lập danh mục nâng cao: GiST, SP-Gist, KNN Gist, GIN, BRIN, Bloom filters

 Trình lập kế hoạch / trình tối ưu hóa truy vấn phức tạp, quét index-only, thống kê số liệu trên nhiều cột.

 Giao tác, Giao tác dạng nest (thông qua lưu điểm)

 Điều khiển đồng thời nhiều phiên bản (MVCC)

 Truy vấn đọc song song

 Tất cả các mức độ giao dịch độc lập được xác định trong tiêu chuẩn SQL, bao gồm cả Serializable

 Độ tin cậy, phục hồi sau thảm hoạ

 Ghi nhật ký ghi trước (Write-ahead Logging - WAL)

 Replication: Không đồng bộ, Đồng bộ, Logical

 Khôi phục điểm-theo-thời gian (Point-in-time-recovery - PITR), active standbys

 Không gian bảng c Bảo mật

 Xác thực: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate và các hình thức khác

 Hệ thống kiểm soát truy cập mạnh mẽ

 Bảo mật cấp độ cột và hàng d Khả năng mở rộng

 Ngôn ngữ thủ tục: PL / PGSQL, Perl, Python (và nhiều ngôn ngữ khác)

 Trình wrapper dữ liệu ngoài: kết nối với các cơ sở dữ liệu hoặc luồng khác với giao diện SQL chuẩn

 Và nhiều tiện ích mở rộng cung cấp chức năng bổ sung, bao gồm cả PostGIS

 Hỗ trợ các bộ ký tự quốc tế, ví dụ: thông qua ICU collations

 Tìm kiếm văn bản đầy đủ

1.3.Ưu điểm và hạn chế a Ưu điểm

 Có khả năng chạy trang web, ứng dụng web động.

 Lưu lại nhật ký, hình thành cơ sở dữ liệu hỗ trợ sửa lỗi.

 Mã nguồn PostgreSQL luôn sẵn sàng để người dùng chỉnh sửa nâng cấp.

 Hỗ trợ khách hàng theo từng vùng địa lý.

 Cách thức sử dụng đơn giản. b Hạn chế

 PostgreSQL không chịu sự quản lý của bất kỳ tổ chức nào gây khó khăn để người tiếp cận với đầy đủ tính năng.

 Có vô số ứng dụng ứng dụng mã nguồn mở không phải ứng dụng nào cũng được hỗ trợ tốt.

 Hiệu suất hoạt động chậm hơn so với MySQL

Kết nối ASP.NET Core với PostgreSQL có nhiều tác dụng quan trọng trong việc phát triển ứng dụng web

Lưu trữ dữ liệu: PostgreSQL là một hệ quản trị cơ sở dữ liệu mạnh mẽ và miễn phí, cho phép bạn lưu trữ và quản lý dữ liệu của ứng dụng một cách hiệu quả. Độ tin cậy: PostgreSQL được biết đến với tính năng độ tin cậy cao và khả năng xử lý lỗi tốt Điều này làm cho nó trở thành một lựa chọn phù hợp cho các ứng dụng yêu cầu sự ổn định và khả năng phục hồi sau lỗi

Hiệu suất: PostgreSQL cung cấp khả năng xử lý dữ liệu nhanh chóng và tối ưu hóa truy vấn, giúp cải thiện hiệu suất ứng dụng của bạn.

Hỗ trợ đa nền tảng: PostgreSQL có sẵn trên nhiều nền tảng, bao gồm Windows, Linux và macOS, do đó bạn có thể triển khai ứng dụng ASP.NET Core của mình trên nhiều hệ điều hành khác nhau

Hỗ trợ Entity Framework Core: ASP.NET Core cung cấp hỗ trợ tích hợp cho Entity Framework Core, một ORM (Object-Relational Mapping) mạnh mẽ Điều này cho phép bạn làm việc với cơ sở dữ liệu PostgreSQL thông qua mã C# mà không cần viết truy vấn SQL trực tiếp

Bảo mật: PostgreSQL có các tính năng bảo mật mạnh mẽ như xác thực và ủy quyền, giúp bảo vệ dữ liệu của bạn khỏi các mối đe dọa bảo mật.

Khả năng mở rộng: PostgreSQL hỗ trợ khả năng mở rộng và có thể quản lý các tài liệu dữ liệu lớn (JSON, XML) cũng như dữ liệu địa lý (GIS)

Kết nối ASP.NET Core với PostgreSQL giúp bạn tận dụng các ưu điểm của cả hai công nghệ, cho phép bạn xây dựng các ứng dụng web mạnh mẽ, bảo mật và hiệu quả.

Bảo mật và độ tin cậy cao: PostgreSQL được coi là một trong những hệ quản trị cơ sở dữ liệu đáng tin cậy nhất và được đánh giá cao về bảo mật.

Nó cung cấp các tính năng bảo mật mạnh mẽ như xác thực và ủy quyền, giúp bảo vệ dữ liệu của bạn khỏi các mối đe dọa bảo mật.

Hiệu suất: PostgreSQL được tối ưu hóa để xử lý truy vấn và dữ liệu nhanh chóng, giúp cải thiện hiệu suất ứng dụng của bạn

Hỗ trợ đa nền tảng: PostgreSQL có sẵn trên nhiều hệ điều hành khác nhau, cho phép bạn triển khai ứng dụng ASP.NET Core trên các nền tảng khác nhau

Hỗ trợ Entity Framework Core: ASP.NET Core tích hợp sẵn Entity Framework Core, một ORM mạnh mẽ, giúp bạn quản lý dữ liệu PostgreSQL thông qua mã C# mà không cần viết truy vấn SQL trực tiếp

Khả năng mở rộng: PostgreSQL hỗ trợ khả năng mở rộng và có thể quản lý các loại dữ liệu đặc biệt như dữ liệu địa lý (GIS), JSON, XML, và nhiều loại dữ liệu khác

Học curve: Nếu bạn chưa làm việc với PostgreSQL trước đây, có thể cần một thời gian để nắm vững cách sử dụng nó và tối ưu hóa các truy vấn và chỉnh sửa cấu trúc cơ sở dữ liệu

Cài đặt và quản lý: Việc cài đặt và quản lý PostgreSQL có thể đòi hỏi kiến thức về hệ thống và có thể khó khăn hơn so với một số hệ quản trị cơ sở dữ liệu khác dễ sử dụng hơn

Hạn chế về công cụ phát triển: PostgreSQL không có nhiều công cụ phát triển trực quan và tích hợp như một số hệ quản trị cơ sở dữ liệu khác. Điều này có thể làm cho việc phát triển và quản lý cơ sở dữ liệu phức tạp hơn

Tổng kết: kết nối ASP.NET Core với PostgreSQL có nhiều ưu điểm về bảo mật, hiệu suất và khả năng mở rộng, nhưng cần xem xét nhược điểm về học curve và quản lý cơ sở dữ liệu để đảm bảo sự phát triển và triển khai ứng dụng được thực hiện một cách hiệu quả.

Tổng quan kết nối ASP.NET Core MVC, với Hệ quản trị cơ sở dữ liệu PostegreSQL

Bước 1: Ta sẽ vào file appsettings.json thêm câu lệnh sau:

Database=thuyettrinhtuan4; Username=postgres; Password3"}  Câu lệnh này dùng để kết nối vào cơ sở dữ liệu PostGreSQL

Bước 2: Ta sẽ truy cập vào phần tools / NuGet Package Manager / Manage NuGetPackage for Solution và tải ba gói extensions Npgsql dưới đấy, những gói extensions này sẽ hỗ trợ thêm câu lệnh để kết nối vào PostGreSql vì vốn VisualStudio không hỗ trợ kết nối cho PostGreSql nên ta sẽ phải cài thêm extensions ngoài vào để có thể kết nối được.

Bước 3: Ta sẽ chuột phải vào thư mục Models và sau đó tạo một class Context ví dụ trong hình là demoPOSTContext để nó có thể lấy được dữ liệu bảng vào Visual Studio

Sau đó ta sẽ vào file Program.cs của solution và thêm các câu lệnh sau: builder.Services.AddDbContext

(=>.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));  Đây là chuỗi kết nỗi sẽ được thực hiện khi mà chương trình được khởi tạo.Demo project thực hiện một ASP.NET Core MVC, xuất ra màn mình trang web thông tin về: Danh sách sinh viên, Danh sách môn học Danh sách giảng viên

Bước 1 : Trong PostGreSQL hoặc trong bất kỳ cơ sở dữ liệu nào ta sẽ tạo ra ba bảng sau:

Bước 2 : Vào thư mục Models và tạo ra 3 class tương ứng với giảng viên, môn học , sinh viên sau đó ta sẽ khai báo các biên tương ứng với các biến trong bảng như magv, tengv của bảng giangvien

Lưu ý: trong SQL ta để giá trị thế nào thì trong Visual Studio ta phải khai báo đúng như vậy nếu không khi chạy chương trình, nó sẽ báo lỗi khai báo sai tên giá trịBước 3: Vào class Context trong trường hợp này là demoPOSTContext mà thêm 3 class vừa tạo vào để khi kết nối vào cơ sở dữ liệu nó sẽ lấy ra giá trị bảng

Bước 4: Để nó có thể hiện lên trang ta cần phải code phần view nhưng để tiếp kiệm thời gian ta sẽ sử dụng extension của Npg để tự generate code cho phần view của ba bảng giangvien,sinhvien,monhoc.

AJAX

AJAX là gì?

AJAX là từ viết tắt của từ Asynchronous JavaScript And XML - Bất đồng bộ trong Javascript và XML

 Asynchoronous (Bất đồng bộ): Bất đồng bộ có nghĩa là một chương trình có thể xử lý không theo tuần tự các hàm, không có quy trình, có thể nhảy đi bỏ qua bước nào đó Ích lợi dễ thấy nhất của bất đồng bộ là chương trình có thể xử lý nhiều công việc một lúc.

 Javascript: Đây là một ngôn ngữ lập trình rất phổ biến hiện nay Trong số rất nhiều chức năng của nó là khả năng quản lý nội dung động của website và hỗ trợ tương tác với người dùng.

 XML: Đây là một dạng ngôn ngữ gần giống với HTML, tên đầy đủ là eXtensible Markup Language Nếu HTML được dùng để hiển thị dữ liệu, XML được thiết kế để chứa dữ liệu.

Với AJAX, một máy khách (tức là trình duyệt) có thể liên lạc với một máy chủ web và gửi yêu cầu để nhâ ̣n được dữ liệu Sau đó, nó sẽ xử lí phản hồi của máy chủ và tạo ra sự thay đổi trên trang web mà không cần phải tải lại hoàn toàn trang web đó.

VD: khi lướt Facebook, Instagram, Twitter, v.v các bạn Like một bài viết nào đó và trang web sẽ tự động tải lại toàn bộ chỉ để tăng số lượt Like của bài viết đó.Thực tế là khi Like bài viết trên FB, số lượt Like sẽ tự động tăng lên mà không cần phải tải lại trang Và để làm được việc này thì chúng ta có thể sử dụng AJAX, nó chỉ truyền đạt thông tin cần thiết với máy chủ và hiển thị cho người dùng.

Sử dụng AJAX trong Javascript

2.1 Khởi tạo đối tượng Để sử dụng AJAX trong Javascript thì chúng ta cần sử dụng đối tượng XMLHttpRequest

Trong đó: varriableName là tên biến mà muốn gán cho object XMLHttpRequest.

2.2 Các thuộc tính và phương thức

 onreadystatechange: Xác định một hàm được gọi khi thuộc tính readyState thay đổi.

 readyState: Trạng thái của XMLHttpRequest.

Trong đó nếu giá trị bằng các giá trị sau thì sẽ có trạng thái tương ứng

0 - request chưa được khởi tạo.

1 - kết nối đến server đang được thiết lập.

2 - yêu cầu đã nhận được.

3 - đang tiến hành xử lý.

4 - request đã xong và dữ liệu trả về đã sẵn sàng để xử lý.

 responseText: Giá trị trả về dưới dạng string.

 responseXML: Giá trị trả về dưới dạng XML.

 status: Trả về trạng thái của request VD:

 statusText: Trả về trạng thái của request dưới dạng text VD: Ok, Not

 new XMLHttpRequest(): Tạo đối tượng XMLHttpRequest.

 abort(): Hủy Request hiện tại.

 getAllResponseHeaders(): Lấy ra thông tin header.

 getResponseHeader(): Trả về cụ thể thông tin header.

 open( method, url, async, user, psw ): Cấu hình cho một request mới.

 send( string ): Gửi dữ liệu đến server đã được cấu hình ở phương thức open() Trong đó string là data các bạn muốn truyền theo nếu request là POST.

 setRequestHeader(): Thiết lập các thông số header gửi lên.

2.2.3 AJAX hoạt động như thế nào?

Cần lưu ý AJAX không phải dùng một công nghệ duy nhất, cũng không phải ngôn ngữ lập trình AJAX là một bộ kỹ thuật phát triển web Bộ hệ thống này bao gồm:

 HTML/XHTML làm ngôn ngữ chính và CSS để tạo styles.

 The Document Object Model (DOM) để hiển thị dữ liệu động và tạo tương tác.

 XML để trao đổi dự liệu nội bộ và XSLT để xử lý nó Nhiều lập trình viên đã thay thế bằng JSON vì nó gần với JavaScript hơn.

 XMLHttpRequest object để giao tiếp bất đồng bộ.

 Cuối cùng, JavaScript làm ngôn ngữ lập trình để kết nối toàn bộ các công nghệ trên lại.

Cách hoạt động của AJAX có thể được mô tả như sau:

- Trình duyệt tạo một lệnh gọi JavaScript để kích hoạt XMLHttpRequest.

- Ở dưới nền, trình duyệt tạo một yêu cầu HTTP gửi lên server.

- Server tiếp nhận, truy xuất và gửi lại dữ liệu cho trình duyệt.

- Trình duyệt nhận dữ liệu từ server và ngay lập tức hiển thị lên trang Không cần tải lại toàn bộ trang.

Như vâ ̣y, chúng ta đã có thể hiểu tại sao AJAX là một khái niệm quan trọng cho các trang web hiện đại Bằng cách phát triển ứng dụng có chức năng AJAX, chúng ta có thể kiểm soát số lượng dữ liệu được tải xuống từ máy chủ.

POST & GET Request trong AJAX

Phương thức GET thì đơn giản hơn và nhanh hơn POST, và nó được sử dụng trong hầu hết các trường hợp.

Tuy nhiên, cần phải luôn sử dụng POST requests khi:

 Tệp được lưu trong bộ nhớ cache không phải là một tùy chọn

 Gửi một lượng lớn dữ liệu đến máy chủ.

 Gửi thông tin người dùng nhập vào, POST sẽ mạnh mẽ và an toàn hơn GET.

Phương thức GET thường được sử dụng để lấy hoặc truy xuất một số loại thông tin từ máy chủ mà không yêu cầy bất kì thao tác hoặc thay đổi nào trong cơ sở dữ liệu.

Ví dụ: Tìm nạp kết quả tìm kiếm dựa trên một cụm từ, tìm nạp chi tiết người dùng dựa trên id hoặc tên của họ, v.v.

Ví dụ dưới đây sẽ hướng dẫn cách thực hiện một yêu cầu Ajax GET trong JavaScript (show code)

Phương thức POST chủ yếu được sử dụng để gửi dữ liệu biểu mẫu đến máy chủ web.

3.3 Ưu và Nhược điểm của việc sử dụng AJAX

Giống như bất kỳ công nghệ nào khác, AJAX cũng đi kèm với những ưu và nhược điểm riêng Dưới đây là liệt kê một số tình huống quan trọng mà một người chắc chắn phải biết trong khi sử dụng AJAX trong phát triển ứng dụng dựa trên web.

- Cải thiện trải nghiệm người dùng: Đây là lợi ích quan trọng nhất của

AJAX AJAX tăng hiệu suất của trình duyệt và tạo điều kiện cho tốc độ duyệt nhanh hơn do đó cung cấp trải nghiệm người dùng đáp ứng.

- Tăng khả năng tương thích: AJAX có thể tương thích với ASP.NET,

J2EE, PHP hoặc bất kỳ ngôn ngữ nào.

- Hỗ trợ xử lý không đồng bộ: Có thể thực hiện truy xuất dữ liệu không đồng bộ bằng cách sử dụng XmlHttpRequest, xương sống của các ứng dụng

AJAX Do đó, các yêu cầu được xử lý hiệu quả và tải nội dung động được đưa lên tầm cao hơn bằng cách cải thiện hiệu suất đáng kể.

- Giảm mức sử dụng băng thông và tăng tốc độ: AJAX sử dụng kịch bản phía máy khách để liên lạc với máy chủ web và trao đổi dữ liệu bằng JavaScript Sử dụng AJAX, bạn có thể cắt giảm tải mạng và sử dụng băng thông và chỉ truy xuất dữ liệu được yêu cầu để cung cấp cho bạn giao diện nhanh hơn và thời gian đáp ứng tốt hơn Thời gian đáp ứng nhanh hơn, do đó hiệu suất và tốc độ được tăng lên.

- Năng suất người dùng được nâng cao: Thư viện AJAX cung cấp các hàm trợ giúp hướng đối tượng giúp tăng đáng kể năng suất cho người dùng.

- Tính không tương thích của trình duyệt: AJAX phụ thuộc nhiều vào

JavaScript được triển khai khác nhau cho các trình duyệt khác nhau Điều này hóa ra là một trở ngại đặc biệt là khi AJAX phải hoạt động trên nhiều trình duyệt Các trình duyệt không hỗ trợ JavaScript hoặc tắt tùy chọn JavaScript sẽ không thể sử dụng chức năng của nó.

- Không an toàn: Trang web có thể khó gỡ lỗi, tăng kích thước mã của trang web của bạn và khiến trang web của bạn dễ bị đe dọa bảo mật nghiêm trọng.

- Bookmark: Khi người dùng muốn bookmark một trang lại thì khi sử dụng ajax sẽ ảnh hưởng đến người dùng vì không thể bookmark lại trang có ajax được.

NoSQL, MongoDB, Cassandra

NoSQL

1.1 Cơ sở dữ liệu NoSQL là gì?

Cơ sở dữ liệu NoSQL (hay NoSQL databases) là hệ thống quản lý dữ liệu phi quan hệ được xây dựng dành riêng cho mô hình dữ liệu và có schema (lược đồ) rất linh hoạt

Việc xây dựng cơ sở dữ liệu phi quan hệ có mục đích dành cho các kho dữ liệu phân tán nhằm đáp ứng nhu cầu lưu trữ dữ liệu lớn Cơ sở dữ liệu NoSQL được ứng dụng vào các web có thời gian giống với thời gian thực và có nguồn dữ liệu lớn thu thập hàng ngày như Google hay Facebook

Loại cơ sở dữ liệu này là thuật ngữ được viết tắt từ cụm “Not Only SQL” Cú pháp SQL được sử dụng với cơ sở dữ liệu quan hệ RDBMS nhằm lưu trữ và truy xuất dữ liệu khi cần thiết

Bên cạnh đó, hệ thống cơ sở dữ liệu NoSQL có thể lưu dữ liệu có cấu trúc, bán cấu trúc, phi cấu trúc hay dữ liệu đa hình Cơ sở dữ liệu NoSQL được ứng dụng rộng rãi nhờ có thể thực hiện ở quy mô lớn, dễ phát triển cũng như nhiều chức năng

1.2 Tại sao lại cần phải có NoSQL.

Sở dĩ người ta phát triển NoSQL suất phát từ yêu cầu cần những database có khả năng lưu trữ dữ liệu với lượng cực lớn, truy vấn dữ liệu với tốc độ cao mà không đòi hỏi quá nhiều về năng lực phần cứng cũng như tài nguyên hệ thống và tăng khả năng chịu lỗi. Đây là những vấn đề mà các relational database không thể giải quyết được.

Lượng dữ liệu mà các hệ thống cần phải xử lý giờ đây ngày 1 lớn Ví dụ như Google, Facebook phải lưu trữ và xử lý một lượng dữ liệu cực lớn mỗi ngày

High Scalability: Gần như không có một giới hạn cho dữ liệu và người dùng trên hệ thống.

High Availability: Do chấp nhận sự trùng lặp trong lưu trữ nên nếu một node (commodity machine) nào đó bị chết cũng không ảnh hưởng tới toàn bộ hệ thống.

 Atomicity: Độc lập data state trong các operation.

 Consistency: chấp nhận tính nhất quán yếu, có thể không thấy ngay được sự thay đổi mặc dù đã cập nhật dữ liệu.

 Durability: dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng thời cũng được lưu trữ lại đĩa cứng.

 Deployment Flexibility: việc bổ sung thêm/loại bỏ các node, hệ thống sẽ tự động nhận biết để lưu trữ mà không cần phải can thiệp bằng tay Hệ thống cũng không đòi hỏi cấu hình phần cứng mạnh, đồng nhất.

 Modeling flexibility: Key-Value pairs, Hierarchical data (dữ liệu cấu trúc), Graphs.

 Query Flexibility: Multi-Gets, Range queries (load một tập giá trị dựa vào một dãy các khóa).

1.4 Lý do nên sử dụng NoSQL

 NoSQL có tính linh hoạt cao: Cơ sở dữ liệu này sẽ cung cấp các sơ đồ linh hoạt giúp phát triển các công đoạn nhanh hơn cùng khả năng lặp lại Mô hình dữ liệu có thể chuyển từ cơ sở dữ liệu phi quan hệ thành ý tưởng cho các loại dữ liệu không cấu trúc hoặc cấu trúc chưa hoàn chỉnh

 NoSQL có khả năng thay đổi quy mô: NoSQL được thiết kế nhằm tăng quy mô bằng các cụm phần cứng được phân phối thay vì bổ sung máy chủ mạnh và tốn kém

 Hiệu năng của NoSQL cao: Cơ sở dữ liệu phi quan hệ sẽ được tối ưu hoá từng mô hình cụ thể và mẫu truy cập Điều này sẽ giúp tăng hiệu năng so với việc đạt chức năng tương tự bằng cơ sở dữ liệu quan hệ.

 Tính thiết thực cao: Cơ sở dữ liệu phi quan hệ có cung cấp các kiểu dữ liệu thiết thực như API được xây dựng cho từng mô hình dữ liệu riêng.

Cassandra

Cassandra là NoSQL, được phát triển bởi Facebook vào năm 2007. Sau đó được tặng cho quỹ Apache vào 2/2010 và nâng cấp thành dự án hàng đầu của Apple

Là hệ cơ sở dữ liệu phân tán, kết hợp giữa Google Bigtable và Amazon DynamoDB.

- Ngôn ngữ phát triển: Java

- Được thiết kế có thể chạy trên phần cứng giá rẻ.

- Cung cấp write throughtput khá cao và read throughput thấp

- Dễ dàng scale theo chiều ngang

Cassandra rất thích hợp trong những ứng dụng hay service làm về chat Hiện nay có 1 số công ty đang dùng như Facebook, Discord.

Cassandra cũng rất thích hợp cho những dòng ứng dụng mà có tốc độ dữ liệu gửi đến cực khủng từ nhiều thiết bị khác.

- Social Media Analytics and recommendation engine

Cassandra cũng rất thích hợp cho những chức năng về recommendation hay 1 vài chức năng liên quan đến analytics.

Do Cassandra được kế thừa từ Amazon DynamoDB nên tính mở rộng của nó là khá lớn Khi tốc độ xử lý của hệ thống không đủ thì ta chỉ cần thêm node mới vào là được.

Là kiến trúc phân phối dữ liệu trên nhiều node bên trong cluster.

Dựa theo thuật toán Consistent Hashing thì mỗi node sẽ được cấp phát

1 token, và dựa vào token này sẽ phân phối dữ liệu đến từng node.

Dữ liệu được tạo ra nhờ replication sẽ tự động phân chia đến từng node.

Là giao thức truyền thông giữa các node trong cluster Cơ bản là truyền thông P2P.

 Không gian bộ nhớ (memtable)

- Tính nhất quán dữ liệu trong cluster

Khi nhận được request đọc ghi đến DB của Cassandra, khi đó cái node nhận được request này sẽ đảm nhiệm 1 chức vụ được gọi là coordinator, và tiến hành xử lí request đọc ghi đến những node liên quan.

Dựa vào cấp độ của tính nhất quán (Consistency Level) mà việc kết nối đến từng node sẽ khác nhau Cấp độ của tính nhất quán sẽ được set trên mỗi câu truy vấn đọc ghi Do đó giúp nhà phát triển ứng dụng sẽ dễ dàng điều chỉnh Consistency Level cho phù hợp với yêu cầu của họ: muốn kết quả trả về nhanh hay muốn dữ liệu trả về chính xác.

 Nếu Consistency Level được set là 1 thì khi đó coordinator chỉ cần kết nối trực tiếp đến 1 node -> kết quả trả về nhanh

 Nếu Consistency Level đươc set là ALL thì khi đó coordinator phải kết nối đến toàn bộ node và thực hiện xử lý dữ liệu -> dữ liệu trả về chính xác

Các node trong cluster có vai trò như nhau, không có node nào làm node chính cả Hơn nữa dữ liệu không chỉ được lưu trên 1 node mà nó được lưu trên toàn bộ các node, do đó độ chịu lỗi của nó là khá cao Cho dù có 1 node bị lỗi đi chăng nữa thì khi truy vấn kết quả, nó sẽ được điều hướng sang các node khác để lấy.

Giả sử như trong khi đang phục hồi thì có dữ liệu mới đến, khi đó dựa vào cơ chế Hinted Handoff thì cái node nhận được dữ liệu mới này sẽ thực hiện việc lưu tạm thời dữ liệu lại Và cái node bị lỗi sau khi phục hồi dữ liệu xong thì sẽ tiến hành update dữ liệu dựa vào cái thông tin đã lưu lúc trước.

Ngoài ra dựa vào cơ chế Read Repair, khi chúng ta query dữ liệu. Chẳng may cái dữ liệu nhận được nó cũ hơn dữ liệu đang có ở các node khác Khi đó nó sẽ tự động tiến hành update dữ liệu.

Dữ liệu được lưu trữ trong DB của Cassandra thuộc dạng Key value store (KVS) Có thể tạo được nhiều table trong database nhưng mà giữa các table sẽ không có mỗi quan hệ nào Nhiều table được tổng hợp lại thành keyspace.

Thông thường database trong NoSQL thì không cần thiết phải tạo schema ngay lúc đầu Thế nhưng Cassandra thì lại khác Trước khi insert dữ liệu thì cần phải tạo keyspace và schema của table Có thể thực hiện được 1 số câu query như select, update, insert, delete, drop

Mongo DB

 MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng.

 MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.

 Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server ) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng

- Một số câu lệnh cơ bản trên MongoDB

 Do 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 kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái.

 Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.

 MongoDB rất dễ mở rộng (Horizontal Scalability) Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster:

 Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.

 Một ưu điểm của MongoDB cũng chính là nhược điểm của nó MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.

 Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại Không hỗ trợ join nên dễ bị dữ thừa dữ liệu.

 Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện

Demo: Thiết lập kết nối với Cassandra

Để thiết lập kết nối với Apache Cassandra thì trước tiên để cài được Apache Cassandra thì phải có hai phần mềm sau Python 2.7 và Oracle Java Standard Edition 8 hoặc OpenJDK 8 tại vì Apache Cassandra sẽ cần hai phần mềm này để chạy Lưu ý file Apache Cassandra và Python 2.7 nên để vào ổ C tại vì khi cài môi trường Oracle Java Standard Edition 8 hoặc OpenJDK nó sẽ mặc định cài vào ổ C.

Tiếp ta sẽ mở command prompt và vào đường dẫn \apache-cassandra-3.11.4\bin và gõ cassandra để khởi động apache cassandra sau khi khởi động sau ta sẽ gõ cqlsh để vào chức năng viết lệnh cho apache cassandra

Sau đó ta sẽ tạo bảng cách thực hiện lệnh create table sinhvien ( id text, name text, quequan text, sdt text , primary key (id)); , để xem bảng đã tạo ta có thể sử dụng lệnh select * from tên bảng; Để có thể thêm giá trị vào ta sẽ thêm sử dụng lệnh insert into tên bảng (id,name,quequan,sdt) values (‘giá trị’, ‘giá trị’, ‘giá trị’, ‘giá trị’,);

Trong file Models của project ta sẽ code chuỗi kết nối như sau: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Cassandra; namespace DemoCassandra.Models

{ public List listsinhvien = new List(); public CassandraData()

{ var cluster = Cluster.Builder().AddContactPoint("127.0.0.1").Build(); var session = cluster.Connect("thuyettrinh"); var results = session.Execute("Select* from sinhvien");

SinhVien tobj = null; foreach ( var result in results )

{ tobj = new SinhVien(); tobj.name = result.GetValue("name"); tobj.quequan = result.GetValue("quequan"); tobj.sdt = result.GetValue("sdt"); listsinhvien.Add(tobj);

{ public int id { get; set; } public string? name { get; set; } public string? quequan { get; set; } public int? sdt { get; set; }

Tổng quan Webservice

Tổng quan về WebService

Web Services được hiểu theo nghĩa tiếng Việt là dịch vụ Web. Webservices là tập hợp các giao thức và tiêu chuẩn mở được sử dụng để trao đổi dữ liệu giữa các ứng dụng hoặc giữa các hệ thống.

1.2 Các loại Web Service hiện nay

- Viết tắt của Simple Object Access Protocol

- Là một giao thức dựa trên XML để truy cập Web Service

- Được khuyến cáo bởi W3C cho giao tiếp 2 ứng dụng

- Là nền tảng độc lập và ngôn ngữ độc lập

- Viết tắt của Representational State Transfer

- Là 1 loại kiến trúc phần mềm, không phải protocol

- Chiếm ít bang thông và tài nguyên

- Cho phép định dạng dữ liệu khác nhau

1.3 Web Service hoạt động thế nào?

- Application Client cần truy vấn mẫu tin UDDI theo 1 thông tin nào đó để xác định WebService cần tìm

- Khi đã xác định được WebService cần cho ứng dụng, Client có thể lấy thông tin về địa chỉ của tài liệu WSDL của WebService dựa trên UDDI

- Client tạo ra 1 Proxy cục bộ cho dịch vụ từ xa Proxy chuyển một phương tiện khởi động phương thức của đối tượng thành một thông báo XML và ngược lại. – Tạo thông báo SOAP – Client tạo ra những gói tin SOAP/XML và gửi đến địa chỉ URL được xác định trong tệp WSDL để liên lạc với Server.

– SOAP Listener nhận cuộc gọi và diễn dịch

– Dịch vụ Web thực hiện các chức năng của mình và trả kết quả về cho client, thông qua listener và proxy.

1.4 Lợi ích khi sử dụng

- Truyền thông chi phí thấp

- Hiển thị chức năng có trên mạng

1.5 Ưu điểm và nhược điểm

- Cung cấp khả năng hoạt động rộng lớn với các ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau

- Làm việc với những giao thức chuẩn Web

- Sự an toàn của máy chủ cơ sở dữ liệu luôn được bảo mật

- Giảm giá thành cho việc tích hợp các hệ thống khác nhau

- Không có khả năng khôi phục đủ tin cậy nhằm đảm bảo các giao dịch có thể trở về trạng thái ban đầu

- Phụ thuộc tốc độ đường truyền Internet

- Khó nắm bắt do có quá nhiều chuẩn cho Web service

- Hiệu suất tối ưu sẽ bị ảnh hưởng bởi số lượng các ứng dụng cộng tác cùng hoạt động

- Phải quan tâm nhiều hơn đến vấn đề về bảo mật và an toàn

Kiến trúc WebService

2.1 Vai trò của Web Service

- Service Provider: giúp triển khai và cung cấp dịch vụ Internet

- Service Requestor: là những người dùng dịch vụ Web bằng mở kết mạng và gửi XML

- Service Registry: là thư mục logic tập trung của dịch vụ Web, có vai trò như một thanh toán bù trừ tập trung cho các công ty và dịch vụ của họ.

Protocol Stack tại Web Service

- Service Transport: chịu trách nhiệm vận chuyển thông tin giữa các ứng dụng

- XML Messanging: sẽ có trách nhiệm mã hóa những thông điệp theo định dạng XML phổ biến, đảm bảo có thể hiểu được ở 2 đầu

- Service Description: sẽ có trách nhiệm mô tả giao diện công cộng cho Web Service cụ thể

- Service Discovery: sẽ có nhiệm vụ tập trung những dịch vụ vào một số đăng ký chung và cung cấp chức năng xuất bản hoặc tìm kiếm dễ dàng

2.2 Các công nghệ sử dụng trong Web Service

SOAP (Giao thức truy cập đơn giản)

- SOAP viết tắt của Simple Object Access Protocol

- Là một giao thức thiết lập dựa vào XML đơn giản, cho phép ứng dụng trao đổi qua HTTP

UDDI (Mô tả chung, khám phá và tích hợp)

- Viết tắt của Universal Description, Discovery, Integration

- Là một tiêu chuẩn dựa trên XML nhằm mô tả, xuất bản và tìm kiếm các dịch vụ Web

2.3 WSDL (Ngôn ngữ mô tả Web Service)

Viết tắt của Web Service Description Language

Là ngôn ngữ xây dựng trên XML nhằm mô tả các dịch vụ về Web và cách thức để truy cập chúng Ngoài ra, WSDL còn mô tả một dịch vụ web cùng định dạng thông báo và những chi tiết giao thức cho dịch vụ web

Tổng quan về RESTful Web Service

3.1 Restful Web Service là gì?

Restful Web Service là thuật ngữ dùng để chỉ những dịch vụ web được phát triển theo kiến trúc REST (hay còn gọi là dịch vụ web REST). Trong đó, REST là viết tắt của Representational State Transfer (Truyền trạng thái đại diện)

- Là những dịch vụ được xây dựng trên kiến trúc REST

- Đây là một dịch vụ nhẹ, dễ bảo trì và có thể mở rộng

- Có khả năng khôi phục, hiển thị API theo yêu cầu của ứng dụng khách an toàn, thống nhất và vô trạng thái

- Máy khách có thể thực hiện các hoạt động được xác định thông qua các dịch vụ REST

- Giao thức cơ bản cho REST là HTTP

3.3 Những yếu tố chính của RESTful Web Service

- Tài nguyên: Tài nguyên là yếu tố quan trọng đầu tiên của RESTful Web Service

- Request Verbs (Động từ yêu cầu): Những động từ này mô tả những gì bạn mong muốn làm với tài nguyên Chúng bao gồm:

+ POST: lệnh này để nạp thông tin của dữ liệu

+ GET: trình duyệt web sử dụng GET vì nó muốn lấy chi tiết thông tin của dữ liệu + PUT: lệnh này dùng để cập nhật thông tin chi tiết của dữ liệu bằng dịch vụ REST + DELETE: dùng để xóa tất cả thông tin chi tiết của dữ liệu

- Request Headers (Tiêu đề yêu cầu): Là những hướng dẫn bổ sung được gửi cùng với yêu cầu Chúng có thể xác định loại phản hồi được yêu cầu hoặc chi tiết ủy quyền

- Request Body (Nội dung yêu cầu): Là những dữ liệu được gửi kèm theo yêu cầu.

Dữ liệu chỉ được gửi khi có một yêu cầu POST được thực hiện Trong 1 POST, máy khách sẽ báo với REST rằng muốn thêm tài nguyên vào máy chủ, khi đó Request Body sẽ bao gồm những thông tin chi tiết về tài nguyên này

- Response Body (Nội dung phản hồi): Là những nội dung chính của phản hồi Khi đưa yêu cầu truy vấn, máy chủ sẽ trả về tài liệu XML, trong đó bao gồm tất cả thông tin của dữ liệu

- Response Status codes (Mã trạng thái phản hồi): Là các mã chung được trả về cùng với phản hồi từ máy chủ web

3.4 So sánh REST với SOAP

TỔNG QUAN RAZOR PAGE

Tổng quan Single Page Application

Single page Application là một ứng dụng web giúp nâng cao trải nghiệm người dùng bằng cách sử dụng HTML5 và AJAX Đầu tiên khi tải một trang web bất kỳ, SPA sẽ tải một trang HTML đơn, sau đó dựa trên request của người dùng, SPA sẽ tiếp tục tải các HTML khác trong cùng một trang đó,SPA có thể sử dụng một vài thư viện JavaScript như AngularJS,Backbone.js, Durandal.

1.2 Single Page Application hoạt động ra sao? Đối với mô hình truyền thống, khi bạn muốn xem một bức tranh có cỏ, mặt trời và ngôi nhà, Server sẽ chuẩn bị sẵn hết 3 thứ đó và gửi 1 lượt cho bạn sau đó hiển thị lên trình duyệt.

Với Single Page Application, server sẽ gửi cho bạn lần lượt từng món là khung của 3 thứ trên Sau đó, server lại tiếp tục gửi màu sắc của chúng và tô lên thành một bức tranh đầy đủ. Điều này sẽ khiến tốc độ tải nhanh hơn, dẫn đến trải nghiệm của người dùng được tăng lên rất nhiều Ví dụ, bạn muốn thay đổi màu của mặt trời, mô hình truyền thống sẽ gửi lại cả bức tranh cho bạn; còn Single Page Application sẽ gửi lại màu sắc và vị trí của mặt trời nếu có thay đổi cho bạn.

1.3 Một vài hạn chế của Single Page Application

- Mô hình này kém phù hợp với các thiết bị có hiệu năng từ trung bình trở xuống do mọi thao tác đều phải được xử lý trên cùng một trang Đồng thời, trình duyệt cũng phải được kích hoạt JavaScript.

- Việc phát triển SPA không hề đơn giản, đòi hỏi đội ngũ lập trình viên backend phải nắm chắc cách thức sử dụng ngôn ngữ lập trình JavaScript và các framework liên quan như ReactJS hay AngularJS.

- Tốc độ chạy trang lần đầu sẽ kém hơn so với web truyền thống.

- Các kỹ thuật SEO nâng cao như tạo cấu trúc Silo sẽ không áp dụng được với SPA.

- Content không có độ chi tiết và cụ thể cao do bị giới hạn nội dung trên trang.

Tổng quan Razor Page

Razor Page trong ASP.NET Core 6.0 là một kiểu trang web ASP.NET Core mới được giới thiệu trong ASP.NET Core 2.0 Razor Pages được thiết kế để làm cho việc xây dựng các trang web ASP.NET Core trở nên dễ dàng hơn, đặc biệt là đối với các trang web đơn giản.

Razor Pages kết hợp các tính năng của ASP.NET Core MVC và ASP.NET Web Forms Giống như ASP.NET Core MVC, Razor Pages sử dụng Razor view engine để hiển thị dữ liệu động trên trang web Tuy nhiên, Razor Pages không yêu cầu bạn phải sử dụng controller Thay vào đó, Razor Pages sử dụng các lớp PageModel để xử lý các yêu cầu HTTP và hiển thị trang.

Razor Pages cũng hỗ trợ model binding tự động, giúp việc hiển thị dữ liệu trên trang web trở nên dễ dàng hơn Ngoài ra, Razor Pages còn hỗ trợ các tính năng khác như Tag Helpers và HTML helpers, giúp bạn có thể tạo giao diện người dùng phức tạp hơn.

2.2 Phương pháp tạo một Razor Page Để tạo một Razor Page, bạn chỉ cần tạo một lớp PageModel và đặt tên cho nó theo tên trang web Ví dụ, nếu bạn muốn tạo một trang web có tên là Index, bạn sẽ tạo một lớp có tên là IndexPageModel.

Sau khi bạn đã tạo lớp PageModel, bạn cần tạo một tệp Razor view để hiển thị trang web Tệp Razor view sẽ có phần mở rộng cshtml và sẽ được đặt trong thư mục Pages.

Trong tệp Razor view, bạn có thể sử dụng Razor syntax để hiển thị dữ liệu động trên trang web Ngoài ra, bạn cũng có thể sử dụng HTML helpers và Tag Helpers để tạo giao diện người dùng phức tạp hơn. Để chạy trang web Razor Page, bạn cần khởi động ứng dụngASP.NET Core của bạn và sau đó truy cập vào trang web trong trình duyệt web của bạn Ví dụ, nếu bạn đã tạo một trang web có tên là Index, bạn sẽ truy cập vào trang web trong trình duyệt web của bạn tại địa chỉ http://localhost:5000/Index.

Dependency Injection

- Inversion of Control: Đây là một design pattern được tạo ra để code có thể tuân thủ nguyên lý Dependency Inversion Có nhiều cách hiện thực pattern này: ServiceLocator, Event, Delegate,… Dependency Injection là một trong các cách đó.

- Dependency Injection (DI): Là một design pattern được ASP.Net hỗ trợ Đây là một kỹ thuật để hiện thực hóa Inversion of Control Pattern (có thể coi nó là một design pattern riêng cũng được) Các module phụ thuộc (dependency) sẽ được inject vào module cấp cao Có thể hiểu 1 cách đơn giản như sau:

• Các module không giao tiếp trực tiếp với nhau, mà thông qua interface Module cấp thấp sẽ implement interface, module cấp cao sẽ gọi module cấp thấp thông qua interface.

• Ví dụ: Để giao tiếp với database, ta có interface IDatabase, các module cấp thấp là XMLDatabase, SQLDatabase Module cấp cao là CustomerBusiness sẽ chỉ sử dụng interface IDatabase.

• Việc khởi tạo các module cấp thấp sẽ do DI Container thực hiện Ví dụ: Trong module CustomerBusiness, ta sẽ không khởi tạo IDatabase db = new XMLDatabase(), việc này sẽ do DI Container thực hiện Module CustomerBusiness sẽ không biết gì về module XMLDatabase hay SQLDatabase.

• Việc Module nào gắn với interface nào sẽ được config trong code hoặc trong file XML.

• DI được dùng để làm giảm sự phụ thuộc giữa các module, dễ dàng hơn trong việc thay đổi module, bảo trì code và testing.

Constructor injection: Các dependency (biến phụ thuộc) được cung cấp thông qua constructor (hàm tạo lớp).

Setter injection: Các dependency sẽ được truyền vào 1 class thông qua các setter method (hàm setter).

Interface injection: Dependency sẽ cung cấp một Interface, trong đó có chứa hàm có tên là Inject Các client phải triển khai một Interface mà có một setter method dành cho việc nhận dependency và truyền nó vào class thông qua việc gọi hàm Inject của Interface đó.

Trong ba kiểu Inject thì Inject qua phương thức khởi tạo rất phổ biến vì tính linh hoạt, mềm dẻo, dễ xây dựng thư viện DI

3.3 Các Ưu điểm và Nhược điểm

- Giảm sự kết dính giữa các module

- Code dễ bảo trì, dễ thay thế module

- Rất dễ test và viết Unit Test

- Dễ dàng thấy quan hệ giữa các module (Vì các dependency đều được inject vào constructor)

- Khái niệm DI khá “khó tiêu”, các developer mới sẽ gặp khó khăn khi học

- Sử dụng interface nên đôi khi sẽ khó debug, do không biết chính xác module nào được gọi

- Các object được khởi tạo toàn bộ ngay từ đầu, có thể làm giảm performance Làm tăng độ phức tạp của code

Ví dụ: IMyDependency service được request và sử dụng để gọi phương thức

Bằng cách sử dụng DI pattern, service sẽ: Không sử dụng MyDependency, chỉ sử dụng IMyDependency interface thực hiện nó Điều đó giúp bạn dễ dàng thay đổi việc thực thi của Controller mà không cần sửa đổi Controller Không tạo một instance của MessageWriter, nó được tạo bởi

Việc triển khai IMyDependency interface có thể được cải thiện bằng cách sử dụng built-in logging API

Sử dụng ConfigureServices để đăng ký implement ImyDependency

LoggingMessageWriter phụ thuộc vào ILogger TcategoryName yêu cầu trong phương thức khởi tạo.

Trong Dependency Injection, một service sẽ: Là một object cung cấp một service cho các đối tượng khác, chẳng hạn như IMyDependency service Không liên quan đến web service, mặc dù service đó có thể sử dụng một web service

Ngày đăng: 25/03/2024, 18:13

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w