Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Verileri depolamak için Azure Dosyalar kullanan .NET uygulamaları geliştirmeyi öğrenin. Azure Dosyalar, bulutta yönetilen bir dosya paylaşımı hizmetidir. Endüstri standardı Sunucu İleti Bloğu (SMB) ve Ağ Dosya Sistemi (NFS) protokolleri aracılığıyla erişilebilen tam olarak yönetilen dosya paylaşımları sağlar. Azure Dosyalar ayrıca dosya paylaşımlarına program aracılığıyla erişim için bir REST API sağlar.
Bu makalede, .NET'te Azure Dosyaları ile geliştirmenin farklı yaklaşımları ve uygulamanızın gereksinimlerine en uygun yaklaşımı seçmeyi öğreneceksiniz. Ayrıca Azure Dosyalar kaynaklarıyla etkileşim kuran temel bir konsol uygulaması oluşturmayı da öğrenirsiniz.
Şunlara uygulanır
Yönetim modeli | Faturalama modeli | Medya katmanı | Yedeklilik | Küçük ve Orta Büyüklükteki İşletme (SMB) | Ağ Dosya Sistemi (NFS) |
---|---|---|---|---|---|
Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | Yerel (LRS) |
![]() |
![]() |
Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | Bölge (ZRS) |
![]() |
![]() |
Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | Coğrafi (GRS) |
![]() |
![]() |
Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | GeoZone (GZRS) |
![]() |
![]() |
Microsoft.Storage | Tahsis edilen v1 | SSD (üst düzey) | Yerel (LRS) |
![]() |
![]() |
Microsoft.Storage | Tahsis edilen v1 | SSD (üst düzey) | Bölge (ZRS) |
![]() |
![]() |
Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | Yerel (LRS) |
![]() |
![]() |
Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | Bölge (ZRS) |
![]() |
![]() |
Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | Coğrafi (GRS) |
![]() |
![]() |
Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | GeoZone (GZRS) |
![]() |
![]() |
Azure Dosyalar ile .NET uygulama geliştirme hakkında
Azure Dosyalar, .NET geliştiricilerinin Azure Dosyalar'daki verilere erişmesi ve kaynakları yönetmesi için çeşitli yollar sunar. Aşağıdaki tabloda yaklaşımlar listelenir, nasıl çalıştıkları özetler ve her yaklaşımın ne zaman kullanılacağına ilişkin yönergeler sağlanır:
Yaklaşım | Nasıl çalışır? | ne zaman kullanılmalı |
---|---|---|
Standart dosya giriş/çıkış kitaplıkları | SMB veya NFS kullanarak bağlanmış Azure dosya paylaşımları üzerinden işletim sistemi seviyesindeki API çağrılarını kullanır. SMB/NFS kullanarak bir dosya paylaşımı bağladığınızda, .NET gibi System.IO bir programlama dili veya çerçevesi için dosya G/Ç kitaplıklarını kullanabilirsiniz. |
Standart dosya G/Ç kullanan mevcut koda sahip iş kolu uygulamalarınız var ve uygulamanın bir Azure dosya paylaşımıyla çalışması için kodu yeniden yazmak istemiyorsunuz. |
FileREST API | Azure Dosyalar'da depolanan verilerle etkileşime geçmek için HTTPS uç noktalarını doğrudan çağırır. Dosya paylaşımı kaynakları üzerinde programlı denetim sağlar. Azure SDK, FileREST API'sini temel alan Dosya Paylaşımları istemci kitaplığını (Azure.Storage.Files.Shares ) sağlayarak tanıdık .NET programlama dili paradigmalarıyla FileREST API işlemleriyle etkileşim kurmanızı sağlar. |
Müşteriler için katma değerli bulut hizmetleri ve uygulamaları oluşturuyorsunuz ve aracılığıyla System.IO kullanılamayan gelişmiş özellikleri kullanmak istiyorsunuz. |
Depolama kaynak sağlayıcısı REST API'si | Depolama hesaplarını ve dosya paylaşımlarını yönetmek için Azure Resource Manager'ı (ARM) kullanır. Çeşitli kaynak yönetimi işlemleri için REST API uç noktalarını çağırır. | Uygulamanızın veya hizmetinizin depolama hesaplarını veya dosya paylaşımlarını oluşturma, silme veya güncelleştirme gibi kaynak yönetimi görevlerini gerçekleştirmesi gerekir. |
Bu yaklaşımlar hakkında genel bilgi için bkz. Azure Dosyalar ile uygulama geliştirmeye genel bakış.
Bu makale, aşağıdaki yaklaşımları kullanarak Azure Dosyalar kaynaklarıyla çalışmaya odaklanır:
-
System.IO kullanarak Azure Dosyaları ile çalışma: SMB veya NFS kullanarak dosya paylaşımı bağlayın ve paylaşımdaki
System.IO
dosya ve dizinlerle çalışmak için ad alanını kullanın. - .NET için Dosya Paylaşımları istemci kitaplığını kullanarak Azure Dosyaları ile çalışma: Bir dosya paylaşımındaki dosya ve dizinlerle çalışmak için .NET için Azure Depolama Dosya Paylaşımları istemci kitaplığını kullanın. Bu istemci kitaplığı FileREST API'si üzerine kuruludur.
- Azure Depolama yönetim kitaplıklarını kullanarak Azure Dosyalar kaynaklarını yönetme: Depolama hesabınızdaki dosya paylaşımlarını ve diğer kaynakları yönetmek için Azure Depolama yönetim kitaplıklarını kullanın. Yönetim kitaplıkları Azure Depolama kaynak sağlayıcısı REST API'sinde derlenir.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- İşletim sisteminiz için en son .NET SDK'sı (SDK'yı alın, çalışma zamanını değil)
Ortamınızı ayarlama
Bu bölümde, .NET konsol uygulamasını Azure Dosyalar ile çalışacak şekilde hazırlama adımları adım adım gösterilir.
Projeyi oluşturma
Henüz bir .NET uygulamanız yoksa Visual Studio veya .NET CLI kullanarak bir uygulama oluşturun. Bu makalede basitlik için bir konsol uygulaması oluşturacağız.
- Visual Studio'yu başlatın ve Yeni proje oluştur'u seçin. Veya Visual Studio'daysanız Dosya>Yeni>Proje'ye gidin.
- İletişim kutusunda C# için Konsol Uygulaması'nı ve ardından İleri'yi seçin.
- Proje için bir ad girin, varsayılan değerleri değiştirmeyin ve İleri'yi seçin.
- Framework için .NET'in en son yüklü sürümünü seçin. Diğer varsayılan değerleri değiştirmeyin ve Oluştur'u seçin.
paketini yükleyin
Ad alanını kullanarak System.IO
Azure Dosyalar ile etkileşim kurmayı planlıyorsanız ek paket yüklemeniz gerekmez. Ad System.IO
alanı .NET SDK'sı ile birlikte sunulur. .NET için Dosya Paylaşımları istemci kitaplığını veya .NET için Azure Depolama yönetim kitaplığını kullanmayı planlıyorsanız NuGet kullanarak paketi yükleyin.
Çözüm Gezgini'da projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.
NuGet Paket Yöneticisi'nde Gözat'ı seçin. Ardından uygun paketi arayıp seçin ve Yükle'yi seçin. Dosya Paylaşımları istemci kitaplığı için Azure.Storage.Files.Shares'ı seçin. Azure Depolama yönetim kitaplığı için Azure.ResourceManager.Storage'ı seçin. Parolasız bağlantılar için gereken Azure Kimlik kitaplığı için Azure.Identity'yi seçin.
Bu adım paketi ve bağımlılıklarını yükler.
Using yönergeleri ekle
Ad alanını System.IO
kullanmayı planlıyorsanız, Program.cs dosyanızın en üstüne aşağıdaki using yönergesini ekleyin:
using System.IO;
.NET için Dosya Paylaşımları istemci kitaplığını kullanmayı planlıyorsanız, Program.cs dosyanızın en üstüne aşağıdaki using yönergesini ekleyin:
using Azure.Storage.Files.Shares;
.NET için Azure Depolama yönetim kitaplığını kullanmayı planlıyorsanız, Program.cs dosyanızın en üstüne aşağıdaki using yönergesini ekleyin:
using Azure.ResourceManager;
Azure hizmetlerine parolasız bağlantılar için Azure Kimlik kitaplığını kullanmak için Program.cs dosyanızın en üstüne aşağıdaki using yönergesini ekleyin:
using Azure.Identity;
System.IO kullanarak Azure Dosyalar ile çalışma
Standart dosya G/Ç kitaplıkları, Azure Dosyalar kaynaklarına erişmenin ve bu kaynaklarla çalışmanın en yaygın yoludur. SMB veya NFS kullanarak bir dosya paylaşımı bağladığınızda, işletim sisteminiz yerel dosya sistemi için API isteklerini yeniden yönlendirir. Bu yaklaşım, paylaşımdaki dosya ve dizinlerle etkileşime geçmek için gibi System.IO
standart dosya G/Ç kitaplıklarını kullanmanıza olanak tanır.
"System.IO
kullanmayı, uygulamanız şunları gerektirdiğinde göz önünde bulundurun:"
-
Uygulama uyumluluğu:
System.IO
'i zaten kullanan mevcut koda sahip iş kolu uygulamaları için idealdir. Uygulamanın bir Azure dosya paylaşımıyla çalışması için kodu yeniden yazmanız gerekmez. -
Kullanım kolaylığı:
System.IO
geliştiriciler tarafından iyi bilinir ve kullanımı kolaydır. Azure Dosyalar'ın önemli bir değer teklifi, yerel dosya sistemi API'lerini SMB ve NFS aracılığıyla kullanıma sunmasıdır.
Bu bölümde, System.IO
kullanarak Azure Dosyaları kaynaklarıyla çalışmayı öğreneceksiniz.
Daha fazla bilgi ve örnek için aşağıdaki kaynaklara bakın:
Dosya paylaşımını bağlamak
System.IO
kullanmak için önce bir dosya paylaşımı bağlamanız gerekir. SMB veya NFS kullanarak dosya paylaşımını bağlama yönergeleri için aşağıdaki kaynaklara bakın:
- Windows'da SMB dosya paylaşımını bağlama
- Linux'ta SMB dosya paylaşımını bağlama
- Linux'ta NFS dosya paylaşımını bağlama
Bu makalede, Windows'ta bağlı bir SMB dosya paylaşımına başvurmak için aşağıdaki yolu kullanacağız:
string fileSharePath = @"Z:\file-share";
Örnek: System.IO kullanarak dosya paylaşımına bağlanma ve dizinleri listeleme
Aşağıdaki kod örneği, bir dosya paylaşımına bağlanmayı ve paylaşımdaki dizinleri listelemeyi gösterir:
using System.IO;
string fileSharePath = @"Z:\file-share";
EnumerateDirectories(@"Z:\file-share");
static void EnumerateDirectories(string path)
{
try
{
List<string> dirs = new List<string>(Directory.EnumerateDirectories(path));
foreach (var dir in dirs)
{
Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}");
}
Console.WriteLine($"{dirs.Count} directories found.");
}
catch (UnauthorizedAccessException ex)
{
Console.WriteLine(ex.Message);
}
catch (PathTooLongException ex)
{
Console.WriteLine(ex.Message);
}
}
Örnek: System.IO kullanarak dosya paylaşımındaki bir dosyaya yazma
Aşağıdaki kod örneğinde, sınıfıyla metin yazma ve ekleme işlemi gösterilmektedir File
:
using System.IO;
string fileSharePath = @"Z:\file-share";
WriteToFile(fileSharePath, "test.txt");
static void WriteToFile(string fileSharePath, string fileName)
{
string textToWrite = "First line" + Environment.NewLine;
string filePath = Path.Combine(fileSharePath, fileName);
File.WriteAllText(filePath, textToWrite);
string[] textToAppend = { "Second line", "Third line" };
File.AppendAllLines(filePath, textToAppend);
}
Örnek: System.IO kullanarak dosya paylaşımındaki bir dosyayı kilitleme
Dosya paylaşımlarını bağlayan SMB istemcileri, paylaşılan dosyalara erişimi yönetmek için dosya sistemi kilitleme mekanizmalarını kullanabilir.
Aşağıdaki kod örneğinde, paylaşım modu olarak ayarlanmış bir dosya paylaşımındaki bir dosyanın nasıl kilitlanacağı gösterilmektedir None
. Bu paylaşım modu, dosya kapatılana kadar geçerli dosyanın paylaşımını reddeder.
using System.IO;
string fileSharePath = @"Z:\file-share";
LockFile(Path.Combine(fileSharePath, "test.txt"));
static void LockFile(string filePath)
{
try
{
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
Console.WriteLine("File locked.");
// Do something with file, press Enter to close the stream and release the lock
Console.ReadLine();
fs.Close();
Console.WriteLine("File closed.");
}
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
}
}
Hem SMB hem de FileREST API'sini kullanırken, FileREST API kiralamalarının dosya kilitlerini yönetmek için kullanıldığını, SMB'nin ise işletim sistemi tarafından yönetilen dosya sistemi kilitlerini kullandığını unutmayın. SMB ile FileREST API arasındaki dosya kilitleme etkileşimlerini yönetme hakkında daha fazla bilgi edinmek için bkz. Dosya kilitlerini yönetme.
Örnek: System.IO kullanarak dosya ACL'lerini listeleme
Aşağıdaki kod örneğinde, bir dosya için erişim denetim listelerinin (ACL) nasıl numaralandırılası gösterilmektedir:
using System.IO;
using System.Security.AccessControl;
string fileSharePath = @"Z:\file-share";
string fileName = "test.txt";
string filePath = Path.Combine(fileSharePath, fileName);
EnumerateFileACLs(filePath);
static void EnumerateFileACLs(string filePath)
{
FileInfo fileInfo = new FileInfo(filePath);
// For directories, use DirectorySecurity instead of FileSecurity
FileSecurity fSecurity = FileSystemAclExtensions.GetAccessControl(fileInfo);
// List all access rules for the file
foreach (FileSystemAccessRule rule in fSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
Console.WriteLine($"Identity: {rule.IdentityReference.Value}");
Console.WriteLine($"Access Control Type: {rule.AccessControlType}");
Console.WriteLine($"File System Rights: {rule.FileSystemRights}");
Console.WriteLine();
}
}
.NET için Dosya Paylaşımları istemci kitaplığını kullanarak Azure Dosyalar verileriyle çalışma
FileREST API'sinde Azure Dosyalar'a program aracılığıyla erişim sağlanır. Dosya paylaşımları, dizinler ve dosyalar üzerinde işlem gerçekleştirmek için HTTPS uç noktalarını çağırmanıza olanak tanır. FileREST API'si, yerel protokoller aracılığıyla kullanılamayabilecek yüksek ölçeklenebilirlik ve gelişmiş özellikler için tasarlanmıştır. Azure SDK, FileREST API'si üzerine inşa eden .NET için Dosya Paylaşımları istemci kitaplığı gibi istemci kütüphaneleri sağlar.
Uygulamanız şunları gerektiriyorsa FileREST API'sini ve Dosya Paylaşımı istemci kitaplığını kullanmayı göz önünde bulundurun:
- Gelişmiş özellikler: Yerel protokoller aracılığıyla kullanılamayabilecek işlemlere ve özelliklere erişin.
- Özel bulut tümleştirmeleri: Doğrudan Azure Dosyaları ile etkileşim kuran yedekleme, virüsten koruma veya veri yönetimi gibi özel katma değerli hizmetler oluşturun.
- Performans iyileştirmesi: Veri düzlemi işlemlerini kullanarak yüksek ölçekli senaryolarda performans avantajlarından yararlanın.
FileREST API'sinde Azure Dosyalar kaynak hiyerarşisi olarak modellenir ve dizin veya dosya düzeyinde gerçekleştirilen işlemler için önerilir. Dosya hizmeti veya dosyapaylaşımı düzeyinde gerçekleştirilen işlemler için Depolama kaynak sağlayıcısı REST API'sini tercih etmelisiniz.
Bu bölümde, Azure Dosyaları kaynaklarıyla çalışmak için Dosya Paylaşımı istemci kütüphanesini nasıl kullanacağınızı öğrenirsiniz.
Daha fazla bilgi ve örnek için aşağıdaki kaynaklara bakın:
- .NET için Azure Depolama Dosya Paylaşımları istemci kitaplığı
- .NET örnekleri için Azure Depolama Dosya Paylaşımları istemci kitaplığı
Erişimi yetkilendirme ve istemci oluşturma
Bir uygulamayı Azure Dosyalar'a bağlamak için bir ShareClient
nesne oluşturun. Bu nesne, Azure Dosyalar kaynaklarıyla çalışmak için başlangıç noktanızdır. Aşağıdaki kod örnekleri, farklı yetkilendirme mekanizmaları kullanarak bir ShareClient
nesnenin nasıl oluşturulacağını gösterir.
Microsoft Entra ID ile yetkilendirmek için bir güvenlik ilkesi kullanmanız gerekir. İhtiyacınız olan güvenlik sorumlusunun türü, uygulamanızın nerede çalıştığına bağlıdır. Bu tabloyu kılavuz olarak kullanın.
Uygulamanın çalıştığı yer | Güvenlik sorumlusu | Yönerge |
---|---|---|
Yerel makine (geliştirme ve test) | Servis Principal | Uygulamayı kaydetmeyi, bir Microsoft Entra grubu ayarlamayı, rolleri atamayı ve ortam değişkenlerini yapılandırmayı öğrenmek için bkz . Geliştirici hizmet sorumlularını kullanarak erişimi yetkilendirme |
Yerel makine (geliştirme ve test) | Kullanıcı kimliği | Microsoft Entra grubu ayarlamayı, rol atamayı ve Azure'da oturum açmayı öğrenmek için bkz . Geliştirici kimlik bilgilerini kullanarak erişimi yetkilendirme |
Azure'da barındırılan | Denetim Altındaki Kimlik | Azure'da barındırılan uygulamalardan yönetilen kimlik kullanarak erişimi yetkilendirme hakkında bilgi almak için |
Azure dışında barındırılan (örneğin, şirket içi uygulamalar) | Servis Principal | Uygulamayı kaydetmeyi, rolleri atamayı ve ortam değişkenlerini yapılandırmayı öğrenmek için bkz . Uygulama hizmet sorumlusu kullanarak şirket içi uygulamalardan erişimi yetkilendirme |
Bu makaledeki kod örnekleriyle çalışmak için Azure RBAC yerleşik rolünü Depolama Dosyası Verileri Ayrıcalıklı Katkıda Bulunanı güvenlik sorumlusuna atayın. Bu rol, ayarlanan dosya/dizin düzeyi NTFS izinlerinden bağımsız olarak tüm yapılandırılmış depolama hesapları için paylaşımlardaki tüm verilere tam okuma, yazma, değiştirme ve silme erişimi sağlar. Daha fazla bilgi için bkz. REST üzerinden Azure Dosyalar OAuth ile Microsoft Entra ID kullanarak Azure dosya paylaşımlarını erişme.
DefaultAzureCredential kullanarak erişimi yetkilendirme
Erişimi yetkilendirmenin ve Azure Dosyalar'a bağlanmanın kolay ve güvenli bir yolu , DefaultAzureCredential örneği oluşturarak OAuth belirteci almaktır. Ardından bu kimlik bilgilerini kullanarak bir ShareClient
nesne oluşturabilirsiniz.
Aşağıdaki örnek, kullanılarak ShareClient
yetkilendirilmiş bir DefaultAzureCredential
nesne oluşturur ve ardından paylaşımdaki bir ShareDirectoryClient
dizinle çalışmak için bir nesne oluşturur:
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
// ...
string accountName = "<account-name>";
string shareName = "<share-name>";
ShareClientOptions options = new()
{
AllowSourceTrailingDot = true,
AllowTrailingDot = true,
ShareTokenIntent = ShareTokenIntent.Backup,
};
ShareClient shareClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{shareName}"),
new DefaultAzureCredential(),
options);
ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient("sample-directory");
Kullanıcıların kimliğini doğrulamak için tam olarak hangi kimlik bilgisi türünü kullandığınızı biliyorsanız, .NET için Azure Identity istemci kitaplığındaki diğer sınıfları kullanarak bir OAuth belirteci alabilirsiniz. Bu sınıflar TokenCredential sınıfından türetilir.
Bu yetkilendirme mekanizmalarının her biri hakkında daha fazla bilgi edinmek için bkz. Dosya verilerine erişimi yetkilendirmeyi seçme.
Örnek: Dosya Paylaşımları istemci kitaplığını kullanarak dosyaları kopyalama
Aşağıdaki yöntemi kullanarak dosyaları bir dosya paylaşımı içinde veya dosya paylaşımları arasında kopyalayabilirsiniz:
Bir nesneden BlobClient
aşağıdaki yöntemi kullanarak bir dosyayı hedef bloba kopyalayabilirsiniz:
Aşağıdaki kod örneği, bir dosyanın başka bir dosya paylaşımındaki bir dosyaya nasıl kopyalanmasını gösterir:
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
string accountName = "<account-name>";
string srcShareName = "src-file-share";
string destShareName = "dest-file-share";
string srcFilePath = "src/path/to/file";
string destFilePath = "dest/path/to/file";
TokenCredential tokenCredential = new DefaultAzureCredential();
ShareClientOptions options = new()
{
ShareTokenIntent = ShareTokenIntent.Backup,
};
ShareFileClient srcShareFileClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{srcShareName}/{srcFilePath}"),
tokenCredential,
options);
ShareFileClient destShareFileClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{destShareName}/{destFilePath}"),
tokenCredential,
options);
// Copy the file from the source share to the destination share
await destShareFileClient.StartCopyAsync(srcShareFileClient.Uri);
Örnek: Dosya Paylaşımları istemci kitaplığını kullanarak dosya kiralama
Kira, Azure tarafından kira kimliği aracılığıyla yönetilen bir dosyada kilit oluşturur. Kira, dağıtılmış bir sistemdeki birden çok istemcideki dosyalara erişimi koordine etmek için bir mekanizma sağlar. Bir dosya üzerindeki kiralama, özel yazma ve silme erişimi sağlar. Kira durumları ve eylemleri hakkında daha fazla bilgi edinmek için bkz. Kira Dosyası.
Aşağıdaki kod örneğinde kira istemcisi oluşturma, dosyada sonsuz süreli kiralama alma ve kirayı serbest bırakma işlemi gösterilmektedir:
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
using Azure.Storage.Files.Shares.Specialized;
string accountName = "<account-name>";
string shareName = "sample-file-share";
string filePath = "path/to/file";
TokenCredential tokenCredential = new DefaultAzureCredential();
ShareClientOptions options = new()
{
ShareTokenIntent = ShareTokenIntent.Backup,
};
ShareFileClient fileClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{shareName}/{filePath}"),
tokenCredential,
options);
ShareLeaseClient leaseClient = fileClient.GetShareLeaseClient();
// Acquire a lease on the source file
await leaseClient.AcquireAsync(duration: ShareLeaseClient.InfiniteLeaseDuration);
// Do something with the file
// Release the lease
await leaseClient.ReleaseAsync();
Hem SMB hem de FileREST API'sini kullanırken, FileREST API kiralamalarının dosya kilitlerini yönetmek için kullanıldığını, SMB'nin ise işletim sistemi tarafından yönetilen dosya sistemi kilitlerini kullandığını unutmayın. SMB ile FileREST API arasındaki dosya kilitleme etkileşimlerini yönetme hakkında daha fazla bilgi edinmek için bkz. Dosya kilitlerini yönetme.
Örnek: Dosya Paylaşımları istemci kitaplığını kullanarak paylaşım anlık görüntülerini oluşturma ve listeleme
Paylaşım anı görüntüleri, bir dosya paylaşımının belirli bir noktadaki salt okunur kopyalarıdır. Bir dosya paylaşımının anlık görüntüsünü oluşturabilir ve ardından anlık görüntünün oluşturulduğu sırada paylaşımdaki verilere erişmek için anlık görüntüyü kullanabilirsiniz. Ayrıca bir dosya paylaşımındaki tüm anlık görüntüleri listeleyebilir ve paylaşım anlık görüntülerini silebilirsiniz.
Aşağıdaki kod örneğinde paylaşım anlık görüntüsü oluşturma, dosya paylaşımındaki anlık görüntüleri listeleme ve paylaşım anlık görüntüsünde dizin ağacında dolaşma işlemleri gösterilmektedir:
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
string connectionString = "<connection-string>";
ShareServiceClient shareServiceClient = new ShareServiceClient(connectionString);
ShareClient shareClient = shareServiceClient.GetShareClient("sample-file-share");
// Create a snapshot
ShareSnapshotInfo snapshotInfo = await shareClient.CreateSnapshotAsync();
Console.WriteLine($"Snapshot created: {snapshotInfo.Snapshot}");
// List snapshots in a share
await foreach (ShareItem shareItem in shareServiceClient.GetSharesAsync(ShareTraits.All, ShareStates.Snapshots))
{
if (shareItem.Snapshot != null)
{
Console.WriteLine($"Share: {shareItem.Name} (Snapshot: {shareItem.Snapshot})");
}
}
// List directories and files in a share snapshot
string snapshotTimestamp = snapshotInfo.Snapshot.ToString();
ShareClient shareSnapshot = shareClient.WithSnapshot(snapshotTimestamp);
ShareDirectoryClient rootDir = shareSnapshot.GetRootDirectoryClient();
await ListDirectoryTreeAsync(rootDir);
static async Task ListDirectoryTreeAsync(ShareDirectoryClient directory)
{
await foreach (ShareFileItem fileItem in directory.GetFilesAndDirectoriesAsync())
{
if (fileItem.IsDirectory)
{
Console.WriteLine($"Directory: {fileItem.Name}");
await ListDirectoryTreeAsync(directory.GetSubdirectoryClient(fileItem.Name));
}
else
{
Console.WriteLine($"File: {fileItem.Name}");
}
}
}
Uyarı
OAuth belirteçleri, örneğin DefaultAzureCredential
kullanılırken elde edilenler gibi, dosya paylaşımı düzeyinde veri düzlemi işlemleri için izin verilmez. Paylaşım anlık görüntüleriyle çalışmak için istemci nesnesinin hesap anahtarı kullanılarak yetkilendirilmiş olması gerekir.
ShareClient
Bu kod örneğinde oluşturulan nesne, hesap anahtarını içeren bir bağlantı dizesi kullanır.
Hesap anahtarlarının veya bağlantı dizelerinin depolanması bir güvenlik riski oluşturur. Bunları yalnızca Microsoft Entra kimlik doğrulaması kullanılamadığında kullanmalısınız. Hesap anahtarlarını Azure Key Vault'ta güvenli bir şekilde depolama hakkında daha fazla bilgi edinmek için bkz. Azure Key Vault yönetilen depolama hesabı anahtarları hakkında.
Azure Depolama yönetim kitaplıklarını kullanarak Azure Dosyalar kaynaklarını yönetme
Azure Depolama yönetim kitaplıkları, Azure Depolama kaynak sağlayıcısı REST API'sinde oluşturulur. Azure Depolama kaynak sağlayıcısı, Azure Resource Manager'ı temel alan bir hizmettir ve hem bildirim temelli (şablonlar) hem de kesinlik temelli (doğrudan API çağrısı) yöntemlerini destekler. Azure Depolama kaynak sağlayıcısı REST API'si, dosya paylaşımları dahil olmak üzere Azure Depolama kaynaklarına programlı erişim sağlar. Azure SDK, Azure Depolama kaynak sağlayıcısı REST API'sini oluşturan yönetim kitaplıkları sağlar.
Yönetim kitaplıkları , dosya hizmeti veya dosya paylaşımı düzeyinde gerçekleştirilen işlemler için önerilir. Bu bölümde, Azure Dosyalar kaynaklarını yönetmek için Azure Depolama yönetim kitaplıklarını kullanmayı öğreneceksiniz.
Örnek: Azure Depolama yönetim kitaplığını kullanarak dosya paylaşımı oluşturma
Aşağıdaki kod örneğinde en üst düzey ArmClient
nesne oluşturma, Depolama kaynak sağlayıcısını bir aboneliğe kaydetme ve Azure Depolama yönetim kitaplığını kullanarak dosya paylaşımı oluşturma işlemleri gösterilmektedir:
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
// Create a resource identifier, then get the subscription resource
ResourceIdentifier resourceIdentifier = new($"/subscriptions/<subscription-id>");
SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);
ResourceProviderResource resourceProvider =
await subscription.GetResourceProviderAsync("Microsoft.Storage");
// Check the registration state of the resource provider and register, if needed
if (resourceProvider.Data.RegistrationState == "NotRegistered")
resourceProvider.Register();
// Get a resource group
ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync("<resource-group-name>");
// Get a collection of storage account resources
StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();
// Get a specific storage account resource
StorageAccountResource storageAccount = await accountCollection.GetAsync("<storage-account-name>");
// Get a file service resource for the storage account
FileServiceResource fileService = storageAccount.GetFileService();
// Create a new file share (or update if it already exists)
ArmOperation <FileShareResource> fileShareOperation = await fileService
.GetFileShares()
.CreateOrUpdateAsync(WaitUntil.Completed, "sample-file-share", new FileShareData()
{
ShareQuota = 1024,
// Add file share properties here
});
// Get the file share resource
FileShareResource fileShare = fileShareOperation.Value;
FileShareData sınıfını kullanarak dosya paylaşımı özelliklerini yapılandırabilirsiniz. Önceki örnek, ShareQuota
özelliğinin nasıl ayarlanacağını gösterir.
Uyarı
Kayıt işlemini gerçekleştirmek için şu Azure RBAC eylemi için izinlere ihtiyacınız vardır: Microsoft.Storage/register/action. Bu izin Katılımcı ve Sahip yerleşik rollerinin parçasıdır.
Örnek: Azure Depolama yönetim kitaplığını kullanarak dosya paylaşımlarını ve anlık görüntüleri listeleme
Aşağıdaki kod örneği, bir depolama hesabında dosya paylaşımlarını ve anlık görüntüleri listelemeyi gösterir:
// Iterate over a collection of file shares and list them along with any snapshots
string expand = "snapshots";
await foreach (FileShareResource shareResource in fileService.GetFileShares().GetAllAsync(expand: expand))
{
// Call operations on the file share resource
// For this demo, print out the resource name and snapshot information
FileShareData resourceData = shareResource.Data;
Console.WriteLine($"Resource name: {resourceData.Name}");
if (resourceData.SnapshotOn.HasValue)
{
Console.WriteLine($"Snapshot: {resourceData.SnapshotOn}");
}
}
İlgili içerik
Azure Dosyalar ile geliştirme hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın: