cuốn sách gpt4 ai đã làm

Asp.netCore

In lại Tác giả: Sahara Thời gian cập nhật: 25-12-2024 16:47:52 56 4
mua khóa gpt4 Nike

Lời nói đầu

Một đồng nghiệp đã hỏi tôi cách sử dụng RateLimiting trong Asp.netCore. các bước sau:

  1. Đăng ký chính sách trên RateLimiterOptions và ghi nhớ PolicyName tương ứng với chính sách
  2. Add phần mềm trung gian UseRateLimiter() vào web ứng dụng
  3. Đánh dấu [EnableRateLimiting(policyName)] trên Hành động tương ứng với api

Nửa giờ sau, đồng nghiệp của tôi nói rằng anh ấy sẽ chọn cho tôi một đánh giá không tốt về chức năng RateLimiter của anh ấy, bởi vì anh ấy phải viết một danh sách chính và công việc đó thậm chí còn khiến anh ấy phải đau đầu.

Làm cho tỷ lệ giới hạn công việc trở nên đơn giản hơn

Tôi đã thực hiện RateLimiting trên một cổng dựa trên Yarp. dịch vụ sang cổng để sử dụng cổng phụ định tuyến. có thể định cấu hình dựa trên Điểm cuối nhưng việc sử dụng rất linh hoạt. chúng tôi là cách để giảm khối lượng công việc hiện tại của đồng nghiệp của tôi trong một ứng dụng sử dụng Web duy nhất.

Bộ giới hạn điện được quy định

Nếu chúng ta tạo thuộc tính sau:

  • [RateLimiter.Concurrency(permitLimit: 10)]
  • [RateLimiter.FixedWindow(permitLimit: 10, windowSeconds: 60)]
  • [RateLimiter.SlidingWindow(permitLimit: 10, windowSeconds: 60, SegmentsPerWindow: 5)]

Thời gian phát triển của anh ấy ngắn, mã hóa rất dễ đọc và anh ấy đã tiết kiệm được số lượng mã hóa để phát triển chính sách bằng tay.

Nguồn được phân tích bổ sung của hiện tại giới hạn đơn vị

Một đồng nghiệp cho biết trong số nhiều giao diện của anh ấy, rất ít giao diện yêu cầu giới hạn dòng điện tổng thể và hầu hết tất cả đều yêu cầu giới hạn dòng điện chi tiết hơn:

  1. Đối với thông tin đăng nhập giao diện, tên người dùng có giá trị của json đối tượng trong nội dung yêu cầu cần được sử dụng hiện tại giới hạn đơn vị.
  2. Giao diện truy cập mật khẩu được yêu cầu hiện tại giới hạn vị trí cho người dùng tên giá trị trong tuyến yêu cầu.
  3. Một giao diện khác đã được phát triển khai báo xác thực danh tính người dùng cần sử dụng ID người dùng có giá trị làm đơn vị giới hạn at.
  4. xx giao diện đặc biệt cần sử dụng IP có giá trị của người yêu cầu làm đơn vị giới hạn hiện tại
  5. Giao diện yy cần lấy giá trị yy từ Biểu mẫu dưới dạng đơn vị giới hạn hiện tại.
  6. Giao diện zz cần lấy zz giá trị từ Tiêu đề làm đơn vị giới hạn hiện tại.
  7. HttpContext

Vì vậy, chúng tôi đã tạo thêm một số Thuộc tính để xử lý các yêu cầu.

  1. [RateLimiterUnit.FromBody(unitName: "$.userName")]
  2. [RateLimiterUnit.FromRoute(unitName: "userName")]
  3. [RateLimiterUnit.FromUser(unitName: ClaimTypes.NameIdentifier)]
  4. [RateLimiterUnit.FromRemoteIPAddress]
  5. [RateLimiterUnit.FromForm(unitName: "yy")]
  6. [RateLimiterUnit.FromHeader(unitName: "zz")]

Sau đó, cung cấp giao diện IRateLimiterUnitMetadata để cho phép nó khai báo tùy chỉnh logic.

lớp công khai YourRateLimiterUnitAttribution: Thuộc tính, IRateLimiterUnitMetadata { public ValueTask GetUnitAsync(HttpContext context) { Throw NotImplementedException new() } };

Cho phép hoạt động RateLimiting

Các thuộc tính nêu trên hiện chỉ tồn tại trong lý tưởng của chúng ta và chúng ta cần biến chúng thành hiện thực.

Chúng tôi cần phát triển chính sách, lấy điểm cuối cùng của yêu cầu hiện tại trong chính sách, trích xuất thuộc tính mà chúng tôi được xác định ở trên siêu dữ liệu của Điểm cuối cùng và tạo dựa trên RateLimitPartition dựa trên mô tả của thuộc tính.

Đăng ký chính sách duy nhất này trong RatelimiterOptions, sau đó thêm danh sách chính của nó vào siêu dữ liệu của Điểm cuối cùng bằng cách sử dụng sử dụng EnableRateLimitingAttribution.

Cuối cùng, bằng cách sử dụng tiêu chuẩn phần mềm trung gian UseRateLimiter() của Asp.netCore, chúng ta có thể chạy tốc độ giới hạn của chính mình.

cuối cùng

Dự án này là nguồn mở, bất kể bạn có sử dụng nó trong công việc của mình hay không, bạn đều có thể thử những ý đó Ý tưởng thú vị trong đó.

Cuối cùng, bài viết này hướng dẫn cách sử dụng Thuộc tính để mô tả giới hạn hiện tại trong Asp.netCore end at here. Nếu bạn muốn biết thêm về cách sử dụng Thuộc tính để mô tả giới hạn hiện tại trong Asp.netCore, vui lòng tìm kiếm bài viết CFSDN hoặc duyệt qua các bài viết liên quan bạn sẽ hỗ trợ blog của tôi trong tương lai .

56 4 0
Bài viết khuyến nghị: GaussDB (DWS) GaussDB (DWS)
Bài viết khuyến nghị: Format thuật toán cho GLSLShader ( LALR cú pháp phân tích)
Bài viết khuyến nghị: "Thú vị với Streamlit"--tải lên và tải xuống tệp
Bài viết khuyến nghị: 3 vector tìm kiếm
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress