BlazingPizza: Aplikasi Blazor dari awal hingga akhir. Bagian 1. Mengatur lingkungan

Halo semuanya! Jika Anda pernah mendengar tentang Blazor , tetapi masih belum mengerti apa itu. Maka Anda berada di alamat. Ini adalah artikel pertama dari serangkaian 12 artikel yang akan membawa Anda melalui semua lingkaran neraka seluruh proses pembuatan aplikasi di Blazor . Pada akhirnya, kita akan memiliki situs siap pakai untuk restoran pizza kecil, cukup di tingkat situs siap pakai untuk beberapa restoran pizza. Karena itu, Anda akan bangga;)

Ini akan menjadi sedikit tidak biasa untuk HelloWorld . Saya sengaja pergi ke beberapa komplikasi yang sebaiknya segera diambil sebagai aturan, khususnya, ini adalah arsitektur tiga lapis yang khas: View-Domain-DataAccess .

Saya percaya bahwa lebih baik segera mengikutinya daripada menunjukkan sesuatu yang artifisial, tidak terkait dengan kehidupan. Seperti yang diperlihatkan oleh praktik, banyak pengembang terjebak di tingkat HelloWorld dan kemudian menggunakan apa yang mereka lihat ketika merancang aplikasi besar apriori (halo kepada mantan Bank Paling Hijau Negara saya dan Service.cs -nya dengan semua kode aplikasi dalam satu file, saya tidak bercanda).

Saya akan memberi tahu Anda cara memetakan data antar lapisan tanpa rasa sakit dan tanpa perlu menulis banyak baris kode. Kami juga akan menyebarkan semuanya di Azure DevOps. Ya, sekarang ini adalah bagian penting dari proses pengembangan, kita semua terbang di awan hari ini, beberapa di tempat , beberapa di Azure atau AWS .

Juga, sehingga artikel pertama bukan cerita dangkal tentang cara mengklik satu tombol di Visual Studio, dan kemudian yang lain, saya pikir akan menyenangkan untuk mengatur tantangan kecil dan mencoba melakukan sesuatu di Linux untuk pertama kalinya .

Saya berharap Anda memiliki pengetahuan minimal tentang ASP.NET, C #. Meskipun ini HelloWorld, saya tidak akan berbicara tentang apa itu Program.cs.

Selanjutnya, kita membahas apa lagi yang diperlukan untuk pemrograman di Linux .
Perhatian: Dalam beberapa paragraf berikut, kesan saya diterima dari pekerjaan nyata dengan Linux, yang menginstalnya dari niat terbaik, jika Linux memberi Anda perasaan antusias dan Anda tidak dapat hidup sehari tanpa membuka baris perintah, maka Anda dapat merusak suasana hati Anda, Terus membaca artikel ini!

Distribusi: Ubuntu


Sebenarnya, Anda tidak akan merasa nyaman pemrograman di Linux, tetapi jika Anda ingin fokus pada bisnis, instal Ubuntu 19.10 . Saya berhasil mengatakannya untuk yang kedua kalinya, ada baiknya setidaknya untuk yang kedua kalinya. Dan semua tim menyelesaikan pertama kalinya, hampir semua. Saya sangat menyarankan untuk tidak memasang distribusi lain, saya menghabiskan sepanjang hari untuk menyiapkan OpenSuse terbaru , dan kemudian menghancurkannya.

Mengapa Anda bahkan perlu mengembangkan di Linux ? Yah, setidaknya karena .Net Core mendukungnya dan mungkin atasan Anda akan memutuskan untuk menghemat uang dan menjalankan segala sesuatu di Linux. Dan menurut saya, menulis lebih baik di bawah OS di mana aplikasi Anda akan benar-benar berjalan.

Pemenang IDE: Penunggang


Seperti yang saya katakan, masih tidak mungkin untuk menulis dengan nyaman di Linux , untuk semua kejahatan, mari kita pilih yang lebih kecil, Rider.

Selain itu, ada juga dua IDE yang lebih populer , seperti editor teks MonoDevelop dan Visual Studio Code . Saya akan memberi tahu Anda tentang kerugian setiap solusi secara lebih rinci.

Pengembangan Monode


Lucu dari tiga editor. Font yang dapat dibaca (font berkualitas rendah adalah hal pertama yang akan menarik perhatian Anda saat pindah ke Linux). Namun sayangnya di balik shell yang indah ada kekosongan, meskipun diinstal. Net Core 2.1 dan 3.1 , MonoDevelop terus-menerus menciptakan ConsoleApplication dengan target. Net Core 1.1. Blazor tidak berhasil membuat proyek, atau meluncurkan proyek yang dibuat secara manual.

Kode studio visual


Sebenarnya, ini bukan IDE , ini adalah editor teks dengan penyorotan sintaks dan kemampuan membangun. Dari keuntungan dari upaya ke-3 atau ke-4, VS Code secara ajaib meluncurkan proyek WebAssembly yang saya buat ketika MonoDevelop dan Rider menolak untuk melakukan ini. Ini merupakan nilai tambah. Saya daftar lebih jauh minusnya: font default yang tidak terbaca dan kecil, saya pikir setelah beberapa bulan bekerja secara teratur, mata Anda akan menjadi gila.

Minus berikutnya mengikuti dari fakta bahwa ini adalah editor teks, tindakan sederhana seperti mengubah nama, memindahkan proyek? Segala sesuatu yang Visual Studio lakukan secara otomatis, dan kami terima begitu saja, dilakukan secara manual di sini.

Pengendara


Semuanya jauh lebih baik di sini daripada kawan-kawan di atas, Rider bahkan mengambil templat yang saya instal untuk Blazor WebAssembly . Dan dia bahkan membuat aplikasi, tetapi karena alasan tertentu IDE ini menolak untuk meluncurkannya. Demi keadilan, Server Blazor berkumpul dan mulai tanpa masalah. Rider

juga memungkinkan Anda untuk menambah repositori saat membuat proyek git. Tetapi pada saat yang sama. Gitignore entah bagaimana ternyata kosong. Itu, sekali lagi, intervensi manual diperlukan, dan Penunggang, untuk berjaga-jaga, saya ingatkan Anda, bersaing dengan VS dan JetBrains

mengambil uang untuk produknya. Nah, dan seperti biasa masalahnya, secara umum di Linux, pada prinsipnya, ini adalah font yang buruk, mereka beberapa sangat tipis, sulit dibaca. Elemen juga semuanya kecil, mereka masih perlu diarahkan. Juga, beberapa kali, dalam dua hari kerja, Rider menggantung sistem saat memuat solusi sederhana. Komputer harus di-boot ulang dengan reset, yang tentu saja tidak baik (pembaruan: pada saat artikel ini ditulis, ini sudah terjadi lima kali).

Pemenang dalam nominasi Best C # IDE untuk Linux :
Rider - terlepas dari semua kekurangannya, saya berhasil memastikan bahwa IDE ini secara konsisten merakit dan meluncurkan proyek, sekali lagi, untuk beberapa alasan, browser tidak memulai secara default, ini harus dilakukan secara manual.

Di bawah ini di tangkapan layar, Penunggang (perhatikan font), dan upaya untuk menjalankan proyek Blazor WebAssembly , yang dibuat oleh dirinya sendiri, dengan MonoDevelop situasi yang sama.



Jika semuanya sangat buruk, mengapa menggunakan Linux ?


Biarkan saya mengingatkan Anda bahwa ini adalah proyek pelatihan, tujuannya adalah untuk menunjukkan bahwa Anda masih dapat bekerja di Linux.

Selain itu, ketidaksempurnaan alat pengembangan untuk Linux mendorong kita untuk banyak tindakan manual yang akan memungkinkan kita untuk belajar lebih banyak tentang bagaimana. Net bekerja di bawah tenda dan memahami berapa banyak pekerjaan yang dilakukan Visual Studio untuk kita.

Apa yang ingin kita dapatkan?


