Thực Hiện Dịch Vụ Web Và Quản Lý API Trên AZURE
- 11-07-2024
- Toanngo92
- 0 Comments
Mục lục
Làm việc với Azure Logic Apps và API Apps
Tính toán vô dùng trong Microsoft Azure cung cấp sự trừu tượng hóa của máy chủ, cơ sở hạ tầng và hệ điều hành cho các nhà phát triển. Với tính toán vô dùng, nhà phát triển loại bỏ sự quản lý và cấp phát máy chủ, tập trung vào phát triển ứng dụng của họ. Một số sản phẩm và dịch vụ có sẵn trong tính toán vô dùng bao gồm Azure Logic Apps, Azure Functions, và nhiều hơn nữa.
Azure Logic Apps là gì?
Azure Logic Apps là một dịch vụ đám mây nhằm đơn giản hóa quá trình tạo các luồng công việc tự động có khả năng mở rộng. Một chuỗi các bước hoặc nhiệm vụ được gọi là luồng công việc. Azure Logic Apps cung cấp một trình thiết kế hình ảnh để mô hình hóa và tự động hóa quy trình thành luồng công việc. Nó có thể tích hợp dữ liệu và ứng dụng thông qua hệ thống trên nơi và dịch vụ đám mây.
Logic Apps giúp đơn giản hóa quá trình thiết kế và tạo ra các giải pháp có khả năng mở rộng phù hợp cho tích hợp dữ liệu, tích hợp ứng dụng, tích hợp ứng dụng doanh nghiệp (EAI), và giao tiếp doanh nghiệp-với-doanh nghiệp (B2B). Nó có thể triển khai trong đám mây, trên nơi và nếu cần thiết, cả hai.
Logic Apps có thể được sử dụng để tự động hóa các khối công việc như:
- Quản lý và định tuyến đơn hàng thông qua các dịch vụ đám mây và hệ thống trên nơi.
- Thông báo các sự kiện xảy ra trong các ứng dụng, hệ thống và dịch vụ qua email sử dụng Office 365.
- Theo dõi khi các bản ghi được tạo hoặc thay đổi trong Salesforce.
Các nhà phát triển có thể lựa chọn từ nhiều dịch vụ để xây dựng các giải pháp tích hợp doanh nghiệp với Azure Logic Apps. Một số dịch vụ này bao gồm Azure Service Bus, functions, và lưu trữ; Office 365, Salesforce, Dynamics, SQL Server, Oracle, chia sẻ tệp và nhiều hơn nữa.
Mỗi kết nối cung cấp một tập hợp các hoạt động có thể được phân loại là ‘hành động’ và ‘kích hoạt’. Để tạo các Logic Apps có thể an toàn truy xuất và quản lý dữ liệu theo thời gian thực, các kết nối cung cấp các hoạt động, kích hoạt, hoặc cả hai. Do đó, các kết nối giúp người dùng kết nối tài khoản của họ và sử dụng một tập hợp các hành động và kích hoạt sẵn có để xây dựng ứng dụng và luồng công việc của họ, từ đó tăng năng suất.
Actions | Triggers |
Hành động là các thay đổi được thực hiện bởi người dùng. Ví dụ, một nhà phát triển muốn xóa dữ liệu trong cơ sở dữ liệu SQL. Để làm điều này, nhà phát triển có thể sử dụng một hành động. Hành động tương ứng trực tiếp với các thao tác. | Một số kết nối có một kích hoạt. Điều này có nghĩa là một sự kiện từ kết nối sẽ kích hoạt một Logic App và chuyển dữ liệu nào đó làm phần của kích hoạt. |
Mọi logic app bắt đầu với một kích hoạt (trigger), bước đầu tiên trong quy trình làm việc của logic app và truyền một số dữ liệu như một phần của kích hoạt đó. Nói cách khác, kích hoạt luôn là bước đầu tiên trong một logic app. Một số kết nối cung cấp kích hoạt có thể thông báo cho ứng dụng khi các sự kiện cụ thể xảy ra. Một số ví dụ về các kích hoạt phổ biến như sau:
- Tái diễn một tác vụ – chạy mỗi giờ
- Khi một yêu cầu HTTP được nhận
- Khi một mục được thêm vào hàng đợi
- Khi một email được nhận
Khi một sự kiện được nhận, nó khiến logic app chạy và các hành động trong quy trình làm việc được thực thi. Các nhà phát triển cũng có thể truy cập dữ liệu từ kích hoạt trong suốt quy trình làm việc.
Các Dịch Vụ trong Azure Logic Apps
Logic apps và Enterprise Integration Pack (EIP) cung cấp các tính năng sau có thể được sử dụng để triển khai và mở rộng các kịch bản tích hợp tiên tiến:
- Azure Service Bus
- Azure Functions
- Azure API Management
Custom API Apps
Kết nối (connectors) chủ yếu là các Web API, sử dụng định dạng dữ liệu JSON cho trao đổi dữ liệu, định dạng siêu dữ liệu swagger cho tài liệu, và REST cho các giao diện cắm được (pluggable interfaces). Kết nối là các REST API; chúng tương tác qua các endpoint HTTP. Do đó, để xây dựng kết nối, bất kỳ ngôn ngữ nào như Java, .NET, hoặc Node.js đều có thể được sử dụng.
Azure Logic Apps cung cấp hơn 100+ kết nối tích hợp sẵn có thể được sử dụng trong quy trình làm việc của logic app. Tuy nhiên, có thể có các tình huống mà nhà phát triển phải gọi API và dịch vụ không có sẵn dưới dạng kết nối. Trong những trường hợp như vậy, các API ứng dụng tùy chỉnh (custom API apps) có thể được tạo để sử dụng trong logic apps.
Sau đây là một số lý do tại sao các nhà phát triển có thể cần tạo các API tùy chỉnh để gọi từ các quy trình làm việc của logic app:
- Mở rộng các quy trình tích hợp dữ liệu và hệ thống hiện có.
- Giúp người tiêu dùng sử dụng dịch vụ để xử lý các tác vụ chuyên biệt và cụ thể.
- Phát triển phạm vi và sử dụng cho dịch vụ.
Có thể lưu trữ các API tùy chỉnh này trên Azure App Service, một nền tảng như dịch vụ (PaaS) cung cấp một phương pháp lưu trữ có khả năng mở rộng cao. Nó cũng cung cấp một trong những phương pháp đơn giản và đáng chú ý nhất để lưu trữ API. Để xử lý việc hoạt động của các API tùy chỉnh với logic apps, API tùy chỉnh có thể chỉ định các hành động để thực hiện các tác vụ cụ thể trong các quy trình làm việc của logic app. Ngoài ra, API tùy chỉnh có thể hoạt động như một trigger; nó có thể bắt đầu một quy trình làm việc của logic app nếu một sự kiện hoặc dữ liệu mới thỏa mãn một điều kiện cụ thể.
Thiết Kế và Triển Khai Azure Functions và WebJobs
Azure Functions là một thành phần cốt lõi của điện toán không máy chủ trong Azure. Đây là một dịch vụ tính toán không máy chủ giúp các nhà phát triển chạy mã theo yêu cầu mà không cần phải chuẩn bị hoặc quản lý cơ sở hạ tầng. Azure Functions hữu ích để chạy các đoạn mã nhỏ một cách dễ dàng trên đám mây. Các nhà phát triển có thể viết mã cụ thể để giải quyết một vấn đề cụ thể và không cần quan tâm đến cơ sở hạ tầng cần thiết để chạy nó. Bằng cách thêm Functions, các nhà phát triển có thể tăng năng suất của mã phát triển. Lựa chọn ngôn ngữ là tùy thuộc vào nhà phát triển. Ví dụ, các nhà phát triển có thể chọn Java, Node.js, F#, C#, hoặc PHP. Một nhà phát triển chỉ trả tiền cho thời gian mà mã chạy và để Azure quản lý khả năng mở rộng.
Một tính năng khác của nền tảng Azure hoạt động tương tự như Functions là WebJobs. Tính năng WebJobs của Azure App Service cho phép chạy một script hoặc chương trình trong ngữ cảnh giống như một Web app, mobile app, hoặc App Service Web app. WebJobs cho phép các nhà phát triển chạy các chương trình hoặc script trong trang web của họ như các quy trình nền. Nó chạy và mở rộng như một phần của Azure Websites. WebJobs SDK framework đã được thiết kế cho WebJobs. Nó giúp dễ dàng tạo mã đã được viết như một phản hồi đối với các sự kiện trong các dịch vụ Azure. Ví dụ, việc tạo một hình ảnh thumbnail có thể là một phản hồi đối với việc tạo một blob hình ảnh trong Azure storage. WebJobs SDK có thể được triển khai vào một WebJob, vì nó chạy dưới dạng một ứng dụng console .NET.
Lý tưởng nhất, WebJobs và WebJobs SDK nên hoạt động cùng nhau; tuy nhiên, chúng cũng có thể hoạt động riêng rẽ. Một WebJob có khả năng chạy bất kỳ script hoặc chương trình nào đang chạy trong sandbox của App Service. Tương tự, một ứng dụng console WebJobs SDK có khả năng chạy ở bất cứ nơi nào các ứng dụng console đang chạy, ví dụ, trên các máy chủ on-premises.
Tạo Azure Functions
Các bước sau đây chỉ ra cách sử dụng Azure Functions để tạo một chức năng không máy chủ chạy dựa trên lịch trình đã định:
Bước 1: Đăng nhập vào Azure Portal và mở Desktop.
Bước 2: Nhấp vào + Create a resource từ góc trên cùng của menu bên trái. Điều này sẽ tải menu Marketplace.
Bước 3: Chọn Compute từ menu Marketplace và Function App từ menu con. Hình hình bên dưới hiển thị tùy chọn tạo Function app.
Bước 4: Thêm các thuộc tính, như được hiển thị trong Hình bên dưới. Tạo một Azure Function sẽ xác nhận tên và họ để chuyển đổi thành tên đầy đủ. Khi tất cả thông tin cần thiết đã được cung cấp, nhấp vào Create.
Bước 5:
Sau khi chức năng được tạo thành công, truy cập All Resources từ menu bên trái, tìm chức năng và nhấp để xem bảng điều khiển của chức năng. Hình bên dưới hiển thị các thuộc tính của Azure Function.
Bước 6:
Trong bảng điều khiển của chức năng, từ menu bên trái, nhấp vào liên kết Functions + để tạo một chức năng mới.
Bước 7:
Chọn Visual Studio Code để triển khai mã trong VS Code. Trong trường hợp này, các nhà phát triển sẽ cần cài đặt các phần mở rộng phù hợp để sử dụng Azure Functions với Visual Studio Code. Liên kết tải phần mở rộng: VS Code Azure Functions Extension.
Ngoài ra, các nhà phát triển có thể sử dụng Visual Studio 2022 IDE để sử dụng các mẫu tạo Azure Functions. Hình bên dưới hiển thị mẫu trong Visual Studio IDE.
Hai hình bên dưới minh họa các bước trong Wizard giúp tạo chức năng trong Visual Studio IDE.
Bước 10:
Nhấp vào Create.
Do đó, bằng cách làm theo các hướng dẫn từng bước này, các nhà phát triển có thể tạo và triển khai Azure Function đầu tiên của họ.
Thiết kế và Triển khai Dịch vụ Web dựa trên Service Fabric
Azure Service Fabric cung cấp một nền tảng hệ thống phân tán, đơn giản hóa việc đóng gói, triển khai và quản lý các container và microservices đáng tin cậy và có khả năng mở rộng. Ngoài ra, Service Fabric tập trung vào các vấn đề quan trọng mà các nhà phát triển và quản trị viên phải đối mặt trong việc phát triển và quản lý các ứng dụng gốc đám mây.
Các vấn đề liên quan đến hạ tầng phức tạp có thể được tránh với sự trợ giúp của Azure Service Fabric. Bằng cách này, các nhà phát triển cũng như quản trị viên có thể tập trung vào việc triển khai các workload có nhu cầu cao và nhiệm vụ quan trọng, làm cho chúng trở nên đáng tin cậy, có khả năng mở rộng và dễ dàng xử lý. Service Fabric trình bày như một nền tảng của thế hệ tương lai để xây dựng và xử lý các ứng dụng quy mô đám mây, đẳng cấp doanh nghiệp, và tier-1 chạy trong các container.
Ứng dụng Microservices
Azure Service Fabric hỗ trợ xây dựng và quản lý các ứng dụng đáng tin cậy và có khả năng mở rộng. Những ứng dụng này bao gồm các microservices chạy ở mật độ cao trên các máy thuộc một cụm chia sẻ, còn gọi là cluster.
Service Fabric cung cấp một runtime nhẹ và ở mức cao, có thể sử dụng để tạo ra các microservices không trạng thái, phân tán và có trạng thái có thể chạy trong các container. Ngoài ra, nó cung cấp khả năng quản lý ứng dụng chi tiết để cung cấp, giám sát, triển khai, nâng cấp, vá lỗi và xóa các ứng dụng đã triển khai, bao gồm cả các dịch vụ container hóa.
Nhiều dịch vụ của Microsoft được hỗ trợ bởi Service Fabric, như Azure SQL, Microsoft Power BI, Azure Cosmos DB, Azure IoT Hub, Azure Event Hubs, Skype for Business và nhiều dịch vụ Azure cốt lõi khác. Service Fabric được thiết kế để xây dựng các dịch vụ gốc đám mây, bắt đầu nhỏ và khi cần thiết có thể phát triển lên quy mô lớn để đáp ứng một số lượng lớn máy móc.
Dịch vụ Container và Điều phối
Trong Service Fabric, với vai trò là người điều phối container của Microsoft, các microservices được triển khai trong các máy thuộc một cụm. Có nhiều cách để phát triển microservices bằng cách sử dụng các mô hình lập trình của ASP.NET Core và Service Fabric. Thực chất, hai dịch vụ có thể được kết hợp dưới dạng dịch vụ và quá trình cho các container của cùng một ứng dụng. Là một người điều phối container, Service Fabric là lựa chọn tốt nhất khi yêu cầu chỉ triển khai và quản lý các container.
Quản lý Trạng thái của Microservices trong Service Fabric
Các ứng dụng có thể được tạo ra bằng Service Fabric, bao gồm các container hoặc microservices. Có các microservices không trạng thái, không có trạng thái có thể thay đổi bên ngoài yêu cầu và phản hồi của nó. Ví dụ là các proxy web và cổng giao thức, và các vai trò công nhân của Azure Cloud Services.
Ngược lại, các microservices có trạng thái có thể có một trạng thái có thể thay đổi và xác thực bên ngoài yêu cầu và trong phản hồi từ dịch vụ. Ví dụ là các cơ sở dữ liệu, tài khoản người dùng, thiết bị, hàng đợi và giỏ hàng. Gần đây, nhiều ứng dụng của Internet sử dụng kết hợp các microservices có trạng thái và không trạng thái.
Các dịch vụ có trạng thái có thể được tạo ra bằng cách sử dụng các dịch vụ container hóa có trạng thái hoặc các mô hình lập trình tích hợp sẵn. Tâm điểm của Service Fabric là làm điều này.
Bảo mật Dịch vụ Web Sử dụng Chứng chỉ, Azure Active Directory và OAuth
Để bảo vệ các ứng dụng Web, ứng dụng API, backend ứng dụng di động và chức năng Azure, các nhà phát triển có thể sử dụng dịch vụ App của Azure. Ngoài ra, các tính năng tích hợp của dịch vụ App cung cấp thêm bảo mật. Dịch vụ App bao gồm các thành phần nền tảng như Azure VMs, kết nối mạng, lưu trữ, các framework Web, và các tính năng tích hợp và quản lý. Các thành phần này có bảo mật mạnh mẽ và chủ động, với việc kiểm tra thường xuyên để đảm bảo tuân thủ.
Bảo mật Sử dụng Chứng chỉ
Đối với một ứng dụng trên Website Azure cần chứng chỉ, các nhà phát triển có thể tải chứng chỉ của họ lên Website Azure trong bộ sưu tập chứng chỉ. Sau đó, nó có thể được sử dụng trong ứng dụng Web từ cửa hàng chứng chỉ cá nhân của trang web.
Azure Active Directory
Khi tạo ứng dụng để cung cấp quyền truy cập vào các tài nguyên được bảo vệ, các nhà phát triển nên biết các phương pháp để tránh truy cập trái phép. Để làm điều này, có thể sử dụng Azure Active Directory (Azure AD). Đây là một cách đơn giản và mở để bảo vệ một API Web bằng cách sử dụng token truy cập OAuth 2.0 chỉ với vài dòng mã. Các nhà phát triển có thể sử dụng middleware OWIN do cộng đồng điều khiển, Microsoft triển khai trong .NET Framework, trong các ứng dụng Web ASP.NET.
Tổng quan về các bước để đạt được điều này:
- Đại diện cho API và đăng ký một ứng dụng (backend-app) trong Azure AD.
- Đại diện cho một ứng dụng khách để gọi API và đăng ký một ứng dụng khác (client-app) trong Azure AD.
- Cấp quyền cho phép client-app gọi backend-app, trong Azure AD.
- Cấu hình Bảng điều khiển nhà phát triển để sử dụng ủy quyền người dùng OAuth 2.0.
- Thêm chính sách validate-jwt để xác thực token OAuth cho tất cả các yêu cầu đến.
Bảo mật Sử dụng OAuth
OAuth 2.0 được hỗ trợ bởi nhiều API. Nó giúp bảo mật API và đảm bảo rằng quyền truy cập chỉ có sẵn cho những người dùng đã xác thực, và chỉ trong phạm vi mà họ được phép truy cập tài nguyên. Để sử dụng các API như vậy với bảng điều khiển nhà phát triển tương tác của quản lý API Azure, dịch vụ cho phép người dùng cấu hình phiên bản dịch vụ của họ để làm việc với API có hỗ trợ OAuth 2.0. Cấu hình của từng nhà cung cấp OAuth 2.0 có thể khác nhau mặc dù có các bước tương tự để làm theo. Ngoài ra, các thông tin cần thiết để cấu hình OAuth 2.0 trong phiên bản dịch vụ quản lý API là tương tự nhau.
Cách Cung cấp một Chức năng API
Azure Functions là nền tảng lý tưởng cho phát triển quy mô nhỏ. Nó cung cấp một loạt các loại kích hoạt và ràng buộc kết nối dữ liệu đầu vào và đầu ra, làm cho việc lập trình trở nên dễ dàng. Azure Functions có thể được lưu trữ trên một kế hoạch tiêu thụ không máy chủ mà tự động mở rộng và chỉ tính phí khi chức năng của bạn được sử dụng. Điều này đơn giản hóa quá trình xây dựng API. Mỗi lần gọi API được xử lý bởi một chức năng tự động mở rộng và kích hoạt nó. Nếu người dùng sử dụng Functions cho API, họ chỉ trả cho những gì họ sử dụng.
Một trong những điều kiện tiên quyết chính để tạo API không máy chủ bằng Azure là một tài khoản Azure. Trong trường hợp người dùng không có tài khoản thì họ có thể tạo một tài khoản Azure miễn phí/ trả phí để bắt đầu tạo API không máy chủ.
Xây dựng một API không máy chủ
Các bước để tạo một chức năng Azure trong cổng Azure và sau đó chuyển đổi nó thành một API như sau:
Đầu tiên, nhấp vào nút Tạo một tài nguyên là nút dấu cộng ở góc trên cùng bên trái.
Tiếp theo, tìm kiếm Functions, chọn ứng dụng Function, và sau đó, nhấp vào Tạo.
Thực hiện các hành động còn lại như đã liệt kê ở đây:
Tạo Ứng dụng Function
Ứng dụng Function cho phép các nhà phát triển nhóm các chức năng lại như một đơn vị logic để quản lý tài nguyên, triển khai và chia sẻ dễ dàng hơn. Nó cho phép các nhà phát triển chạy mã trong một môi trường không máy chủ mà không cần tạo VM hoặc xuất bản ứng dụng Web.
Tạo Azure Function trong cổng Azure
Sau khi tạo Ứng dụng Function, điều hướng đến nó trên Cổng Azure. Ứng dụng Function bao gồm một hoặc nhiều chức năng. Để tạo một chức năng mới, điều hướng đến blade Function trong Ứng dụng Function trên cổng Azure.
Để thêm một chức năng, nhấp vào Tạo. Một blade Tạo chức năng mới sẽ mở ra. Thực hiện các hành động sau:
Hình bên dưới mô tả quá trình tạo chức năng trong portal.
Chức năng sẽ được mở trong portal sau khi được tạo. Các nhà phát triển có thể chuyển đổi nó thành một API để thử nghiệm.
- Nhấp vào menu Tích hợp trong Chức năng trên cổng Azure. Các kích hoạt, đầu vào, và đầu ra sẽ được hiển thị. Kích hoạt HTTP là kích hoạt cho chức năng.
- Để chỉnh sửa kích hoạt, nhấp vào HTTP (req).
Mặc định, chức năng sẽ được kích hoạt bằng cách điều hướng đến điểm cuối và thực hiện một hoạt động HTTP như GET hoặc POST. Đây là hành vi của hầu hết các API. Tuy nhiên, để biến nó thành một REST API, người dùng có thể thay đổi cách gọi các yêu cầu HTTP tại chức năng.
a) Để thêm một mẫu Route vào chức năng, nhập ‘customer/{customerName}‘ và kích hoạt HTTP bây giờ sẽ được hiển thị dưới dạng functionurl/api/customer.
b) Nhấp vào Save để lưu các thay đổi.
Hình bên dưới cho thấy cách chỉnh sửa kích hoạt trong cổng Azure.
3. Để chỉnh sửa mã của Chức năng, nhấp vào menu Code + Test Menu. Trình chỉnh sửa mã trong cổng sẽ được hiển thị.
Mã Chức năng được tự động tạo bằng mẫu kích hoạt HTTP Trigger tiêu chuẩn.
Hai thay đổi cần thiết để thay đổi mã này như sau:
Phương thức Run
sẽ bao gồm một chuỗi customerName
để bắt tham số customerName
của API route. Chuỗi name
bây giờ sẽ đến từ tham số customerName
.
Đoạn mã bên dưới cho thấy mã cần được thêm vào trong chức năng.
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
public static async Task<IActionResult> Run(HttpRequest req, string customerName, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = customerName;
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
string responseMessage = string.IsNullOrEmpty(name) ?
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." :
$"Hello, {name}. You are a customer.";
return new OkObjectResult(responseMessage);
}
4. Để biên dịch các thay đổi và lưu mã, nhấp vào Lưu.
5. Để mở cửa sổ kiểm tra, chọn Test/Run.
6. Bây giờ, điền giá trị cho tham số Query customerName
.
7. Để thực thi mã, nhấp vào Run.
8. Nếu cuộc gọi thành công, giá trị nhập vào sẽ được hiển thị trong tab Output.
Hình bên dưới cho thấy cách chỉnh sửa mã và kiểm tra trong cổng Azure.
9. Nhấp vào tab Get Function URL và sao chép URL để gọi Function giống như một API.
10. Trong cửa sổ trình duyệt mới, dán URL và thay thế {customerName}
ở cuối URL bằng một giá trị. URL sẽ được hiển thị như sau: https://functionappname.azurewebsites.net/api/customer/mynewcustomer Khi giá trị được gửi đi, giá trị của tham số customer sẽ được hiển thị trong kết quả. Hình bên dưới cho thấy cách gọi một function như một API trong cổng Azure.
Để tạo một API hoàn chỉnh, có thể tạo nhiều functions có mục đích riêng và có thể được tiếp cận thông qua các URL khác nhau.
Kiểm tra API
Kiến trúc Serverless làm cho việc phục vụ logic kinh doanh trở nên đơn giản, nhưng đôi khi, một số đặc điểm có thể tạo ra thách thức trong quá trình kiểm tra.
Một số thách thức như sau:
- Kiến trúc Serverless là một liên hợp các dịch vụ phân tán. Nó phải được kiểm tra cả độc lập và kết hợp với nhau.
- Kiến trúc Serverless phụ thuộc vào Internet và các dịch vụ đám mây. Những dịch vụ này đôi khi khó khớp với môi trường cục bộ.
Kiến trúc Serverless có các luồng công việc bất đồng bộ và dựa trên sự kiện mà khó mô phỏng hoàn toàn. Các nguyên tắc để vượt qua các thách thức như sau:
- Viết logic kinh doanh sao cho độc lập với nhà cung cấp Function as a Service (FaaS). Điều này làm cho nó độc lập với nhà cung cấp, có thể tái sử dụng và dễ dàng kiểm tra.
- Bằng cách viết logic kinh doanh riêng lẻ, dễ dàng viết các Unit Test truyền thống để đảm bảo logic hoạt động đúng.
- Viết kiểm tra tích hợp để xác minh tích hợp hoạt động đúng với các dịch vụ khác.
Tạo Phiên bản
Phiên bản cho phép người dùng thực hiện các thay đổi vào các API một cách kiểm soát và an toàn.
Để tạo một phiên bản mới để thực hiện các thay đổi:
- Bước 1: Đi tới nhóm tài nguyên.
- Bước 2: Chọn nhóm tài nguyên và nhấp vào dịch vụ Quản lý API – API Management service.
- Bước 3: Nhấp vào APIs trong phần APIs.
- Bước 4: Chọn API mục tiêu và sau đó, nhấp vào Add Revision.
- Bước 5: Nhập mô tả.
- Bước 6: Nhấp vào Create
- Bước 7: Từ danh sách thả xuống phía trên, chọn phiên bản mục tiêu và thực hiện các thay đổi mong muốn. Tham khảo Hình bên dưới.
Xác định và Triển khai Chính sách
Chính sách Azure là một dịch vụ trong Azure, được sử dụng để tạo, chỉ định và quản lý các chính sách. Với chính sách này, các vấn đề công nghệ thông tin có thể được giải quyết và tránh được với các định nghĩa chính sách. Các chính sách đặt ra các quy tắc và hậu quả khác nhau cho các tài nguyên. Trong việc sử dụng chính sách Azure, các tài nguyên phải tuân thủ các thỏa thuận mức dịch vụ và các tiêu chuẩn doanh nghiệp.
Chính sách Azure thực hiện các kiểm tra tài nguyên và quét các tài nguyên không tuân thủ các chính sách đã tạo. Ví dụ, có thể có một chính sách cho phép chỉ kích thước SKU cụ thể của máy ảo trong tình huống cụ thể.
Chính sách Azure có thể được sử dụng để bắt buộc các chính sách cho các nhiệm vụ thường xuyên như tạo, chỉ định và quản lý chính sách trong toàn bộ tổ chức. Dưới đây là một số ví dụ:
- Một chính sách có thể được chỉ định để áp dụng điều kiện cho các tài nguyên được tạo trong tương lai.
- Một định nghĩa chiến dịch có thể được tạo, được chỉ định để theo dõi sự tuân thủ cho các tài nguyên khác nhau.
- Một tài nguyên không tuân thủ / bị từ chối có thể được giải quyết.
- Một chính sách mới có thể được triển khai trong toàn bộ tổ chức.
Xác định Giao diện API bằng cách Sử dụng Azure Portal và Swagger
Quản lý API Azure (APIM) cung cấp sự trợ giúp cho các tổ chức để xuất bản API cho các nhà phát triển nội bộ, bên ngoài và đối tác. Điều này được thực hiện để mở khóa khả năng của dữ liệu cũng như các dịch vụ. Xu hướng gần đây trong kinh doanh toàn cầu là tìm cách mở rộng hoạt động kỹ thuật số, tạo ra các kênh mới và thu hút khách hàng mới trong khi thiết lập mối quan hệ mạnh mẽ với khách hàng hiện tại.
Quản lý API cung cấp các năng lực cốt lõi để thành công trong chương trình API bằng cách tương tác với các nhà phát triển, cải thiện hiểu biết kinh doanh, bảo mật, phân tích và bảo vệ. APIM có thể được sử dụng ở phía sau để triển khai một chương trình API hoàn chỉnh dựa trên nó.
APIM cung cấp khả năng tạo cổng thông tin phát triển viên và cổng API. Điều này là an toàn, có khả năng mở rộng và sẽ hoạt động với bất kỳ API hoặc máy chủ nào. Ngoài ra, nó cũng cung cấp cái nhìn tổng quan về các API hiện có. Việc quản lý quy trình ghi danh và tài liệu là một thách thức liên tục cho các nhà phát triển API, đồng thời cung cấp trải nghiệm tích hợp đơn giản nhất cho người dùng cuối của API. APIM cung cấp một cổng thông tin phát triển viên để quản lý việc đăng ký dịch vụ. Điều này cung cấp một trải nghiệm tuyệt vời cho nhà phát triển.
Sử dụng Swagger trong Azure
Swagger là một framework mã nguồn mở mạnh mẽ được hỗ trợ bởi một hệ sinh thái công cụ đáng kể. Nó giúp xây dựng, thiết kế, tài liệu hóa và tiêu thụ các API RESTful. Swagger hoạt động như sau: Nhà phát triển nên “swagger-enable” API của họ. Điều này có thể được thực hiện trong .NET bằng cách sử dụng gói NuGet gọi là Swashbuckle. Điều này tự động tạo một tệp định nghĩa Swagger cho API trong định dạng JSON. Tệp này có thể dễ dàng truy cập với một URL trên trang của API. Các công cụ tạo mã có thể được sử dụng để đọc tệp định nghĩa Swagger cũng như tự động tạo mã SDK khách hàng trong bất kỳ ngôn ngữ được hỗ trợ nào.
Swagger tự động tạo các SDK khách hàng và tệp định nghĩa. Nó cũng tự động tạo giao diện người dùng để tìm và thử các API bằng Swagger UI. Nó là một mã nguồn mở xác định cách mô tả giao diện của một Web API trong một tệp văn bản đơn giản. Máy tính có thể đọc tệp có phần mở rộng *.yaml hoặc *.JSON và nó có thể được sử dụng để tạo mã API máy chủ thực tế cũng như mã khách. Swagger cũng hỗ trợ đảo ngược kỹ thuật hóa một API hiện tại để tạo ra một tệp Swagger JSON. Tiêu chuẩn Swagger đã được chấp nhận và đổi tên gần đây thành OpenAPI.
Quản lý Dịch vụ Đang Chạy (Sử dụng Logging, Khôi phục thảm họa và Nhiều Khu vực)
Bằng cách sử dụng các công cụ quản lý và quản trị Azure, các quản trị viên hệ thống và nhà phát triển có thể duy trì các tài nguyên an toàn và tuân thủ các quy định. Điều này được đảm bảo cả trong môi trường đám mây và trên nền tảng cục bộ. Các dịch vụ này có thể được sử dụng để giám sát cơ sở hạ tầng và ứng dụng, cập nhật ứng dụng, cung cấp và cấu hình tài nguyên, xây dựng các tài nguyên sao lưu, xây dựng khôi phục thảm họa, tự động hóa các quy trình, và nhiều hơn nữa.
Azure Logging
Trong Azure, có một danh sách toàn diện các tùy chọn kiểm tra an ninh và ghi nhật ký có thể được cấu hình. Những tùy chọn này giúp xác định những thiếu sót trong cơ chế và chính sách bảo mật.
Các nhật ký cung cấp dữ liệu để duy trì hoạt động của các ứng dụng. Do đó, việc khắc phục sự cố đã xảy ra trước đó và ngăn ngừa những sự cố mới có thể được thực hiện. Điều này giúp cải thiện hiệu suất và khả năng bảo trì của một ứng dụng. Ngoài ra, các hành động có thể được tự động hóa để không cần can thiệp thủ công. Dưới đây là các loại nhật ký Azure:
Danh mục | Mô tả | Ví dụ |
Nhật ký Kiểm soát/Quản lý | Nhật ký kiểm soát/quản lý cung cấp thông tin về các hoạt động Quản lý Tài nguyên Azure như CREATE, DELETE và UPDATE. | Các hoạt động như CREATE, DELETE và UPDATE trong Quản lý Tài nguyên Azure. |
Nhật ký Mặt phẳng Dữ liệu | Nhật ký mặt phẳng dữ liệu cung cấp chi tiết về các sự kiện diễn ra trong quá trình sử dụng tài nguyên Azure. Ví dụ bao gồm các nhật ký hệ thống sự kiện Windows, nhật ký bảo mật, nhật ký chẩn đoán qua Azure Monitor và nhật ký ứng dụng trong VM. | Các nhật ký liên quan đến việc sử dụng tài nguyên Azure, bảo mật và chẩn đoán. |
Sự kiện Đã xử lý | Sự kiện đã xử lý cung cấp thông tin về các sự kiện hoặc cảnh báo đã phân tích được xử lý thay mặt người dùng. Ví dụ bao gồm các cảnh báo từ Trung tâm Bảo mật Azure. | Các cảnh báo được xử lý bởi Trung tâm Bảo mật Azure, cung cấp thông báo bảo mật ngắn gọn. |
Khôi phục sau sự cố sử dụng nhiều vùng
Azure Site Recovery lập kế hoạch và xử lý khôi phục sau sự cố cho các máy ảo Azure, các máy chủ vật lý và cả máy ảo trên nền tảng on-premises. Việc này rất quan trọng đối với các tổ chức để bao gồm chiến lược Business Continuity and Disaster Recovery (BCDR). BCDR phải đảm bảo an toàn dữ liệu và duy trì các công việc và ứng dụng khi có sự cố dự đoán/không dự đoán xảy ra. Dịch vụ Azure Recovery hỗ trợ chiến lược BCDR như sau:
Dịch vụ Khôi phục Vùng Dịch vụ Khôi phục Vùng giúp đảm bảo liên tục kinh doanh bằng cách duy trì các công việc và ứng dụng khi có sự cố. Các công việc đang chạy trên các máy chủ vật lý và máy ảo được sao chép bởi dịch vụ khôi phục vùng từ vị trí chính đến vị trí phụ. Nếu có sự cố tại vị trí chính, sẽ chuyển sang vị trí phụ để truy cập ứng dụng. Khi vị trí chính khởi động lại, nó có thể sử dụng lại.
Việc sao chép được quản lý bởi Dịch vụ Khôi phục Vùng cho các trường hợp sau:
- Đối với các máy ảo Azure được sao chép giữa các khu vực Azure.
- Đối với các máy ảo và máy chủ vật lý trên nền tảng on-premises sao chép vào Azure hoặc một vị trí phụ khác.
Dịch vụ khôi phục vùng Azure hỗ trợ chiến lược khôi phục sau sự cố bằng cách quản lý và lập kế hoạch sao chép, chuyển đổi vị trí và chuyển trở lại của các máy on-premises và máy ảo Azure.
Các bước cấp cao để thiết lập khôi phục sau sự cố đến vùng Azure phụ cho các máy ảo Azure:
- Tạo một kho dịch vụ khôi phục
- Xác minh các thiết lập tài nguyên mục tiêu
- Thiết lập một cách truy cập ra ngoài cho các VM
- Bật sao chép cho một VM
➤ Dịch vụ Sao lưu Dịch vụ Sao lưu Azure giúp giữ dữ liệu an toàn và có thể khôi phục được bằng cách sao lưu vào Azure.
(Serverless computing trong Microsoft Azure cung cấp sự trừu tượng của máy chủ, cơ sở hạ tầng và hệ điều hành cho các nhà phát triển. Các sản phẩm và dịch vụ dưới sự tính toán serverless bao gồm Azure Logic Apps, Azure Functions, v.v.)
Versioning
Versioning (Phiên bản) API versioning (Phiên bản API) là một yếu tố quan trọng để duy trì và phát triển API theo thời gian mà không làm gián đoạn các khách hàng hiện tại. Có một số chiến lược cho việc phiên bản hóa:
Phiên bản URI (Uniform Resource Identifiers)
Bao gồm số phiên bản trong đường dẫn API (ví dụ, /api/v1/resource).
Phiên bản tham số (Parameter Versioning)
Sử dụng tham số yêu cầu để chỉ định phiên bản (/api/resource?version=1).
Phiên bản Header
Chỉ định phiên bản trong header HTTP tùy chỉnh (ví dụ, Accept-version: v1).
Phiên bản Media Type
Sử dụng header Accept để chỉ định phiên bản là một phần của loại nội dung (ví dụ, Accept: application/vnd.myapi.v1+json).
Mỗi chiến lược có những lợi ích và hạn chế riêng và lựa chọn phụ thuộc vào yêu cầu cụ thể và hạn chế của API và người tiêu dùng của nó.
Content Negotiation (Đàm phán nội dung)
Đàm phán nội dung cho phép khách hàng chỉ định định dạng của phản hồi mà họ muốn nhận (ví dụ, JSON, XML, v.v.) và cho phép máy chủ phục vụ các định dạng khác nhau dựa trên yêu cầu của khách hàng. Điều này thường được thực hiện bằng cách sử dụng header Accept của HTTP.
Sử dụng Header Accept
Khách hàng chỉ định định dạng phản hồi ưa thích của họ (ví dụ, Accept: application/json hoặc Accept: application/xml).
Phản hồi từ máy chủ
Máy chủ đánh giá header Accept và phản hồi với header Content-Type chỉ ra định dạng của dữ liệu được trả về.
Cơ chế dự phòng
Thực hiện cơ chế dự phòng cho các khách hàng không chỉ định sự ưu tiên, đảm bảo luôn có sẵn định dạng phản hồi mặc định.
Implementing Event-Driven Architectures Using Azure Functions (Thực hiện Kiến trúc Được Kích hoạt bằng Sự kiện bằng cách Sử dụng Azure Functions)
Kiến trúc được kích hoạt bằng sự kiện (EDA) là một mô hình thiết kế trong đó luồng của chương trình được xác định bởi các sự kiện như hành động của người dùng, đầu ra của cảm biến hoặc truyền thông tin nhắn giữa các quy trình. Trong EDA, các thành phần của ứng dụng phản ứng với các sự kiện bằng cách xử lý dữ liệu, giao tiếp với các dịch vụ khác hoặc thực hiện các hành động khác theo phản hồi. Kiến trúc này cho phép hệ thống linh hoạt, có khả năng mở rộng và phản ứng nhanh chóng có thể dễ dàng thích ứng với các thay đổi trong yêu cầu hoặc tải công việc.
Azure Functions là một dịch vụ tính toán serverless cho phép người dùng chạy mã được kích hoạt bởi sự kiện mà không cần triển khai hoặc quản lý cơ sở hạ tầng một cách tường minh. Nó hoàn toàn phù hợp với mô hình EDA bằng cách cho phép các nhà phát triển tập trung vào logic ứng dụng thay vì phần cứng hoặc nền tảng dưới đây.
Làm thế nào Azure Functions hỗ trợ EDA?
Azure Functions hỗ trợ EDA như sau:
Kích hoạt và Ràng buộc
Azure Functions hỗ trợ nhiều loại kích hoạt (ví dụ, yêu cầu HTTP, sự kiện hẹn giờ, thay đổi dữ liệu hoặc tin nhắn từ các dịch vụ khác) có thể tự động thực thi mã của người dùng khi có sự kiện bên ngoài xảy ra. Ràng buộc cho phép kết nối bằng cách chỉ định với các nguồn dữ liệu, đơn giản hóa việc gửi hoặc nhận dữ liệu từ chức năng của bạn.
Tích hợp với Dịch vụ Azure
Azure Functions tích hợp mượt mà với các dịch vụ Azure khác như Azure Event Grid, Azure Event Hubs, Azure Service Bus và Azure Storage queues. Điều này giúp dễ dàng xây dựng các luồng công việc phức tạp được kích hoạt bởi sự kiện mà trải dài qua các dịch vụ và tài nguyên Azure khác nhau.
Khả năng mở rộng
Azure Functions tự động mở rộng dựa trên số lượng kích hoạt sự kiện đến, làm cho nó rất phù hợp cho các ứng dụng có tải công việc thay đổi. Điều này có nghĩa là ứng dụng có thể xử lý một lượng lớn sự kiện mà không cần thực hiện các hoạt động mở rộng thủ công.
Tính linh hoạt trong phát triển
Người dùng có thể phát triển Azure Functions bằng nhiều ngôn ngữ lập trình như C#, Java, JavaScript, TypeScript, Python và PowerShell. Điều này cho phép các nhà phát triển sử dụng ngôn ngữ ưa thích của họ để triển khai logic phản hồi các sự kiện.
Mô hình serverless
Với Azure Functions, người dùng chỉ thanh toán cho thời gian tính toán mà các hàm tiêu thụ, điều này lý tưởng cho các ứng dụng được kích hoạt bởi sự kiện có tải công việc không đều hoặc không dự đoán. Mô hình serverless cũng loại bỏ sự cần thiết phải quản lý máy chủ, cho phép các nhà phát triển tập trung vào việc viết mã.
Triển khai Ứng dụng Hướng sự kiện Sử dụng Azure Functions
Bước 1:
Trong Visual Studio 2022, bắt đầu với một ứng dụng Azure Function trống và cài đặt gói ‘Microsoft.Azure.WebJobs.Extensions.EventGrid
‘ bằng cách sử dụng trình quản lý gói NuGet. Tham khảo Hình bên dưới.
Bước 2:
Thêm một mục mới, chọn Azure Functions và đặt tên là ‘EventHandler.cs
‘. Đối với Azure Function mới tạo, chọn ‘Event Grid Trigger‘ và người dùng sẽ thấy một mẫu có sẵn như được hiển thị trong 2 hình bên dưới.
Bước 3:
Xuất bản Azure Function mới tạo trực tiếp lên đăng ký Azure hiện có như được hiển thị trong Hình bên dưới. Bước này sẽ bắt đầu xây dựng ứng dụng của chúng ta.
Bước 4:
Bây giờ, trên Microsoft Azure cloud, đi đến nhóm tài nguyên và tài khoản lưu trữ đã tạo, thêm Azure Function vừa tạo và tạo một đăng ký sự kiện cho nó như được hiển thị trong 2 hình bên dưới.
Bước 5:
Sử dụng Azure Monitor và Application Insights để theo dõi hiệu suất và tình trạng của các functions đã được triển khai. Ngoài ra, phân tích các nhật ký thực thi và số liệu để đảm bảo các functions hoạt động như mong đợi và khắc phục bất kỳ vấn đề nào nếu có. Điều này kết thúc việc triển khai ứng dụng hướng sự kiện sử dụng Azure Functions.
Bài tập
## Yêu cầu:
1. Sử dụng ASP.NET Core để tạo API.
2. Kết nối đến cơ sở dữ liệu SQL Server.
3. Sử dụng ReactJS cho giao diện người dùng.
4. Mã phải được viết rõ ràng, dễ hiểu và có chú thích đầy đủ.
### Câu hỏi 1: Quản lý danh sách người dùng và bài viết của họ
#### Data Model:
Tạo file User.cs với các thuộc tính sau:
- Id (int, primary key)
- Username (string, required, min length 3, max length 100)
- Email (string, required, max length 255)
- Password (string, required, max length 100)
- CreatedDate (datetime)
Tạo file Post.cs với các thuộc tính sau:
- Id (int, primary key)
- Title (string, required, min length 5, max length 255)
- Content (string)
- UserId (int, foreign key)
- PublishedDate (datetime)
#### API
Tạo API với các endpoint sau:
- GET /api/users: Lấy danh sách người dùng.
- GET /api/users/{id}: Lấy thông tin chi tiết của người dùng theo ID.
- POST /api/users: Thêm người dùng mới.
- PUT /api/users/{id}: Cập nhật thông tin của người dùng theo ID.
- DELETE /api/users/{id}: Xóa người dùng theo ID.
- GET /api/posts: Lấy danh sách bài viết.
- GET /api/posts/{id}: Lấy thông tin chi tiết của bài viết theo ID.
- POST /api/posts: Thêm bài viết mới.
- PUT /api/posts/{id}: Cập nhật thông tin của bài viết theo ID.
- DELETE /api/posts/{id}: Xóa bài viết theo ID.
#### Giao diện ReactJS
Tạo giao diện đơn giản bằng ReactJS để:
- Hiển thị danh sách người dùng.
- Thêm người dùng mới.
- Hiển thị danh sách bài viết của người dùng.
- Thêm bài viết mới.
### Câu hỏi 2: Phân trang, Sắp xếp và Tìm kiếm
#### Phân trang
Sử dụng thư viện Swashbuckle.AspNetCore để thêm swagger vào API. Cho phép phân trang danh sách người dùng và bài viết bằng swagger.
#### Sắp xếp
Cho phép sắp xếp danh sách người dùng theo tên hoặc ngày tạo tài khoản. Cho phép sắp xếp danh sách bài viết theo tiêu đề hoặc ngày xuất bản.
#### Tìm kiếm
Cho phép tìm kiếm người dùng theo tên hoặc email. Cho phép tìm kiếm bài viết theo tiêu đề hoặc nội dung.