• آرشیو دوره های آفلاین
  • آرشیو دورهای آنلاین
  • قوانین و مقررات
  • مقالات رایگان
  • بیشتر …
    • آرشیو کامل پرووید
    • محصولات هدیه
    • سفارش پروژه
    • درباره من
    • تماس با من
      • سبد خرید

        0
    سوالی دارید؟
    09178169907
    info@provid.ir
    ثبت نامورود
    پروویدپرووید
    • آرشیو دوره های آفلاین
    • آرشیو دورهای آنلاین
    • قوانین و مقررات
    • مقالات رایگان
    • بیشتر …
      • آرشیو کامل پرووید
      • محصولات هدیه
      • سفارش پروژه
      • درباره من
      • تماس با من
        • سبد خرید

          0

      آموزش ASP.NET Core Blazor

      • خانه
      • بلاگ
      • آموزش ASP.NET Core Blazor
      • استفاده کردن در Containerها و Blazor در پروژه عملی

      استفاده کردن در Containerها و Blazor در پروژه عملی

      • ارسال شده توسط پرووید
      • دسته بندی آموزش ASP.NET Core Blazor
      • تاریخ جولای 17, 2020
      • نظرات 0 نظر

      با یکی دیگر از مقالات وب سایت پرووید در رابطه با توسعه وب اپلیکیشن ها با استفاده از Blazor در خدمت شما هستیم. همان طور که احتمالاً می‌دانید فریمورک Blazor امروز توسط مایکروسافت به عنوان یک فریمورک Interactive برای ساختن Front-End اپلیکیشن های تحت وب با استفاده از سی شارپ مورد استفاده قرار می گیرد، در این مقاله قصد داریم نحوه قرار دادن اپلیکیشن‌های Blazor در Container ها را به منظور Development و Deployment به شما آموزش بدهیم. ما در این مقاله از .NET Core CLI استفاده خواهیم کرد بنابراین دستوراتی که دریافت خواهید کرد می‌توانند در پلتفرم های مختلف مورد استفاده قرار بگیرد. در ابتدا توصیه می‌کنیم در صورت تمایل به به یادگیری فریمورک Blazor حتماً از بسته ی آموزش ویدئویی شروع به کار با Blazor در ASP.NET Core و بسته ی آموزش ویدئویی بلیزر (Blazor) پیشرفته و ساخت برنامه های تجاری و بسته ی آموزش ویدئویی Authentication و Authorization در بلیزر (Blazor) استفاده کنید.

      در ابتدا به بررسی مدل‌های میزبانی و یا اصطلاحاً Hosting Model ها در فریمورک Blazor خواهیم پرداخت.

      بررسی Hosting Model ها در فریمورک Blazor

      به طور کلی در فریمورک Blazor دو مدل میزبانی و یا Hosting Model برای اپلیکیشن تعریف می‌شوند. نیازمندیهای هر دوی این Hosting Model ها با یکدیگر متفاوت است، بنابراین در ابتدا در رابطه با این دو Hosting Model صحبت خواهیم کرد.

      •  مدل میزبانی Blazor WebAssembly: مدل میزبانی و یا Hosting Modelی که تحت عنوان Blazor WebAssembly شناخته می شود یک web framework می باشد که بر روی client-side و درون مرورگر کاربر با استفاده از وب اسمبلی اجرا می گردد.
      •  مدل میزبانی Blazor Server: این مدل میزبانی یک web framework می باشد که بر روی server-side اجرا می شود و سپس با استفاده از یک اتصال از نوع SignalR با مرورگر ارتباط برقرار می کند. در صورت تمایل به یادگیری SignalR در یک پروژه واقعی می توانید از لینک وزش ویدیویی سیگنال استفاده کنید. ضمنا سعی می‌کنیم در ادامه مقاله دیگری در رابطه با Hosting Modelهای Blazor به طور مفصل بر روی وبسایت منتشر کنیم.

      بررسی مفصل WebAssembly Hosting Model

      در این قسمت قصد داریم به طور دقیق در رابطه با مدل میزبانی WebAssembly در فریمورک Blazor صحبت کنیم، هدف این مدل میزبانی در واقع Host کردن و یا میزبانی برنامه به صورت کامل به درون مرورگر کاربر می باشد. مصنوعات یک اپلیکیشن Blazor با این مدل میزبانی در واقع محتویات html و جاوا اسکریپت و البته یک نسخه از .NET Runtime به همراه فایل های باینری می باشند بنابراین شما می توانید تمامی این مصنوعات را در قالب یک وب سایت استاتیک در مرورگر کاربر میزبانی کنید. در این نوع از مدل میزبانی هیچ Server Runtime و یا مفسر خاصی مورد نیاز نیست، البته در زمان انتشار این آموزش بر روی وبسایت پرویید مدل میزبانی Blazor WebAssembly هنوز در حالت پیش نمایش و یا Preview قرار دارد و به همین دلیل نیاز است که Template ایجاد کردن یک Blazor WebAssembly را به صورت دستی نصب کنید. البته ممکن است در زمانی که شما این مقاله را میخوانید این روال متفاوت باشد به هر حال اگر این مدل میزبانی از اپلیکیشن‌های Blazor هنوز هم در حالت پیش نمایش و یا Preview قرار دارند می‌توانید با استفاده از دستور زیر نسخه پیش نمایش را به دست بیاورید:

      dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview4.19579.2

      حال که این Template را نصب کردید به سادگی می توانید یک اپلیکیشن وب اسمبلی جدید را با استفاده از دستور .NET CLI زیر ایجاد کنید:

      dotnet new blazorwasm -o wasmtest

      این دستور باعث می‌شود که یک اپلیکیشن از نوع Blazor WebAssembly با نام “wasmtest” ایجاد شود. البته می توانید نام پروژه را به هر نام دیگری تغییر بدهید زمانی که پروژه را build و سپس تست کردید می توانید آن را به راحتی Publish کنید برای Publish کردن پروژه از دستور زیر استفاده می کنید:

      dotnet publish -c Release

      و پس از انجام این کار پنجره زیر را خواهید دید:

      در این قسمت ما می توانیم مسیر مصنوعات و یا اصطلاحاً Artifact هایی که می خواهیم به عنوان یک اپلیکیشن .NET Core آنها را اجرا کنیم مشخص کنیم، این کار با استفاده از دستور dotnet run انجام می‌شود. قسمت زیر را مشاهده کنید:

      /home/jeremy/Projects/wasmtest/bin/Debug/netstandard2.1/publish/

      حال در رابطه با یکی از قابلیت های جذاب Blazor WebAssembly صحبت خواهیم کرد و آن هم استفاده کردن از فایل های استاتیک به عنوان مصنوعات پروژه می باشد علاوه بر این ما یک Output Folder برای Blazor داریم، این فولدر جایی است که همین فایل های استاتیک در آن منتشر می‌شوند. در مورد پروژه ما چون نام آن “wasmtest” می باشد، فولدر در مسیر زیر قرار دارد:

      bin/Release/netstandard2.1/publish/wasmtest/dist

      این موضوع ممکن است بر روی دستگاه و یا کامپیوتر شما متفاوت باشند دقت کنید که فولدر dist فقط شامل فایل های استاتیک میباشد این موضوع در تصویر زیر نیز نشان داده شده است:

      حال می توانید این فایل را از درون هر Web Host استاتیکی اجرا کنید من یک فولدر جدید را برای Container ایجاد می کنم و البته در کنار آن نیز یک فولدر به نام artifacts قرار می‌دهم و تمامی محتویات فولدر dist را به درون فولدر artifacts کپی می‌کننم کد زیر این موضوع نشان می‌دهد:

      mkdir -p ~/Projects/wasmcontainer/artifacts

      cp -r ~/Projects/wasmtest/bin/Release/netstandard2.1/publish/wasmtest/dist/* ~/Projects/wasmcontainer/artifacts/

      حال در فولدر wasmcontainer می‌بایستی یک فایل داکتر جدید ایجاد کنیم این موضوع در کد زیر نشان داده شده است:

      FROM nginx COPY artifacts /usr/share/nginx/html

      این فایل nginx image را دریافت کرده و سپس فایل ها را از درون فولدر artifacts  در ماشین شما به فولدر /usr/share/nginx/html که فولدر پیش فرض nginx  می باشد کپی می کند، این فولدر فایل سیستم Container شما قرار دارد. درواقع این کار هر زمان که می خواهید image مورد نظر را Build کنیم و یا تغییراتی بر روی artifact ها لحاظ کرده‌ایم، اتفاق خواهد افتاد و در این رابطه نیاز است که image  مورد نظر   دوباره Build شود. تمام کاری که نیاز به انجام دادن آن داشتیم که بتوانیم فایل های استاتیک پروژه Blazor WebAssembly را اجرا کنیم همین بود. حال می توانید با دستور زیر یک image را ایجاد نمایید

      docker build -t jeremy/wasmtest:latest .

      و پس از انجام این کار با استفاده از دستور زیر آن را اجرا کنیم :

      docker run –name wasm1 -p 80:80 -d jeremy/wasmtest:latest

      این موضوع باعث می‌شود که Container  به عنوان یک Daemon اجرا بگردد و تا زمانی که آن را متوقف نکرده اید به اجرا شدن ادامه خواهد داد. پس تا به اینجای کار ما یک nginx server داریم که اپلیکیشن ما را بر روی پورت ۸۰ اجرا می کند. می توانید با مرورگر تان به این صفحه رفته و خروجی زیر را مشاهده کنید:

      حال در Production Environment باید بدانید که نیاز است پیکربندی های بیشتری را برای NGINX انجام بدهید، با این وجود این مراحل اپلیکیشن Blazor WebAssembly ما را در یک Container برای انجام Development میزبانی خواهد کرد.

       بررسی Blazor Server Hosting Model

      در ادامه می خواهیم در رابطه با مدل میزبانی سرور صحبت کنیم. برای استفاده کردن از این مدل میزبانی می‌بایست .NET Core runtime 3.0 و یا ورژن های بالاتر را نصب کنید. یک اپلیکیشن که با این مدل میزبانی ایجاد شده است با یک Template به نام blazorserver  ساخته شده است. در این مثال من نام پروژه را servertest گذاشته ام. این موضوع در کد زیر نشان داده شده است:

      dotnet new blazorserver -o servertest

      پس از این که کار شما در تغییر برنامه کامل شد و آماده Deploy  کردن آن هستید دستور زیر را اجرا کنید:

      dotnet publish -c Release

      و خروجی شبیه به تصویر زیر خواهد بود:

      حال مصنوعات و یا artifact ها در فولدر زیر قرار داده خواهد شد:

      /app/bin/Release/netcoreapp3.1/publish/

      به علاوه ما یک فولدر دیگر شبیه به کاری که در قسمت قبلی انجام دادیم، ایجاد خواهیم کرد این موضوع در کد زیر نشان داده شده است:

      mkdir -p ~/Projects/servercontainer/artifacts

      cp -r bin/Release/netcoreapp3.1/publish/* ~/Projects/servercontainer/artifacts/

      و لیست مربوط به مصنوعات و artifact ها شبیه به تصویر زیر خواهد بود:

      حال یک فایل داکر دیگر در فولدر servercontainer را ایجاد خواهیم کرد که شبیه به قسمت زیر خواهد بود:

      FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

      COPY artifacts/ app/

      ENTRYPOINT [“dotnet”, “app/servertest.dll”]

      این فایل فقط دارای کد یک خط بیشتر نسبت به فایل قبلی می باشد، این خط مربوط به لحاظ کردن ایمیج مربوط به aspnet runtime می باشد. علاوه بر این تمامی artifact ها کپی شده و پس از آن یک نقطه ورود و یا Entry Point برای اپلیکیشن لحاظ می گردد. در این مثال این نقطه ورود servertest.dll است چرا که نام پروژه ما servertest می باشد. حال می‌توانیم image  مورد نظر را build  کرده و این کار را با دستور زیر انجام دهیم:

      docker build -t jeremy/servertest:latest .

      این دستور شبیه به قسمت زیر خواهد بود:

      که می‌توانیم با استفاده از دستور زیر اقدام به اجرا کردن کنیم:

      docker run –name server1 -p 80:80 -d jeremy/servertest:latest

      باری دیگر این image  به عنوان یک daemon  اجرا خواهد شد و تا زمانی که آن را متوقف نکرده ایم به اجرا شدن ادامه خواهد داد. در ادامه می توانید اپلیکیشن Blazor Server خود را بر روی پورت ۸۰ شبیه به تصویر زیر مشاهده کنید:

       جمع بندی

      همانطور که در این مقاله از وب سایت پرووید مشاهده کردید، فرآیند Build  کردن تعدادی Container برای Deploy  کردن اپلیکیشن های Blazor کاری بسیار ساده است، فقط باید دقت کنید که Hosting Modelهای مختلف Blazor کمی با یکدیگر متفاوت هستند و می بایست image های  منحصر به فرد هر کدام را به صورت جداگانه ایجاد کنید. image های که در این مقاله ایجاد کردیم برای فرآیند Deployment و البته Testing مناسب هستند اما اگر میخواهید این ها را در Production Environment قرار بدهید باید به موارد زیر دقت کنید:

      •  از SSL به جای استفاده کردن از پورت ۸۰ استفاده کنید.
      • سعی کنید NGINX را برای Blazor WASM پیکربندی کنید تا بتوانید حداقل بهینه سازی‌های مربوط به سیستم کشف کردن را به دست بیاورید.
      •  حتماً NGINX و یا یک Reverse Proxy دیگر را برای اپلیکیشن های Blazor Server   سرور پیکربندی کنید.

      در پایان امیدوارم که این مقاله از وبسایت پرووید در مورد توجه تمامی عزیزان قرار گرفته باشد. یک بار دیگر توصیه می‌کنیم که در صورت تمایل به یادگیری Blazor حتماً از بسته ی آموزش ویدئویی شروع به کار با Blazor در ASP.NET Core و بسته ی آموزش ویدئویی بلیزر (Blazor) پیشرفته و ساخت برنامه های تجاری و بسته ی آموزش ویدئویی Authentication و Authorization در بلیزر (Blazor) استفاده بفرمایید.

      • اشتراک گذاری:
      author avatar
      پرووید

      مطلب قبلی

      ساختن یک وب اپلیکیشن با استفاده از ASP.NET Core Blazor
      جولای 17, 2020

      نظر بدهید لغو پاسخ

      نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

      جستجو

      دسته‌ها

      • آموزش .NET Core
      • آموزش AngularJS
      • آموزش ASP.NET
      • آموزش ASP.NET Core
      • آموزش ASP.NET Core Blazor
      • آموزش ASP.NET MVC
      • آموزش Domain Driven Design
      • آموزش Entity Framework Core
      • آموزش HTML
      • آموزش jQuery
      • آموزش JSON
      • آموزش KnockoutJS
      • آموزش LightSwitch
      • آموزش LINQ
      • آموزش NuGet
      • آموزش SignalR
      • آموزش Test Driven Development
      • آموزش WCF
      • آموزش WPF
      • آموزش Xamarin
      • آموزش Xamarin.Forms
      • آموزش اصول توسعه و طراحی نرم افزار
      • آموزش الگوریتم های برنامه نویسی
      • آموزش تست نرم افزار
      • آموزش سی شارپ دات نت
      • آموزش شی گرایی
      • آموزش معماری نرم افزار
      • آموزش وی بی دات نت
      • آموزش ویژوال استادیو
      • دسته‌بندی نشده
      • سیستم عامل ها

      آخرین پست ها

      استفاده کردن در Containerها و Blazor در پروژه عملی
      17جولای2020
      ساختن یک وب اپلیکیشن با استفاده از ASP.NET Core Blazor
      19ژانویه2020
      بررسی مفاهیم Cohesion و Coupling در توسعه نرم افزار
      04دسامبر2019

      لینک ها

      • پروفایل کاریری
      • سفارش پروژه
      • محصولات
      • مقالات
      • تماس با من

      آخرین دیدگاه‌ها

      • پرووید در بسته ی آموزش ویدئویی Design Pattern ها در سی شارپ
      • میثم در بسته ی آموزش ویدئویی Design Pattern ها در سی شارپ
      • پرووید در بسته ی آموزش ویدئویی ساخت وب اپلیکیشن با ASP.NET MVC و React
      logo-eduma-the-best-lms-wordpress-theme

      شماره همراه: 09026515310

      ایمیل: info@provid.ir

      شبکه های اجتماعی: 09178169907

      ایران – فارس – شیراز – بلوار فدک – کوچه 11 ساختمان سایدا 3 – واحد 1 – کدپستی 7156676564

      کلیه حقوق برای پرووید محفوظ می باشد.

      ورود با حساب کاربری سایت شما

      No apps configured. Please contact your administrator.

      رمز عبوررا فراموش کرده اید؟

      هنوز عضو نیستید؟ همین حالا عضو شو!

      ساخت حساب کاربری


      CAPTCHA Image

      Play CAPTCHA Audio Loading audio
      تغییر تصویر

      شما عضو هستید؟ وارد شوید