Chuyển đến nội dung chính

Bài đăng

Sử dụng ADO.NET để thực thi Stored Procedure

Giới thiệu ADO.NET (ActiveX Data Objects for .NET) là một tập hợp các công nghệ trong Microsoft .NET Framework được thiết kế để làm việc với dữ liệu trong môi trường .NET. ADO.NET cung cấp một mô hình lập trình cho truy cập và quản lý dữ liệu từ nhiều nguồn khác nhau, chẳng hạn như cơ sở dữ liệu SQL Server, Oracle, MySQL, và các nguồn dữ liệu khác. ADO.NET chủ yếu được sử dụng để thực hiện các thao tác thường xuyên liên quan đến cơ sở dữ liệu, bao gồm: Kết nối (Connection): ADO.NET cung cấp lớp SqlConnection để thiết lập kết nối với cơ sở dữ liệu. Kết nối là cầu nối giữa ứng dụng và cơ sở dữ liệu. Command: ADO.NET sử dụng các lớp SqlCommand, SqlDataAdapter, và SqlDataReader để thực hiện các câu truy vấn SQL, stored procedures, và thao tác khác đối với cơ sở dữ liệu. DataReader: SqlDataReader là một cơ chế để đọc dữ liệu từ cơ sở dữ liệu một cách tuần tự và hiệu quả, thích hợp cho việc đọc dữ liệu theo hàng. DataAdapter: SqlDataAdapter là một thành phần quan trọng trong ADO.NET, giúp đi
Các bài đăng gần đây

CQRS là gì?

Giới thiệu CQRS được lấy cảm hứng từ mô hình Command Query Separation (CQS) do Bertrand Meyer đề xuất trong cuốn sách "Object Oriented Software Construction". Triết lý chính của CQS là A method should either change state of an object, or return a result, but not both. In other words, asking the question should not change the answer. More formally, methods should return a value only if they are referentially transparent and hence possess no side effects.” (Wikipedia) Dựa trên nguyên tắc này, CQS phân chia các phương thức thành hai nhóm: Command: Thay đổi trạng thái của đối tượng hoặc toàn bộ hệ thống (còn gọi là modifiers hoặc mutators). Query: Trả về kết quả và không thay đổi trạng thái của đối tượng. Trong thực tế, việc phân biệt ra Query và Command khá đơn giản. Bạn có thể tìm hiểu thêm bài viết tại đây CQRS: Bản nâng cấp của CQS CQRS (hay Command Query Responsibility Segregation) là một design pattern phân tách các hoạt động read và write dữ liệu. Trong đó chia việc tương

Command Query Separation

Lần đầu tiên mình bắt đầu khám phá design pattern CQRS (Command Query Responsibility Segregation), mình phải thừa nhận rằng nó đôi chút khó khăn. Nhưng đến khi mình đối mặt với những thách thức thực tế trong dự án cá nhân, mình mới thấu hiểu giá trị quan trọng của CQRS. Điều làm mình ấn tượng là CQRS không phải là một khái niệm quá rối bời. Ngược lại, khi bạn tiếp tục làm việc và trau dồi kinh nghiệm, bạn sẽ dần dần thích ứng và làm quen với nó. Như Lỗ Tấn đã nói, "Trên đời này làm gì có đường, người ta đi mãi thì thành đường thôi.". Vì vậy, giai đoạn bắt đầu tìm hiểu luôn là quan trọng nhất. Nếu bắt đầu mọi thứ quá phức tạp từ đầu, có thể các bạn sẽ cảm thấy mất hứng thú và không muốn tiếp tục đọc các phần sau. Bài viết này gồm nhiều phần, đầu tiên là mình nói về Command Query Separation, sau đó mới là phần Command Query Responsibility Segregation. Mục đích chính là chúng ta đi từ cách tiếp cận đơn giản đến phức tạp. Command Query Separation CQS là một nguyên tắc thiết kế mẫ

Containerizing Web Apps trên Azure App Service