Pada akhirnya, kita mendapatkan aplikasi yang bagus, seperti pada contoh di bawah ini:



Dan sekarang untuk kasus ini. Mari kita mulai dengan menginstal .Net Core 3.1

Instal .Net Core 3.1


.Net Inti 3.1.1 SDK adalah versi terbaru yang tersedia dari SDK , tersedia dalam Ubuntu repositori . Blazor berubah sangat cepat, oleh karena itu, untuk bekerja dengan Blazor WebAssembly, gunakan 3.1.1, versi stabil terbaru.

Pada awalnya kita perlu mendaftarkan kunci Microsoft dan repositori mereka, ini dilakukan dengan perintah-perintah berikut dalam aplikasi Terminal (klik tombol Win dan masukkan Term , itu akan muncul dalam daftar yang tersedia):



  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

Sekarang langsung ke instalasi .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

Instal templat Blazor WebAssembly


Dengan instalasi .Net Core selesai, sekarang Anda perlu menginstal Blazor WebAssembly Template , yang akan saya ingatkan saat sedang dalam tahap Pratinjau yang akan segera dirilis pada bulan Mei. Sehari sebelum saya mulai menulis artikel, versi yang diperbarui 3.2.0-preview1.20073.1 (h) dirilis pada 28 Januari

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

Instalasi git


Jika Anda masih belum menginstal Git , maka inilah saatnya untuk melakukannya. Sebenarnya, perintah pertama tidak diperlukan sama sekali, Ubuntu akan meminta Anda untuk memasukkan kata sandi, jika hak istimewa diperlukan untuk menjalankan perintah, kami akan mengantisipasinya =):

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

Bukan itu saja, Blazor menggunakan Mono ketika dieksekusi di browser , yang berarti kita perlu menginstalnya juga.

Instalasi Mono


Pertama, tambahkan repositori Mono ke sistem:

  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

Sekarang instal langsung Mono itu sendiri :

sudo apt install mono-complete

Ini adalah proses cepat yang memakan waktu sekitar 10 menit pada laptop saya dengan prosesor Core-i5 6200U, karena kompilasi sumber dilakukan langsung di komputer Anda.

Selamat! Kami telah menginstal semua yang Anda butuhkan untuk mengembangkan proyek Blazor WebAssembly.
Sekarang Anda dapat langsung menuju ke proyek itu sendiri.

Tapi sebelum itu, istirahat dari memasukkan perintah dan menyegarkan dalam memori apa Blazor WebAssembly itu.

Blazor WebAssembly dan dimakan dengan apa


Blazor adalah kerangka kerja web yang dirancang untuk berjalan baik di sisi klien di browser melalui teknologi WebAssembly (menggunakan runtime .Net , atau lebih tepatnya implementasi Mono , yang baru-baru ini, berkat pembukaan sumber .Net, hampir tidak berbeda dari platform aslinya), atau di sisi server dengan hosting di aplikasi Asp.Net Core dan bertukar data melalui teknologi SignalR (melalui penciptaan koneksi Sirkuit ).

Seperti yang Anda lihat dari uraian di atas, Blazor! = .Net WebAssembly implementasi.
Jika Anda membuang WebAssembly dari bundel ini , Anda dapat mengembangkan aplikasi Blazor Server dan itu akan berfungsi bahkan di IE 11yang tidak pernah mendengar apa pun tentang teknologi modern dan bersyukur kepada Tuhan, dia tidak akan pernah mendengar lagi.

Karena kami membuat aplikasi berdasarkan pendekatan Blazor WebAssembly . Maka kita akan mempertimbangkannya sedikit lagi.

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

    Blazor , .

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

    Blazor , , , .
  2. Mungkin kelemahan utama dari pendekatan ini adalah debugging yang rumit, Anda tidak dapat mengatur breakpoints, Anda tidak akan jatuh ke dalamnya, meskipun saya pikir ini bersifat sementara, karena mungkin untuk terhubung ke IE dan men-debug kode JS sebelumnya di studio .

    Yah, mungkin minus kedua yang jelas adalah perlunya mengunduh semua sumber, sekali lagi saya pikir masih ada banyak peluang untuk optimasi.
  3. Sebenarnya, setelah mengunduh dan semua proses persiapan, aplikasi kami berjalan di aliran UI peramban dan memulai pelaksanaannya. Anda dapat memanggil kode JS apa pun dari C # dan sebaliknya.

Tidak ada gambar untuk waktu yang lama, jadi di sini ada satu di bawah ini :)



Utilitas dotnet


Selanjutnya kita akan secara aktif menggunakan utilitas dari .Net Core SDK - dotnet.

Ini memungkinkan Anda melakukan banyak hal berguna, kami hanya tertarik pada beberapa hal:

dotnet build 

Perintah di atas mengumpulkan solusi, jika Anda mulai dari folder dengan solusi, tidak ada argumen yang diperlukan.

dotnet new blazorwasm -ho -o BlazingPizza

Ini memungkinkan Anda untuk membuat proyek baru berdasarkan templat yang muncul setelah kata baru, dalam kasus kami blazorwasm , di sini misalnya Anda bisa menentukan classlib atau konsol .

Berikutnya adalah parameter spesifik templat, dalam hal ini -ho , parameter ini menunjukkan bahwa aplikasi kita akan di-host di sisi server dalam aplikasi ASP.NET Core , juga. Net akan membuat Pengontrol untuk kita, yang dapat kita gunakan secara khusus untuk membuat api web dan mengaksesnya tidak hanya dari aplikasi Blazor, tetapi juga dari klien lain.

Opsi terakhir -o menunjukkan folder tempat solusi yang dibuat akan ditempatkan, secara default, ini adalah direktori saat ini.

dotnet run 

Tim lain yang berguna, seperti namanya, meluncurkan aplikasi kami.

Pembuatan proyek


Jadi kami akan mengeksekusi tim yang sudah dikenal untuk menghasilkan solusi kami. Untuk ini, pilih tempat yang Anda kenal, misalnya, folder RiderProjects yang dibuat oleh Rider IDE dan yang terletak di path / home / {userName}:

dotnet new blazorwasm -ho -o BlazingPizza


Setelah membuat, kami akan membangun proyek dan akhirnya menjalankannya untuk menikmati hasil seperti apa (perintah pertama dijalankan pada tingkat file BlazingPizza.sln):

dotnet build


Semuanya seharusnya berlalu tanpa masalah, buka folder Server dan jalankan:

dotnet run


Dan akhirnya, kita melihat hasil yang berharga:



Hebat, semuanya bekerja. Sekarang jangan lupa tentang penampilan situs untuk waktu yang lama dan beralih ke isinya.

Hasil dari perintah pertama (dotnet baru) adalah struktur folder:



Menurut saya, ini bukan skema yang baik, lebih baik jika folder memiliki awalan dengan nama solusinya, itu lebih akrab (inilah yang dilakukan VisaulStudio saat membuat proyek baru) dan membuatnya jelas bahwa ini bukan semacam ext. folder layanan. Seiring waktu, proyek dapat tumbuh menjadi banyak folder yang tidak mengandung kode C # , dan jika Anda pergi ke Explorer , akan sulit untuk menavigasi di mana apa, selain itu, mungkin ada beberapa penyebaranskrip berdasarkan pada fakta bahwa di setiap folder nama yang dimulai dengan nama solusi, proyek berada, ini normal, karena ini adalah perilaku jangka panjang Visual Studio dan Anda dapat mengandalkannya.

Maka kami mengganti nama proyek dan folder yang ada yang mengandungnya (sejauh ini kami tidak tahu apa-apa tentang IDE , kami menggunakan Linux , dan untuk pertama kalinya tidak akan membantu, karena folder dan proyek diberi nama berbeda):

Klien => BlazingPizza.Client
Server => BlazingPizza.Server
Shared => BlazingPizza.Shared

