Wprowadzenie do Azure Storage w języku C#
Azure Storage to podstawowa usługa oferowana przez Microsoft Azure, która w połączeniu z technologiami .NET staje sie potężnym narzędziem do przechowywania i pobierania plików w chmurze. W swoim szczegółowym poradniku "Intro to Azure Storage in C#", Tim Corey przedstawia krok po kroku, jak skonfigurować konto Azure Storage Account, ustawic Azure Blob Storage i zintegrowac je z projektem C# ASP.NET Core MVC.
W tym artykułe ściśle śledzimy wideo Tima, aby zbadać każdy etap procesu, omawiając najważniejsze pojęcia i terminologie używane w rzeczywistym rozwoju Azure.
Ceny i planowanie Azure Storage
Tim zaczyna od wyjasnienia efektywności finansowej korzystania z Azure Storage w aplikacji C#. Bez wzgledu na to, czy używasz kontenera blob do przechowywania plików tekstowych, obrazów, czy danych binarnych, koszt pozostaje minimalny. Wprowadza Azure Pricing Calculator, aby oszacowac opłaty na podstawie wybranych funkcji, takich jak poziomy wydajności, ustawienia nadmiarowosci i operacje na danych.
Tim wybiera Block Blob Storage w ramach General-purpose v2 w portalu Azure i konfiguruje goracy poziom dostepu dla plików często używanych. Upewnia sie, ze konto przechowywania korzysta z lokalnie nadmiarowego przechowywania (LRS), aby zminimalizowac koszty przy jednoczesnym zachowaniu bezpieczeństwa.
"Dla aplikacji demo przechowującej 1 GB danych i kilku tysięcy operacji, koszt wynosi 13 centow miesiecznie," wyjasnia Tim.
Tworzenie konta Azure Storage
W portalu Azure, Tim pokazuje, jak utworzyć nowa grupe zasobów i odpowiednie konto Azure Storage Account. Konwencje nazw sa scisle—nazwy kont przechowywania musza być unikalne, z malych liter i nie mogą zawierać myslnikow.
Podczas konfiguracji wylacza przechowywanie nadmiarowe z georedundancja, aby zaoszczedzic na kosztach, co jest kluczowa wskazowka dla deweloperow pracujacych nad prototypami lub w lokalnych środowiskach. Enabluje on również anonimowy dostep na poziomie kontenera, ale tylko do celow demonstracyjnych—ostrzegajac, ze rzeczywiste środowiska produkcyjne wymagaja zabezpieczonego dostepu.

Tim obejmuje również klucze dostepu, łańcuch połączenia i nazwe konta przechowywania—wszystko niezbędne, gdy projekt C# łączy sie z zasobami Azure.
Zrozumienie Azure Blob Storage
Tim podkreśla, jak kontener blob jest używany do organizowania danych w koncie Azure Storage Account. Unika recznego tworzenia nowego kontenera poprzez portal i zamiast tego planuje wygenerowanie go w kodzie przy użyciu Azure SDK dla .NET.
Wyjasnia, ze bezpieczne klucze dostepu i łańcuch połączenia—widoczne w ustawieniach bezpieczeństwa konta—zostana uzyte w aplikacji do uwierzytelniania z biblioteka klienta przechowywania.
Rozpoczęcie projektu ASP.NET Core
Tim tworzy webowa aplikacje MVC w .NET 9 za pomoca Visual Studio. Chociaż można uzyc dowolnego typu UI, takiego jak Razor Pages lub Blazor Server, wybiera on MVC do demonstracji.
O 19:35, w secrets.json, bezpiecznie przechowuje on wrazliwe dane uwierzytelniajace:
-
ciąg połączenia
-
klucz konta przechowywania
-
nazwa kontenera
- nazwa konta przechowywania

Tim wyjasnia, ze appsettings.json nie powinny zawierać tajemnic, poniewaz trafia on do repozytoriow kodu zrodlowego. Zamiast tego, tajemnice powinny być przechowywane lokalnie przy użyciu User Secrets, szczegółnie podczas rozwoju.
Instalacja wymaganych pakietów NuGet
Aby wspolpracowac z Azure Blob Storage, Tim instaluje pakiet NuGet Azure.Storage.Blobs. Docenia, jak Microsoft zmodularyzowal funkcje za pomoca Azure SDK, umożliwiajac tworzenie mniejszych, łatwiejszych w utrzymaniu aplikacji.

