1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ổng quan về net framework: net core : net 6; tổng quan về kestrel : iis : nginx : apache; tổng quan về lập trình với ngôn ngữ python

25 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Tổng Quan Về .NET Framework: .NET Core: .NET 6; Tổng Quan Về Kestrel: IIS: NGINX: Apache; Tổng Quan Về Lập Trình Với Ngôn Ngữ Python
Tác giả Hoàng Minh An, Dang Đỉnh Việt Anh, Nguyễn Hữu Việt Anh, Đụn Nguyờn Thắng, Nguyễn Quốc Việt
Người hướng dẫn Trần Trung Mó
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 25
Dung lượng 3,35 MB

Nội dung

Đ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 Mi

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

DAI HOC DIEN LỰC

ELECTRIC POWER UNIVERSITY

Tén bao cao: Téng quan vé NET Framework/ NET core / NET 6; tong quan vé

Kestrel / IIS / NGINX / Apache; tong quan về lập trình với ngôn ngữ Pvython; các bước cài đặt môi trường lập trình; các bước thực

hiện bài tập

Dang Đỉnh Việt Anh

Nguyễn Hữu Việt Anh

Đôn Nguyên Thắng Nguyễn Quốc Việt Giảng viên hướng dẫn: Trần Trung

HÀ NỘI - 2023

Trang 2

Muc luc

Trang 3

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 rat

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 đà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ư:

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 thi van co thé ding Visual Studio 2019

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

Hỗ tro Production stress-tested danh cho tmg dung Microsoft services, ing 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, va mobile

apps, tat ca str dung chung code base co thé share code dé dang

Hiệu năng được cải thiện rat nhiéu va cho tac tac vu I/O cu thé, bang cach giam thời gian thực thị, độ 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, va new lambda capabilities, trong khi trinh bién dich tang kha nang gen code Hot Reload cho phép ban tránh được việc bunld 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

Trang 4

Cloud diagnostics duge cai tién voi OpenTelemetry va 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

Single-page apps được giới thiệu voi ASP.NET Core gid đây sử dung mét pattern linh hoạt giúp bạn có thể sử dung Angular, React hoặc các framework frontend Javascript khac

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

Cơ chế đọc ghi file (File IO) da 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á ChaCha20Poly 1305, và các biện pháp ngăn chặn chiều sâu, đặc biệt

Source bưuild 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

Hỗ trợ

Bán NET 6 là một bản hỗ trợ lâu đà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 Armé4

Red Hand hé tro NET trén Red Hat Enterprise Linux và da 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 1ó Nếu bạn muốn dùng NET 6 thì phải upgrade lên Visual Studio 2022 Nếu đùng Visual Studio Code thì có thé phát triên sử đụng C# Extension

Có thê bat đầ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

Trang 5

1.2

Có thê dùng 1 nên tảng mà có thê phát triển nhiều loại ung dung tr Desktop, Web,

IoT, WebAssembly, Cloud và có thé chia sé duoc code base dé đàng Một điều

thú vị nữa là NET Multi-platform App UI (NET MAUI) tite 1a chính ta co thé viết code với | project nhưng có thể tạo ra một ứng dụng chạy trên cả Desktop lẫn Mobile .NET MAUI duoc đí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

HWiéu nang

Các nội dung chu dao trong việc tăng hiệu năng như:

Dynamic PGO: viết tat cha Dynamic Profile-guided Optimization (PGO) cho phép biên đị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í du voi NET 5 va NET 6 ghi ghi | file

100MB cho ra 2 két qua rat tot

Write10OMBAsync _.NET 5.0 1,308.2 ms 1.00 3,809 KB Write10OMBAsync NET 6.0 306.8 ms 0.24 3 KB

1.3 Cñ 10

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

Global using directive: st’ dung global using sẽ không phải using mọi nơi như System namespace chang han

File scoped namespace: khéng can phai long class trong namespace

Record struct

Hot Reload

