BlazingPizza: تطبيق Blazor من البداية إلى النهاية. الجزء 1. تهيئة البيئة

تحية للجميع! إذا كنت قد سمعت عن Blazor ، ولكنك لا تزال لا تفهم ما هو. ثم أنت على العنوان. هذه هي المقالة الأولى في سلسلة من 12 مقالة تأخذك عبر جميع دوائر الجحيم طوال عملية إنشاء تطبيق على Blazor . في النهاية ، سيكون لدينا موقع جاهز لمطعم بيتزا صغير ، تمامًا على مستوى المواقع الجاهزة لبعض مطاعم البيتزا. لذلك ، سوف تفخر بذلك ؛)

سيكون هذا قليلاً من HelloWorld العادي . ذهبت عمدا إلى بعض المضاعفات التي من الأفضل أخذها على الفور كقواعد ، على وجه الخصوص ، هذه بنية نموذجية من ثلاث طبقات: View-Domain-DataAccess .

أعتقد أنه من الأفضل اتباعه على الفور بدلاً من إظهار شيء مصطنع ، لا علاقة له بالحياة. كما تظهر الممارسة ، يتعثر العديد من المطورين على مستوى HelloWorld ثم يستخدمون ما رأوه عند تصميم تطبيقات كبيرة مسبقة الدفع (مرحبًا إلى بلدي Green Bank of the Country السابق و Service.cs الخاص به مع جميع رموز التطبيق في ملف واحد ، أنا لا أمزح).

سأخبرك بكيفية تعيين البيانات بين الطبقات دون ألم ودون الحاجة إلى كتابة العديد من أسطر التعليمات البرمجية. سننشر أيضًا كل شيء في Azure DevOps. نعم ، الآن هذا جزء ضروري من أي عملية تطوير ، كلنا نطير في السحب اليوم ، وبعضها في أماكن العمل ، وبعضها في Azure أو AWS .

أيضًا ، حتى لا تكون المقالة الأولى قصة مبتذلة حول كيفية الضغط على زر واحد في Visual Studio ، ثم آخر ، اعتقدت أنه سيكون من الجيد ترتيب تحدٍ صغير ومحاولة القيام بشيء ما على Linux للمرة الأولى .

أتوقع أن يكون لديك الحد الأدنى من المعرفة بـ ASP.NET و C #. على الرغم من أن هذا هو HelloWorld ، لن أتحدث عن ما هو Program.cs.

بعد ذلك ، نناقش ما هو مطلوب أيضًا للبرمجة في Linux .
انتباه: في الفقرتين التاليتين ، يتم تلقي انطباعي من العمل الحقيقي مع Linux ، الذي قام بتثبيته من أفضل النوايا ، إذا كان Linux يمنحك مشاعر حماسية ولا يمكنك العيش يومًا واحدًا دون فتح سطر الأوامر ، يمكنك تدمير مزاجك ، الاستمرار في قراءة هذا المقال!

التوزيع: أوبونتو


في الحقيقة ، لن تكون مرتاحًا للبرمجة في Linux ، ولكن إذا كنت تريد التركيز على الأعمال ، فقم بتثبيت Ubuntu 19.10 . تمكنت من وضعه في المرة الثانية ، من الجيد أنه على الأقل في المرة الثانية. وأكملت جميع الفرق في المرة الأولى ، كلها تقريبا. أنصح بشدة بعدم تثبيت أي توزيعات أخرى ، قضيت اليوم كله في إعداد أحدث OpenSuse ، ثم هدمته للتو.

لماذا تحتاج حتى إلى التطوير في Linux ؟ حسنًا ، على الأقل لأن .Net Core يدعمها وربما يقرر صاحب العمل توفير المال وتشغيل كل شيء على Linux في المنتج. وفي رأيي ، فإن الكتابة أفضل في ظل نظام التشغيل الذي سيتم تشغيل تطبيقك عليه بالفعل.

الفائز IDE: رايدر


كما قلت ، لا يزال من غير الممكن الكتابة بشكل مريح تحت لينكس ؛ لجميع الشرور ، دعنا نختار أصغر ، رايدر.

بالإضافة إلى ذلك ، هناك أيضًا اثنان من IDE IDs الأكثر شيوعًا ، مثل محرري النصوص MonoDevelop و Visual Studio Code . سأخبرك عن عيوب كل حل بمزيد من التفصيل.

تطوير أحادي


ألطف من المحررين الثلاثة. الخطوط القابلة للقراءة (الخطوط منخفضة الجودة هي أول ما يلفت انتباهك عند الانتقال إلى Linux). ولكن للأسف وراء القشرة الجميلة هناك فراغ ، على الرغم من تثبيت .Net Core 2.1 و 3.1 ، قام MonoDevelop باستمرار بإنشاء ConsoleApplication بالنسبة لي مع الهدف .Net Core 1.1. لم ينجح Blazor في إنشاء المشروع ، ولا إطلاق المشروع الذي تم إنشاؤه يدويًا.

كود الاستوديو المرئي


بالمعنى الدقيق للكلمة ، هذا ليس IDE ، إنه محرر نصوص مع تسليط الضوء على بناء القدرات وإمكانية البناء. من مزايا المحاولة الثالثة أو الرابعة ، أطلقت VS Code بأعجوبة مشروع WebAssembly الذي أنشأته عندما رفض MonoDevelop و Rider القيام بذلك. هذا زائد. أسرد المزيد من السلبيات: خط افتراضي صغير غير قابل للقراءة ، أعتقد أنه بعد بضعة أشهر من العمل المنتظم ، ستصبح عيناك مجنونة ببساطة.

يتبع السالب التالي من حقيقة أن هذا محرر نص ، مثل إجراء بسيط مثل إعادة تسمية المشاريع المتحركة؟ كل شيء يقوم به Visual Studio تلقائيًا ، ونعتبره أمرًا مسلمًا به ، يتم يدويًا هنا.

رايدر


كل شيء أفضل بكثير هنا من الرفاق أعلاه ، حتى اختار رايدر القالب الذي قمت بتثبيته لـ Blazor WebAssembly . وقام أيضًا بإنشاء تطبيق ، ولكن لسبب ما رفض IDE إطلاقه. من أجل الإنصاف ، تجمع Blazor Server وبدأ دون أي مشاكل. يسمح لك Rider

أيضًا بإضافة مستودع عند إنشاء مشروع git. ولكن في نفس الوقت تبين أن .gitignore بطريقة ما فارغة. هذا هو ، مرة أخرى ، التدخل اليدوي مطلوب ، و Rider ، فقط في حالة تذكيرك ، يتنافس مع VS و JetBrains

يأخذ المال لمنتجه. حسنًا ، وكالعادة ، تكون المشكلة بشكل عام في لينكس ، من حيث المبدأ ، خطوطًا سيئة ، وبعضها رقيق جدًا وقريبًا من القراءة. العناصر كلها صغيرة أيضًا ، ولا تزال بحاجة إلى التصويب. أيضا ، عدة مرات ، في يومين من العمل ، علق رايدر النظام عند تحميل حل بسيط. يجب إعادة تشغيل الكمبيوتر مع إعادة تعيين ، وهو بالطبع ليس جيدًا (التحديث: بحلول وقت كتابة هذه المقالة ، حدث هذا خمس مرات بالفعل).

الفائز في الترشيح Best C # IDE لنظام Linux :
Rider - على الرغم من جميع أوجه القصور ، تمكنت من التأكد من تجميع IDE هذا للمشروع وإطلاقه باستمرار ، مرة أخرى ، لسبب ما ، لم يبدأ المتصفح بشكل افتراضي ، يجب القيام بذلك يدويًا.

أدناه في لقطة الشاشة ، رايدر (انتبه إلى الخطوط) ، ومحاولة لتشغيل مشروع Blazor WebAssembly ، الذي أنشأه بنفسه ، مع MonoDevelop موقف مماثل.



إذا كان كل شيء سيئًا للغاية ، فلماذا تستخدم Linux ؟


دعني أذكرك بأن هذا مشروع تدريب ، وكان الهدف هو إظهار أنه لا يزال بإمكانك العمل على Linux.

بالإضافة إلى ذلك ، فإن النقص في أدوات التطوير لنظام Linux يدفعنا إلى الكثير من الإجراءات اليدوية التي ستسمح لنا بمعرفة المزيد حول كيفية عمل .Net تحت غطاء المحرك وفهم مقدار العمل الذي يقوم به Visual Studio بالنسبة لنا.

ما الذي نريد الحصول عليه؟


في النهاية ، نحصل على تطبيق جيد ، كما في المثال أدناه:



والآن للحالة. لنبدأ بتثبيت .Net Core 3.1

تثبيت .Net Core 3.1


.Net Core 3.1.1 SDK هو أحدث إصدار متوفر من SDK ، وهو متوفر في مستودع Ubuntu . يتغير Blazor بسرعة كبيرة ، لذلك ، للعمل مع Blazor WebAssembly ، استخدم 3.1.1 ، أحدث إصدار ثابت.

في البداية ، نحتاج إلى تسجيل مفتاح Microsoft ومخزونها ، ويتم ذلك باستخدام الأوامر التالية في تطبيق Terminal (انقر فوق الزر Win وأدخل Term ، يجب أن يظهر في قائمة المفاتيح المتوفرة):



  1. wget -q https://packages.microsoft.com/config/ubuntu/19.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  2. sudo dpkg -i packages-microsoft-prod.deb

انتقل الآن مباشرةً إلى تثبيت .Net Core SDK:

  1. sudo apt-get update
  2. sudo apt-get install apt-transport-https
  3. sudo apt-get update
  4. sudo apt-get install dotnet-sdk-3.1

قم بتثبيت قالب Blazor WebAssembly


بعد الانتهاء من تثبيت .Net Core ، تحتاج الآن إلى تثبيت قالب Blazor WebAssembly ، والذي سأذكرك به أثناء وجوده في مرحلة المعاينة التي سيتم إصدارها منه على الفور في شهر مايو. قبل يوم واحد فقط من بدء كتابة المقال ، تم إصدار الإصدار المحدث 3.2.0-preview1.20073.1 (h) في 28 يناير

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1

تركيب بوابة


إذا لم تقم بتثبيت Git ، فقد حان الوقت للقيام بذلك. بالمعنى الدقيق للكلمة ، الأمر الأول ليس ضروريًا على الإطلاق ، سيطلب منك Ubuntu إدخال كلمة مرور ، إذا كانت هناك امتيازات مطلوبة لتنفيذ الأمر ، فسنتوقعها =):

  1. sudo su
  2. add-apt-repository ppa:git-core/ppa
  3. apt update; apt install git

هذا ليس كل شيء ، يستخدم Blazor Mono عند تنفيذه في المتصفح ، مما يعني أننا بحاجة إلى تثبيته أيضًا.

تركيب أحادي


أولاً ، أضف مستودعات Mono إلى النظام:

  1. sudo apt install gnupg ca-certificates
  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
  3. echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
  4. sudo apt update

الآن تثبيت مباشرة مونو نفسها :

sudo apt install mono-complete

هذه عملية سريعة تستغرق حوالي 10 دقائق على جهاز الكمبيوتر المحمول الخاص بي بمعالج Core-i5 6200U ، لأن تجميع المصدر يتم مباشرة على جهاز الكمبيوتر الخاص بك.

تهانينا! لقد قمنا بتثبيت كل ما تحتاجه لتطوير مشاريع Blazor WebAssembly.
الآن يمكنك الذهاب مباشرة إلى المشروع نفسه.

ولكن قبل ذلك ، خذ استراحة من إدخال الأوامر وقم بتحديث الذاكرة في Blazor WebAssembly.

Blazor WebAssembly وماذا يؤكل مع


Blazor هو إطار عمل على الويب مصمم للتشغيل إما من جانب العميل في المتصفح عبر تقنية WebAssembly (باستخدام وقت تشغيل .Net ، أو بالأحرى تطبيقات Mono ، التي اختلفت تقريبًا بفضل فتح مصادر .Net عن النظام الأساسي الأصلي) ، أو من جانب الخادم مع استضافة في تطبيق Asp.Net Core وتبادل البيانات من خلال تقنية SignalR (من خلال إنشاء اتصالات الدوائر ).

كما ترى من الوصف أعلاه ، Blazor! = تنفيذ Net WebAssembly.
إذا قمت بإخراج WebAssembly من هذه الحزمة ، يمكنك تطوير تطبيق Blazor Server وسيعمل حتى في IE 11الذين لم يسمعوا أي شيء عن التكنولوجيا الحديثة والحمد لله لن يسمع مرة أخرى.

نظرًا لأننا نصنع تطبيقًا بناءً على نهج Blazor WebAssembly . ثم سننظر في الأمر أكثر قليلاً.

  1. index.html app, . blazor.webassembly.js . Blazor , ( AutoMapper, AutoFac) Mono .

    Blazor , .

    Blazor(3.1.0-preview4.19579.2, ) .Net, Blazor, .

    Blazor , , , .
  2. ربما يكون العيب الرئيسي لهذا النهج هو تصحيح الأخطاء المعقدة ، ولا يمكنك تعيين نقاط توقف ، ولن تقع فيها ، على الرغم من أنني أعتقد أن هذا مؤقت ، لأنه كان من الممكن الاتصال بـ IE وتصحيح كود JS في وقت سابق في الاستوديو .

    حسنًا ، ربما يكون العامل الثاني الواضح هو الحاجة إلى تنزيل جميع المصادر ، مرة أخرى أعتقد أنه لا يزال هناك العديد من الفرص للتحسين.
  3. في الواقع ، بعد التنزيل وجميع العمليات التحضيرية ، يعمل تطبيقنا في دفق واجهة مستخدم المتصفح ويبدأ تنفيذه. يمكنك استدعاء أي رمز JS من C # والعكس صحيح.

لم تكن هناك صور لفترة طويلة ، لذلك هنا واحدة أدناه :)



فائدة Dotnet


علاوة على ذلك ، سنستخدم بنشاط الأداة المساعدة من .Net Core SDK - dotnet.

يتيح لك القيام بالعديد من الأشياء المفيدة ، نحن مهتمون فقط ببعض:

dotnet build 

يقوم الأمر أعلاه بجمع الحل ، إذا بدأت من المجلد الذي يحتوي على الحل ، فلا يلزم وجود وسيطات.

dotnet new blazorwasm -ho -o BlazingPizza

يسمح لك بإنشاء مشروع جديد بناءً على القالب الذي يأتي بعد كلمة جديدة ، في حالتنا هو blazorwasm ، هنا على سبيل المثال يمكنك تحديد classlib أو وحدة التحكم .

فيما يلي المعلمات المحددة للقالب ، في هذه الحالة -هذه تشير هذه المعلمة إلى أن تطبيقنا سيتم استضافته على جانب الخادم في تطبيق ASP.NET Core ، أيضًا . Net سيقوم بإنشاء وحدات تحكم لنا ، والتي يمكننا استخدامها بشكل خاص لإنشاء واجهة برمجة تطبيقات الويب والوصول إليها ليس فقط من تطبيق Blazor ، ولكن أيضًا من عملاء آخرين.

يشير الخيار الأخير -o إلى المجلد الذي سيتم وضع الحل الذي تم إنشاؤه فيه ، وهذا هو الدليل الحالي افتراضيًا.

