حدث
٢ شوال، ١١ م - ٤ شوال، ١١ م
أكبر حدث تعلم Fabric وPower BI وSQL. 31 مارس – 2 أبريل. استخدم التعليمات البرمجية FABINSIDER لتوفير 400 دولار.
تسجيل اليوملم يعد هذا المتصفح مدعومًا.
بادر بالترقية إلى Microsoft Edge للاستفادة من أحدث الميزات والتحديثات الأمنية والدعم الفني.
ابدأ مع مكتبة عميل Azure Blob Storage ل C++. تخزين Azure Blob عبارة عن حل تخزين كائن من Microsoft للسحابة. يُرجى اتباع هذه الخطوات لتثبيت الحزمة وتجربة التعليمات البرمجية للمهام الأساسية.
| نماذج | التعليمات البرمجية | المصدر لمكتبة الوثائق المرجعية لواجهة برمجة التطبيقات |
يرشدك هذا القسم خلال إعداد مشروع للعمل مع مكتبة عميل Azure Blob Storage ل C++. أسهل طريقة للحصول على Azure SDK ل C++ هي استخدام مدير الحزمة vcpkg
.
vcpkg install
استخدم الأمر لتثبيت مكتبة Azure Blob Storage ل C++ والتبعيات الضرورية:
vcpkg.exe install azure-storage-blobs-cpp
مكتبة Azure Identity مطلوبة للاتصالات بدون كلمة مرور بخدمات Azure:
vcpkg.exe install azure-identity-cpp
لمزيد من المعلومات حول إعداد المشروع والعمل مع Azure SDK ل C++، راجع Azure SDK ل C++ readme.
في Visual Studio، قم بإنشاء تطبيق وحدة تحكم C++ جديد لنظام التشغيل Windows يسمى BlobQuickstart.
يتم تحسين Azure Blob Storage لتخزين كميات هائلة من البيانات غير المهيكلة. البيانات غير منظمة البنية هي بيانات لا تلتزم بنموذج بيانات أو تعريف معين، مثل البيانات النصية أو الثنائية. يوفر مخزن كائن ثنائي كبير الحجم ثلاثة أنواع من الموارد:
يعرض الرسم التخطيطي التالي العلاقة بين هذه الموارد.
استخدم الفئات C++ هذه للتفاعل مع هذه الموارد:
BlobServiceClient
تسمح لك الفئة بمعالجة موارد Azure Storage وحاويات كائن تخزين البيانات الثنائية الكبيرة.BlobContainerClient
بمعالجة حاويات Azure Storage والنقط الخاصة بهم.BlobClient
تسمح الفئة لك بمعالجة نقط تخزين Azure. هي الفئة الأساسية لجميع فئات كائن ثنائي كبير الحجم المتخصصة.BlockBlobClient
تسمح لك الفئة بمعالجة الكائنات الثنائية كبيرة الحجم لكتلة تخزين Azure.توضح لك أمثلة أجزاء التعليمات البرمجية هذه كيفية القيام بالمهام التالية باستخدام مكتبة عميل Azure Blob Storage لـ C++:
من دليل المشروع:
main
تم إنشاؤها تلقائيا#include
عبارات و using namespace
#include <iostream>
#include <azure/core.hpp>
#include <azure/identity/default_azure_credential.hpp>
#include <azure/storage/blobs.hpp>
using namespace Azure::Identity;
using namespace Azure::Storage::Blobs;
يجب تخويل طلبات التطبيق إلى Azure Blob Storage. DefaultAzureCredential
استخدام الفئة التي توفرها مكتبة عميل Azure Identity هو الأسلوب الموصى به لتنفيذ اتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك، بما في ذلك Blob Storage.
يمكنك أيضًا تخويل الطلبات إلى Azure Blob Storage باستخدام مفتاح الوصول إلى الحساب. ومع ذلك، ينبغي استخدام هذا النهج بحذر. يجب أن يكون المطورون مجتهدين لعدم عرض مفتاح الوصول في موقع غير آمن. يمكن لأي شخص لديه مفتاح الوصول تخويل الطلبات مقابل حساب التخزين، ولديه حق الوصول إلى جميع البيانات بشكل فعال. DefaultAzureCredential
يوفر مزايا إدارة وأمان محسنة عبر مفتاح الحساب للسماح بالمصادقة التي لا تتطلب كلمة مرور. يتم عرض كلا الخيارين في المثال التالي.
توفر مكتبة Azure Identity دعم مصادقة الرمز المميز ل Microsoft Entra عبر Azure SDK. يوفر مجموعة من TokenCredential
التطبيقات التي يمكن استخدامها لإنشاء عملاء Azure SDK الذين يدعمون مصادقة الرمز المميز ل Microsoft Entra. DefaultAzureCredential
يدعم أساليب مصادقة متعددة ويحدد الأسلوب الذي يجب استخدامه في وقت التشغيل.
عند التطوير محليًا، تأكد من أن حساب المستخدم الذي يصل إلى بيانات الكائن الثنائي كبير الحجم لديه الأذونات الصحيحة. ستحتاج إلى Storage Blob Data Contributor لقراءة بيانات الكائن الثنائي كبير الحجم وكتابتها. لتعيين هذا الدور لنفسك، ستحتاج إلى تعيين دور المستخدم Access مسؤول istrator، أو دور آخر يتضمن إجراء Microsoft.Authorization/roleAssignments/write. يمكنك تعيين أدوار Azure RBAC لمستخدم باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell. يمكنك معرفة المزيد حول النطاقات المتوفرة لتعيينات الأدوار في صفحة نظرة عامة على النطاق.
في هذا السيناريو، ستقوم بتعيين أذونات لحساب المستخدم الخاص بك، محددة النطاق إلى حساب التخزين، لاتباع مبدأ أقل الامتيازات. تمنح هذه الممارسة المستخدمين الحد الأدنى من الأذونات المطلوبة فقط وتنشئ بيئات تشغيل أكثر أمانًا.
سيقوم المثال التالي بتعيين دور Storage Blob Data Contributor إلى حساب المستخدم الخاص بك، والذي يوفر حق الوصول للقراءة والكتابة إلى بيانات blob في حساب التخزين الخاص بك.
هام
في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين، ولكن في حالات نادرة قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.
في مدخل Microsoft Azure، حدد موقع حساب التخزين الخاص بك باستخدام شريط البحث الرئيسي أو شريط التنقل الأيسر.
في صفحة نظرة عامة على حساب التخزين، حدد التحكم بالوصول (IAM) من القائمة اليسرى.
حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.
حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.
استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. في هذا المثال، ابحث عن مساهم بيانات Storage Blob وحدد النتيجة المطابقة ثم اختر التالي.
ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.
في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.
حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.
يمكنك تخويل الوصول إلى البيانات في حساب التخزين الخاص بك باستخدام الخطوات التالية:
تأكد من مصادقتك باستخدام نفس حساب Microsoft Entra الذي قمت بتعيين الدور له على حساب التخزين الخاص بك. يمكنك المصادقة عبر Azure CLI. سجل الدخول إلى Azure من خلال Azure CLI باستخدام الأمر التالي:
az login
لاستخدام DefaultAzureCredential
، تأكد من تثبيت حزمة azure-identity-cpp وإضافة ما يلي#include
:
#include <azure/identity/default_azure_credential.hpp>
أضف هذه التعليمة البرمجية إلى نهاية main()
. عند تشغيل التعليمات البرمجية على محطة العمل المحلية الخاصة بك، DefaultAzureCredential
يستخدم بيانات اعتماد المطور ل Azure CLI للمصادقة على Azure.
// Initialize an instance of DefaultAzureCredential
auto defaultAzureCredential = std::make_shared<DefaultAzureCredential>();
auto accountURL = "https://<storage-account-name>.blob.core.windows.net";
BlobServiceClient blobServiceClient(accountURL, defaultAzureCredential);
تأكد من تحديث اسم حساب التخزين في URI للكائن الخاص بك BlobServiceClient
. يمكن العثور على اسم حساب التخزين في صفحة النظرة العامة لمدخل Microsoft Azure.
ملاحظة
عند استخدام C++ SDK في بيئة إنتاج، يوصى بتمكين بيانات الاعتماد التي تعرف أن تطبيقك سيستخدمها فقط. بدلا من استخدام DefaultAzureCredential
، يجب تخويل استخدام نوع بيانات اعتماد معين، أو باستخدام ChainedTokenCredential
مع بيانات الاعتماد المدعومة.
اختر اسمًا للحاوية الجديدة. ثم قم بإنشاء مثيل للحاوية BlobContainerClient
وإنشاءها.
هام
ويجب أن تكون أسماء الحاويات بأحرف صغيرة. لمزيد من المعلومات حول عملية تسمية الحاويات والكائنات الثنائية كبيرة الحجم، راجع تسمية الحاويات والكائنات الثنائية كبيرة الحجم وبيانات التعريف والإشارة إليها.
أضف هذه التعليمة البرمجية إلى نهاية main()
:
std::string containerName = "myblobcontainer";
auto containerClient = blobServiceClient.GetBlobContainerClient("myblobcontainer");
// Create the container if it does not exist
std::cout << "Creating container: " << containerName << std::endl;
containerClient.CreateIfNotExists();
جزء التعليمة البرمجية المكررة التالي:
أضف هذه التعليمة البرمجية إلى نهاية main()
:
std::string blobName = "blob.txt";
uint8_t blobContent[] = "Hello Azure!";
// Create the block blob client
BlockBlobClient blobClient = containerClient.GetBlockBlobClient(blobName);
// Upload the blob
std::cout << "Uploading blob: " << blobName << std::endl;
blobClient.UploadFrom(blobContent, sizeof(blobContent));
سرد الكائنات الثنائية كبيرة الحجم في الحاوية عن طريق استدعاء الدالة ListBlobs . تمت إضافة كائن ثنائي واحد كبير فقط إلى الحاوية، ومن ثمَّ فإن العملية تُرجع ذلك الكائن الثنائي إلى تلك النقطة فقط.
أضف هذه التعليمة البرمجية إلى نهاية main()
:
std::cout << "Listing blobs..." << std::endl;
auto listBlobsResponse = containerClient.ListBlobs();
for (auto blobItem : listBlobsResponse.Blobs)
{
std::cout << "Blob name: " << blobItem.Name << std::endl;
}
الحصول على خصائص كائن ثنائي كبير الحجم الذي تم تحميله. ثم قم بتعريف كائن جديد std::vector<uint8_t>
وتغيير حجمه باستخدام خصائص الكائن الثنائي كبير الحجم الذي تم تحميله. قم بتنزيل الكائن الثنائي كبير الحجم الذي تم إنشاؤه مسبقا في الكائن الجديد std::vector<uint8_t>
عن طريق استدعاء الدالة DownloadTo في الفئة الأساسية BlobClient . وأخيرًا، عرض بيانات كائن ثنائي كبير الحجم التي تم تحميلها.
أضف هذه التعليمة البرمجية إلى نهاية main()
:
auto properties = blobClient.GetProperties().Value;
std::vector<uint8_t> downloadedBlob(properties.BlobSize);
blobClient.DownloadTo(downloadedBlob.data(), downloadedBlob.size());
std::cout << "Downloaded blob contents: " << std::string(downloadedBlob.begin(), downloadedBlob.end()) << std::endl;
تحذف التعليمات البرمجية التالية الكائن الثنائي كبير الحجم من حاوية Azure Blob Storage عن طريق استدعاء الدالة BlobClient.Delete .
std::cout << "Deleting blob: " << blobName << std::endl;
blobClient.Delete();
تنظف التعليمات البرمجية التالية الموارد التي أنشأها التطبيق عن طريق حذف الحاوية بأكملها باستخدام BlobContainerClient.حذف.
أضف هذه التعليمة البرمجية إلى نهاية main()
:
std::cout << "Deleting container: " << containerName << std::endl;
containerClient.Delete();
يقوم هذا التطبيق بإنشاء حاوية وتحميل ملف نصي إلى مخزن الكائنات الثنائية كبيرة الحجم لـ Azure. يقوم المثال بعد ذلك بسرد النقاط الكبيرة الموجودة في الحاوية، وتنزيل الملف، وعرض محتويات الملف. أخيرًا، يحذف التطبيق كائن ثنائي كبير الحجم والحاوية.
يتشابه إخراج التطبيق مع المثال التالي:
Azure Blob Storage - C++ quickstart sample
Creating container: myblobcontainer
Uploading blob: blob.txt
Listing blobs...
Blob name: blob.txt
Downloaded blob contents: Hello Azure!
Deleting blob: blob.txt
Deleting container: myblobcontainer
في هذا التشغيل السريع، تعلمت كيفية تحميل وتنزيل وسرد الكائنات الثنائية كبيرة الحجم باستخدام C++. تعلمت أيضًا كيفية إنشاء حاوية مخزن Azure للكائنات الثنائية كبيرة الحجم وحذفها.
للاطلاع على عينة C++ Blob Storage، تابع ما يلي:
حدث
٢ شوال، ١١ م - ٤ شوال، ١١ م
أكبر حدث تعلم Fabric وPower BI وSQL. 31 مارس – 2 أبريل. استخدم التعليمات البرمجية FABINSIDER لتوفير 400 دولار.
تسجيل اليومالتدريب
الوحدة النمطية
العمل مع ذاكرة Azure Blob - Training
تعلم كيفية استخدام مكتبة عميل تخزين Azure Blob لإنشاء موارد تخزين Blob وتحديثها.
الشهادة
مُعتمدة من Microsoft: Azure Developer Associate - Certifications
إنشاء حلول شاملة في Microsoft Azure لإنشاء وظائف Azure، وتنفيذ تطبيقات الويب وإدارتها، وتطوير حلول باستخدام تخزين Azure، والمزيد.