Trong bài viết này, mình sẽ hướng dẫn các bạn deploy web app trên Azure App Service sử dụng image. Trước tiên, chúng ta cần nhắc lại 1 số khái niệm: image, container, container registry, Azure App Service. Khái niệm Docker image : Một dạng tập hợp các file của ứng dụng, được tạo ra bởi Docker engine. Nội dung của các Docker image sẽ không bị thay đổi khi di chuyển. Docker image được dùng để chạy các Docker container. Do tính chất read-only của chúng, những images này đôi khi được gọi là snapshots. Container : một dạng runtime của các Docker image, dùng để làm môi trường chạy ứng dụng. Container Registry Container Registry là dịch vụ lưu trữ tập trung cho các Docker image. Container Registry giúp bạn dễ dàng quản lý, chia sẻ và triển khai các image container. Giả sử bạn có một ứng dụng web ASP.NET Core đơn giản. Bạn có thể sử dụng Docker để đóng gói ứng dụng này vào một image container. Sau đó, bạn có thể push image này lên Container Registry. Khi bạn muốn triển khai ứng dụng, bạn có th

Microsoft Defender for Cloud

Trong bài viết này, mình sẽ giới thiệu về Microsoft Defender for Cloud, cách bật tắt và sử dụng Ms Defender cho Blob Storage Giới thiệu Microsoft Defender for Cloud là một nền tảng bảo vệ cloud-native application (CNAPP) được tạo thành từ các biện pháp và biện pháp bảo mật được thiết kế để bảo vệ các ứng dụng dựa trên cloud khỏi nhiều mối đe dọa và lỗ hổng mạng khác nhau Bật Microsoft Defender cho Blob Storage Bạn vào Azure Portal => Your blob Storage => Security + Networking => Microsoft Defender for Cloud => Settings => Bật các option từ Off => On Lưu ý bạn cần có quyền Administrator để thực hiện thay đổi settings này. Ngoài ra, bạn cần tạo Event Grid để nhận kết quả từ Microsoft Defender for Cloud  Tắt Microsoft Defender cho Blob Storage Bạn vào trang Microsoft Defender for Cloud > Environment settings > Your subscription. Switch value Defender for Storage plan thành Off => chọn Save Hướng dẫn nhận kết quả từ Microsoft Defender Chúng ta có các bước: Upload

Tạo Azure Web App bằng Azure CLI

Trên môi trường Azure, bạn mở Bash và gõ 2 câu lệnh sau: az appservice plan create --name <App service plan name> --resource-group <resource group name> az webapp create --resource-group <resource group name> --plan <App service plan name> --name <web app name> Thay đổi <resource group name> với resource group có sẵn. <web app name>: Tên web app duy nhất không trùng trong phạm vi Global

Azure Bicep

Bicep là gì? Azure Bicep là một ngôn ngữ triển khai Infrastructure as Code (IaC) dành cho Azure. Được thiết kế để thay thế cho JSON, Bicep giúp đơn giản hóa quá trình viết và duy trì các file mô tả cấu hình hạ tầng Azure. Nó cung cấp cú pháp đơn giản, đọc hiểu dễ dàng và hỗ trợ tính tái sử dụng mã nguồn. Tại sao phải sử dụng Bicep Bicep được thiết kế để thay thế cho ngôn ngữ ARM template, giúp giảm độ phức tạp của mã nguồn và cung cấp trải nghiệm phát triển tốt hơn.  Tham khảo thêm https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview?tabs=bicep#benefits-of-bicep Cú pháp cơ bản Azure Bicep cung cấp cú pháp đơn giản và hiệu quả để triển khai cấu hình hạ tầng trên Azure. Dưới đây là một số điểm quan trọng về cú pháp cơ bản, bao gồm khai báo biến, sử dụng vòng lặp, và ví dụ minh họa. var location = 'East US' var resourceGroupName = 'MyResourceGroup' Vòng lặp param storageAccountNames array = ['storage1', 'storage2', 'storage3