dotnet run 

هناك فريق آخر مفيد ، كما يوحي الاسم ، يطلق تطبيقنا.

إنشاء المشروع


ولذا سنقوم بتنفيذ الفريق المألوف لإنشاء حلنا. لهذا ، حدد مكانًا تعرفه ، على سبيل المثال ، مجلد RiderProjects الذي أنشأه Rider IDE والذي يقع على المسار / home / {userName}:

dotnet new blazorwasm -ho -o BlazingPizza


بعد الإنشاء ، سنقوم ببناء المشروع وتشغيله أخيرًا للاستمتاع بنوع النتيجة (يتم تنفيذ الأمر الأول على مستوى ملف BlazingPizza.sln):

dotnet build


يجب أن يمر كل شيء دون مشاكل ، انتقل إلى مجلد الخادم وقم بتنفيذ:

dotnet run


وأخيرًا ، نرى النتيجة العزيزة:



عظيم ، كل شيء يعمل. الآن ، دعونا لا ننسى مظهر الموقع لفترة طويلة وننتقل إلى محتوياته.

كانت نتيجة الأمر الأول (dotnet new) هي بنية المجلد هذه:



في رأيي ، هذا ليس مخططًا جيدًا ، فمن الأفضل إذا كانت المجلدات تحتوي على بادئة باسم الحل ، فمن المألوف أكثر (هذا ما يفعله VisaulStudio عند إنشاء مشاريع جديدة) وتوضيح أن هذا ليس نوع من تحويلة. مجلد الخدمة. بمرور الوقت ، يمكن أن ينمو المشروع إلى الكثير من المجلدات التي لا تحتوي على رمز C # ، وإذا انتقلت إلى Explorer ، فسيكون من الصعب التنقل إلى حيث قد يكون هناك بعض النشرالبرامج النصية بناءً على حقيقة أنه في كل مجلد يبدأ اسمه باسم الحل ، يقع المشروع ، وهذا أمر طبيعي ، لأن هذا هو السلوك طويل المدى لـ Visual Studio ويمكنك الاعتماد عليه.

ولذا فإننا نعيد تسمية المشاريع والمجلدات الحالية التي تحتوي عليها (حتى الآن لا نعرف أي شيء عن IDE ، فنحن على Linux ، ولأول مرة لن يساعد ، لأن المجلدات والمشاريع يتم تسميتها بشكل مختلف):

Client => BlazingPizza.Client
الخادم => BlazingPizza.Server
Shared => BlazingPizza.Shared

يجب عرض التغييرات المقابلة في ملف الحل BlazingPizza.sln . حيث يتم الإشارة إلى مسار المشروع "[Server] \ ~" وأدناه سيتم استبداله بـ"BlazingPizza. [Server] \ ~" كما في الصورة أدناه:



فلنقم بإجراء تغييرات مماثلة في ملف BlazingPizza.Server.csproj:



وأخيرًا ، يجب أن تبدو BlazingPizza.Client.csproj مثل لقطة الشاشة أدناه:



مع التغييرات في الوقت الحالي ، لدينا ما يكفي تراكمت بما فيه الكفاية أنه سيكون من العار أن تخسر ، لذلك سنقوم بتوصيل نظام التحكم في الإصدار بحلنا. للقيام بذلك ، أخيرًا افتح IDE Rider والحلول ، هنا كل شيء هو نفسه كما في Visual Studio ، يمكنك فتحه بتحديد ملف حل.

بمجرد تحميل كل شيء ، انتقل إلى القائمة VCS => تمكين تكامل التحكم في الإصدار . وهنا نربط Git. سيضيف Rider ملفات الخدمة إلى المجلد مع الحل ويبرز جميع الملفات باللون الأحمر ، مما يعني أن هذه الملفات ليست ثابتة في نظام التحكم في الإصدار.
في المرة الأولى التي سيعرض فيها Rider تنفيذ كل ما هو موجود في المشروع بما في ذلك محتويات مجلدات bin و obj ، فنحن بالتأكيد لا نحتاج هذا ، كل هذا لأن ملف .gitignore الذي تمت إضافته افتراضيًا فارغ. انقله إلى المستوى الأول مع ملف BlazingPizza.sln واستبدل محتوياته بالمحتويات من تحت الكاتا.