Tinh 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 va Visual Studio 2022 Bạn có thé str dung Hot Reload voi

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

1.4 Bao mật

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.

Trang 6

1.5 Arm64

- _ 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

2.1.1 NGINX la gi

- NGINX la mot 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 201 1, công ty Ngĩinx Inc được thành lập với trụ sở đầu tiên tại San Francisco, California, USA

2.1.2 Tinh ndng cua NGINX

- Nhimg tinh nang cha NGINX

Trang 7

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

Phuc vu tap tin tinh (static files) va lap chi muc tap tin

Tang toc 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, va cac may chu memcached

Kién trac modular, tăng tốc độ nap trang bang nén gzip ty déng

Hỗễ tro ma hoa SSL va 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) dung regular expressions

Han ché ty 16 dap img truy van

Giới hạn số kết n6i d6ng thoi hoac truy van tir | dia chi

Khả năng nhúng mã PERL

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

Hỗ trợ WebSockets

Hỗ trợ truyền tải file FLV va MP4

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

- - 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-MDS;

Trang 8

sudo apt-get update

=> 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 cai dat:

sudo nginx -v

nginx version: nginx/1.18.2

> Webserver mdi sé duoc cai đặt tại /etc/nginx/ Nếu bạn vào trong thu muc nay, 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 va thu muc sites-available

2.1.5 Cau hinh NGINX

- Nhiing thiết lập quan trọng nhất ở trong tập tin nginx.conf, mac dinh no sé nhu thé nay:

types hash max size 2048;

# server tokens off;

# server names hash bucket size 64;

# server name 1mm redirect off;

include /etc/nginx/mime.types;

default_type application/octet-stream;

Trang 9

access_log /var/log/nginx/access.log;

error_log /var/log/nginx/error.log;

gzip on;

gzip disable "msie6";

# gzip vary on;

# gzip _proxied any;

# gzip comp level 6;

- _ Nhiều thứ trong tệp tin này có thê tính chỉnh đự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: Day 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: Day là những tệp tin ma NGINX sé str dụng dé log bat ky 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: Day là các thiết lập nén GZIP của các NGINX reponse Tinh nang nay co 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, no là mức nén và nằm trong khoảng từ l 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à

Trang 10

không đáng kề, vì nó cần sử dụng nhiều CPU hon 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 điên kết tượng trưng) tới thư