"Zamiast pakowac wszystko do frameworku, teraz dostajesz dokladnie to, czego potrzebujesz—jak biblioteke klienta Azure Blob—poprzez NuGet," zauwaza Tim.
Konfiguracja wzorca opcji dla Azure Storage
Następnie, Tim tworzy klase POCO (BlobStorageOptions), aby dopasowac klucze w konfiguracji. Używa wzorca opcji do wiazania konfiguracji z obiektami o silnym typowaniu, umożliwiajac centralne i testowalne konfigurowanie.
Ta konfiguracja ułatwia aplikacji .NET używania konfiguracji Azure konsekwentnie w różnych środowiskach.
Implementacja logiki usługi Blob Storage
Tim dodaje nowy folder o nazwie DataAccess i implementuje klase o nazwie BlobStorage.cs. W srodku wstrzykuje konfiguracje używajac IOptions
Buduje dwie główne metody asynchroniczne:
Logika przesyłania plików
Metoda UploadFileAsync:
-
Akceptuje IFormFile z interfejsu MVC.
-
Tworzy BlobContainerClient z Azure Storage SDK używajac łańcucha połączenia i nazwy kontenera.
-
Sprawdza, czy istnieje istniejący kontener, lub tworzy nowy kontener, jeśli nie istnieje.
-
Ustawia polityke dostepu na Brak, zapewniając, ze kontener nie jest publicznie dostępny.
- Używa BlobClient, aby przeslac plik z strumienia.
Tim używa instrukcji using i wywolania await, aby bezpiecznie obsługiwac strumien pliku, zapobiegając przeciekom pamięci.
Logika pobierania plików
W DownloadFileAsync, Tim:
-
Akceptuje ciag znakow nazwe pliku lub pełny URI bloba.
-
Tworzy nowy BlobClient używajac URI i bezpiecznych danych uwierzytelniajacych.
-
Pobiera plik za pomoca DownloadStreamingAsync.
- Oklada strumien w FileContentResult, aby umożliwic pobrania z przeglądarki.
To zapewnia, ze pliki pozostaja bezpieczne i sa dostępne tylko przez aplikacje—nie bezpośrednio przez zgadywanie URL.
Rejestrowanie Blob Storage za pomocą wstrzykiwania zależności
Tim definiuje interfejs (IBlobStorage) dla swojej klasy i rejestruje go jako Singleton w kontenerze DI .NET. Poniewaz klasa jest bezstanowa i używa tylko wartosci konfiguracji, Singleton jest optymalny.
Integracja z aplikacją MVC
Home Controller jest modyfikowany, aby korzystać z IBlobStorage. Zawiera:
-
Metoda POST UploadFile, która weryfikuje dane wejsciowe i wywoluje UploadFileAsync.
- Metoda POST GetFile, która sprawdza URL i następnie wywoluje DownloadFileAsync.
Kazda metoda wspolpracuje z klientem przechowywania, aby bezpiecznie obsługiwac pliki blob, czy to przesylajac, czy to pobierajac.
UI widoku Razor dla operacji na plikach
W Index.cshtml, Tim konfiguruje:
-
Formularz do przesylania plików za pomoca input type="file" i stylizacji Bootstrap.
-
Drugi formularz do pobierania pliku za pomoca jego URI.
-
Obsluga wiadomosci o błędach dla przypadkow brzegowych jak brakujace pliki czy nieprawidlowe URI.
- Sekcja wyświetlania, która pokazuje wygenerowany URI bloba (https) po pomyslnym przeslaniu.
Tim również obsługuje błędy przy użyciu List
Testowanie i weryfikacja bezpieczeństwa plików
Tim przesyla plik tekstowy i probuje uzyskać dostep do URI bezpośrednio w przeglądarce—nie udaje sie, jak oczekiwano, ze wzgledu na polityke dostepu Brak.
Po tymczasowej zmianie poziomu dostepu w portalu Azure, plik staje sie do pobrania przez bezpośredni link. Jednak szybciej przywraca go do poziomu Prywatny, podkreślajac, jak Azure zapewnia szczegółowa kontrole nad bezpieczenstwem.
Ostateczne rekomendacje Tima
Tim konczy, przypominajac programistom, ze Microsoft Azure oferuje wiele wartosci nawet przy minimalnych nakladach. Przy pomocy narzędzi takich jak:
-
Pakiety NuGet
-
Azure SDK
-
Visual Studio
-
Portal Azure
- Bezpieczne łańcuchy połączenia i klucze
można szybko zbudowac rozwiązanie magazynowe gotowe do produkcji używajac C#. Bez wzgledu na to, czy pracujesz nad systemem o duzej skali, czy malym projektem testowym, Azure Blob Storage to skalowalny i opłacalny wybor.
"Placisz za to, czego używasz w chmurze—wiec pytaj tylko o to, czego potrzebujesz," podkreśla Tim.
Podsumowanie
Od tworzenia konta przechowywania i konfigurowania kontenerow blob, po bezpieczne obsługiwanie przesylan i pobran w aplikacji MVC, Tim Corey zapewnia szczegółowe instrukcje, ktore obejmuja całe zycie korzystania z Azure Storage z .NET.
Z tym przewodnikiem i filmikiem Tima, można zaczac korzystać z Azure Blob Storage z pełnym zaufaniem—utrzymujac kontrole, minimalizujac koszty i przestrzegajac najlepszych praktyk w rozwoju chmurowym.
Warto zapoznac sie z jego pełnym filmikiem dla uzyskania dalszej jasnosci oraz odwiedzic jego Kanalu YouTube dla wiekszej ilosci wgladu na temat przechowywania Azure (C#).