محتويات ملف .gitignore
# Default ignored files
/workspace.xml
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk 
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output 
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder 
.mfractor/

# sqlite
*.db

# Don't ignore server launchSettings.json. We need a specific port number for auth to work.
!**/BlazingPizza.Server/Properties/launchSettings.json


بعد ذلك ، يجب أن ينخفض ​​عدد الملفات غير الملتزم بها بشكل حاد إلى 31.

إنشاء أول التزام لنا في علامة تبويب المستودع:



أدخل الالتزام الأولي في وصف الالتزام وقم بتضمين جميع الملفات في الالتزام بالنقر على "الملفات غير المحولة" => "إضافة إلى VCS" :



C البنية التحتية جاهزة بشكل أو بآخر ، فلنتحدث قليلاً عن محتويات الحل.

محتوى الحل


بيتزا. العميلUI . Startup.cs < pp > . App.razor < pp > index.html .
wwwroot/index.html — , html c < app > .
_framework/blazor.webassembly.js .Net , Mono . .
BlazingPizza.Server
blazorwasm -ho, “Hosted deployment with ASP.NET Core – ASP.NET Core . dotnet -ho , web api. , , , - . Standalone hosting IIS, .
BlazingPizza.Shared( BlazingPizza.DomainModels)
. . , .

: Pizza, , . , - - property. , JavaScript Kotlin.

إعادة تسمية مشروع BlazingPizza. شارك الآن إلى BlazingPizza.DomainModels . هنا يجب أن يقال أن رايدر ، على الرغم من العلامة التجريبية ، قام بعمل ممتاز. قم بتشغيل المشروع وتأكد من أن كل شيء يسير على ما يرام وأنه لا يوجد شيء مكسور.



سيكون من الجيد إنشاء التزام بالتغييرات ، فقط إذا رأيت فقط مقدار ما فعله Rider لنا ، سأذكرك إذا كان Visual Studio Code ، سيكون عليك القيام بكل هذا باستخدام الأقلام بنفسك ، انظر إلى الملفات المختلفة بالضغط عليها.



إضافة مشاريع جديدة


أضف المزيد من المشاريع ، ابدأ بـ BlazingPizza.ViewModels . سيتم عرض نماذج العرض على العميل. للإضافة ، انقر بزر الماوس الأيمن على الحل وحدد Add => New Project (نوع المشروع في هذا المشروع وفي التالي في هذا الجزء من مكتبة Class )


BlazingPizza.DataAccess.Modelsالنماذج المستخدمة في الطبقة للوصول إلى البيانات من قاعدة البيانات
BlazingPizza.DataAccess.Infrastructureكل ما هو مسؤول عن التفاعل مع قاعدة البيانات
بليزينج بيتزا.خدمات.واجهاتيتم فصل واجهات الخدمات عن عمليات التنفيذ بحيث إذا كنت تستخدم تطبيقات أخرى غير الافتراضية ، فلا حاجة لسحبها معك.
بيتزا - خدماتتنفيذ الخدمات ، على سبيل المثال ، بيتزا سيرفيس ، والتي ستضيف البيتزا إلى قاعدة البيانات أثناء إجراء نوع من الفحوصات المتعلقة بمنطق الأعمال.

إذا حدث خطأ ما ، أو لم ترغب في إضاعة الوقت في الإعداد والبدء على الفور من الدرس الثاني ، فإن المصدر هنا .

أوه نعم ، لقد نسيت تقريبا :) رابط إلى المشروع الأصلي (رخصة MIT) .

Source: https://habr.com/ru/post/undefined/


All Articles