mục /etc/nginx/sites- -enabled (ban cũng có thé copy chung 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 đố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 Thư mục site-available bao gồm các cầu hình cho các host ảo (virtual host) Nó cho phép web server có thê cầu hình cho nhiều trang web với các cầu hình riêng biệt Các trang web trong thư mục không live và chỉ được cho phép nếu chúng ta

tạo một symlink tới thư mục sifes-enabled

Bạn có thể tạo một tệp tin mới cho ứng dụng của mình hoặc chỉnh sửa một tệp tin

mặc định Một cầu hình thông thường sẽ như dưới đây:

Trang 11

location /remoteapp {

}

proxy set header X-Forwarded-For $proxy_add x forwarded _for;

proxy_pass http://remoteAPIServer/;

location /api/v1/ {

proxy_pass https://remoteAPIServer/api/v1/;

proxy_http version 1.1;

proxy_set header Upgrade $http_upgrade:

proxy_set header Connection ‘upgrade’;

proxy_set header Host $host;

proxy_cache bypass $http upgrade:

proxy_redirect http:// https://;

Gidng nhu nginx.conf, no cing str dung khai niém cac ngit canh long nhau (va tat

cả cũng được lồng trong ngữ cảnh HTTP CỦA nginx.conf, vì thế chúng cũng kế

thừa mọi thứ từ nó)

Ngữ cảnh server định nghĩa một server ảo đề xử lý cac request tir client của bạn

Bạn có thê có nhiều khối server, và NGINX sẽ chọn một trong số chúng dựa trên các chỉ thị listen và server name

Trong một khối server, chúng ta định nghĩa nhiều ngữ cảnh locafion được sử dụng

đề quyết định cách xử lý các request từ client Bất cứ khi nào một request đến, NGINX sẽ thử khớp URI tới một trong số các định nghĩa location và xử lý nó cho

« - pF0Xy_ pass sẽ gửi request toi mot proxy server cy thé

« rewrite sé viet lai URI toi dya trén mét regular expression đê một khôi location

có thê xử lý nó

Ngữ cảnh upstream định nghĩa một pool của các server cái NGINX sẽ ủy quyền các request tới Sau khi chung ta tao một khôi upstream và định nghĩa một server bên trong nó chúng có thê tham chiêu nó băng tên bên trong các khoi location

Trang 12

Thêm nữa, một ngữ cảnh upstream có thê có nhiều server được gán trong nó vì răng NGINX sẽ làm một vài load balancing khi ủy quyên cac request

Các yêu cầu gửi tới máy chủ sử dụng HTTP còn được gọi tat la HTTP request

Do được cài đặt trên web server (phân cứng) nên Apache hay được gọi là web server hay HTTP server Khi sử dụng thuật ngữ web server, chúng ta hiệu rằng người nói đang đề cập tới góc độ phần mềm

2.2.2 Apache và những web server khác

2.2.2.1 Apache vs NGINX

Ngmx, là một ứng dụng web server được phát hành năm 2004 Ngày nay, no đã phô biến rất nhiều trong giới lập trình web Nginx được tạo đề xử lý các vẫn đề được gọi là c[0k problem (10,000 connections), có nghĩa là web server sử dụng threads đề xử lý truy vấn của khách không thê thực hiện được hơn 10,000 kết nối cùng lúc

Vì Apache sử dụng cầu trúc dang thread, chu so htru cac website nang co traffic lớn sẽ gặp phải vân đề hiệu xuất Nginx là một trong các web server có thê xử lý vấn đề c10k và có lẽ là phần mềm thành công nhất làm việc này

Nginx co kién trúc xử lý dạng “sự kiện” (event) không phải tạo process mới cho mỗi truy vấn Thay vào đó, nó xử lý truy vấn trong một thread duy nhất Master process sẽ quản lý nhiều worker processes mà thực sự quản lý việc xử lý truy vấn Dạng quản lý sự kiện như vậy của Nginx phân tán truy vấn một cách hiệu quả đề đạt hiệu quả quản lý tốt hơn

Nếu ban co m6t website co traffic lon, Nginx la Iya chon toi ưu, VÌ nó có thê xử lý nhiều tiến trình với tài nguyên thấp nhất có thê Không phải ngâu nhiên mà nhiều website lớn như Netflix, Hulu Pinterest, Airbnb đều đang sử dụng nó

Tuy nhiên, đối với những doanh nghiệp vừa và nhỏ, Apache tỏ ra hiệu quá hơn Nginx, vi no dé cau hinh hon, nhiều modules hơnv à là một môi trường thân thiện

cho người mới bắt đầu hơn

2.2.2.2 Apache Tomcat

Tomeat là một web server cũng được phát trién boi Apache Software Foundation,

vì vậy tên chính thức của nó là Apache Tomeat Nó cũng là một server HTTP, tuy nhiên, nó hỗ trợ mạnh cho ứng dụng Java thay vì website tĩnh Tomecat có thê chạy nhiéu ban Java chuyén biét nhu Java Servlet, JavaServer Pages (JSP), Java EL, va WebSocket

Tomcat duge tao dac biét riêng cho Java apps, mac du Apache la vẫn là một server

HTTP Bạn có thể sử đụng Apache với nhiều ngôn ngữ lập trình khác (PHP, Pvython, Perl, vâng vâng.) với sự giúp đỡ của module Apache phù hợp (mod_ php, mod _ python, mod_perl, etc.)

Ngày đăng: 22/01/2025, 15:14