Azure Files 3: Share v rámci Cloud Services


Již jsme si ukázali, jak síťový share v Azure vytvořit a jak nastavit jeho připojení, aby přežilo restarty. Nyní je na řadě připojení sdíleného úložiště ke Cloud Services – tedy PaaS části Azure, kterou tvoří webové a worker role.

Tento článek je součástí třídílné série:

Na úvod trochu teorie: Cloud Services se publikují do Azure jako balíčky, které následně infrastruktura rozdistribuuje na virtuální stroje podle toho, jak vývojář nastaví. Cloud Service může obsahovat webové i worker role (nebo jen jednu z nich) a škáluje je nezávisle. Web Role slouží k hostování webů a aplikací v rámci IIS, účelem Worker Role je pak práce na pozadí – můžeme například nechat uživatele nahrát obrázek přes web a worker (nebo několik workerů) z něj následně vytvoří náhledy v různých velikostech. Pokud byste si chtěli o Cloud Services počíst v oficiální dokumentaci, můžete zde.

V tomto článku si ukážeme, jak připojit sdílené úložiště k worker roli. Pro web by byl postup obdobný.

Základem je metoda OnStart(), která se vykoná při každém startu role. Základní implementaci, jež nám vygenerovalo Visual Studio, rozšíříme o instrukci připojení Share a zápis jednoduchého souboru:

        publicoverridebool OnStart()

        {

            // Set the maximum number of concurrent connections

            ServicePointManager.DefaultConnectionLimit = 12;

 

            // For information on handling configuration changes

            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

 

            bool result = base.OnStart();

 

            Trace.TraceInformation(“WorkerRole1 has been started”);

 

            MountShare(@”\<account name>.file.core.windows.net<share name>”, “Z:”, “<account name>”, “<account key>”);

 

            File.WriteAllText(“Z:\test.txt”, “Hello world”);

 

            return result;

        }

 

Implementace metody MountShare() vypadá takto:

        publicstaticvoid MountShare(string shareName,

                               string driveLetterAndColon,

                               string username,

                               string password)

        {

            if (!String.IsNullOrEmpty(driveLetterAndColon))

            {

                // ujisteni, ze toto pismeno jiz neni pouzito pro jine mapovani

                WNetCancelConnection2(driveLetterAndColon, 0, true);

            }

 

            NETRESOURCE nr = newNETRESOURCE();

            nr.dwType = ResourceType.RESOURCETYPE_DISK;

            nr.lpRemoteName = shareName;

            nr.lpLocalName = driveLetterAndColon;

 

            int result = WNetAddConnection2(nr, password, username, 0);

 

Comments (0)

Skip to main content