Perubahan yang sesuai harus ditampilkan dalam file solusi BlazingPizza.sln . Di mana jalur ke proyek "[Server] \ ~" ditunjukkan dan di bawah ini kami akan mengganti sesuai dengan"BlazingPizza. [Server] \ ~" seperti pada tangkapan layar di bawah ini:



Mari kita buat perubahan serupa pada file BlazingPizza.Server.csproj:



Dan akhirnya, BlazingPizza.Client.csproj akan terlihat seperti tangkapan layar di bawah ini:



Dengan perubahan untuk saat ini, kami memiliki cukup sudah cukup terakumulasi sehingga sayang sekali hilang, jadi kami akan menghubungkan sistem kontrol versi ke solusi kami. Untuk melakukan ini, akhirnya buka IDE Rider dan solusi kami, di sini semuanya sama seperti di Visual Studio, Anda dapat membuka dengan memilih file solusi.

Setelah semuanya dimuat, buka menu VCS => Aktifkan Integrasi Kontrol Versi . Dan di sini kita menghubungkan Git. Rider akan menambahkan file layanan ke folder dengan solusi dan menyoroti semua file dengan warna merah, yang berarti bahwa file-file ini tidak diperbaiki dalam sistem kontrol versi.
Pertama kali Rider akan menawarkan untuk melakukan semua yang ada di proyek termasuk isi bin dan folder obj , kita tentu tidak memerlukan ini, semua karena file .gitignore yang ditambahkan secara default kosong. Pindahkan ke root satu tingkat dengan file BlazingPizza.sln dan ganti isinya dengan konten dari bawah kata.

Isi file .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


Setelah itu, jumlah file yang tidak berkomitmen harus menurun tajam menjadi 31.

Buat komit pertama kami pada tab Repositori:



Masukkan komit awal dalam deskripsi komit dan sertakan semua file dalam komit dengan mengklik โ€œFile tidak berversiโ€ => โ€œTambahkan ke VCSโ€ :



C infrastrukturnya kurang lebih siap, mari kita bicara sedikit tentang isi solusinya.

Konten Solusi


BlazingPizza.ClientUI . 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.

Ganti nama proyek BlazingPizza. Dibagikan sekarang ke BlazingPizza.DomainModels . Di sini harus dikatakan bahwa Rider, meskipun memiliki tanda eksperimental, melakukan pekerjaan yang sangat baik. Jalankan proyek dan pastikan semuanya berfungsi dan tidak ada yang rusak.



Akan menyenangkan untuk membuat komit dengan perubahan, jika hanya untuk melihat seberapa banyak Rider lakukan untuk kami, izinkan saya mengingatkan Anda jika itu adalah Visual Studio Code , Anda harus melakukan semua ini dengan pena diri Anda sendiri, lihat file diff dengan mengkliknya.



Tambahkan Proyek Baru


Tambahkan beberapa proyek lagi, mulai dengan BlazingPizza.ViewModels . Ini akan menampilkan model tampilan pada klien. Untuk menambahkan, klik kanan pada solusi dan pilih Tambah => Proyek Baru (jenis proyek dalam ini dan selanjutnya di bagian Perpustakaan Kelas ini )


BlazingPizza.DataAccess.ModelsModel yang digunakan dalam lapisan untuk mengakses data dari database
Infrastruktur BlazingPizza.DataSemua itu bertanggung jawab untuk berinteraksi dengan basis data
BlazingPizza.Services.InterfacesAntarmuka untuk layanan dipisahkan dari implementasi sehingga jika Anda menggunakan implementasi lain selain default, Anda tidak perlu menyeretnya bersama Anda.
BlazingPizza. LayananImplementasi layanan, misalnya, PizzaService , yang akan menambahkan pizza ke database sambil melakukan semacam pemeriksaan terkait dengan logika bisnis.

Jika ada yang tidak beres, atau hanya tidak ingin membuang waktu mengatur dan mulai segera dari pelajaran kedua, sumbernya ada di sini .

Oh ya, saya hampir lupa :) Tautan ke proyek asli (Lisensi MIT) .

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


All Articles