웹 애플리케이션 생성

ν”„λ‘œμ νŠΈκ°€ λ°±μ—”λ“œλ‘œλ§Œ κ΅¬μ„±λ˜λŠ” κ²½μš°λŠ” 거의 μ—†μŠ΅λ‹ˆλ‹€. Linoλ₯Ό μ‚¬μš©ν•˜λ©΄ μƒμ„±λœ APIλ₯Ό μ‚¬μš©ν•˜λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μƒμ„±ν•˜μ—¬ μ΅œμ’… μ‚¬μš©μž λ˜λŠ” λ‚΄λΆ€ νŒ€μ„ μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.


ν˜„μž¬ ν”„λ ˆμž„μ›Œν¬λŠ” 기본적으둜 Blazor μ›Ή μ•±(λ Œλ”λ§ λͺ¨λ“œ)을 μ§€μ›ν•©λ‹ˆλ‹€. interactive auto). κ·ΈλŸ¬λ‚˜ μ•„ν‚€ν…μ²˜λŠ” λ™μΌν•œ μ†”λ£¨μ…˜μ— μ—¬λŸ¬ ν”„λŸ°νŠΈμ—”λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ λ‹€μ–‘ν•œ μ‹œλ‚˜λ¦¬μ˜€μ™€ λŒ€μƒμ— μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Blazor μ›Ή 앱을 μ‚¬μš©ν•œ ν”„λŸ°νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜

Linoμ—μ„œ μƒμ„±λœ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ API 도ꡬ에 λŒ€ν•œ 호좜뿐만 μ•„λ‹ˆλΌ μ‹€μ œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ‚¬μš©μžλ₯Ό λ°±μ—”λ“œ μ‚¬μš© 사둀에 μ—°κ²°ν•©λ‹ˆλ‹€. ν˜„μž¬ κΈ°λ³Έ ν”„λŸ°νŠΈμ—”λ“œ μœ ν˜•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. Blazor μ›Ή μ•±, 관리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 곡개 포털, λ°±μ˜€ν”ΌμŠ€, νŒŒνŠΈλ„ˆ μ˜μ—­ 및 도메인별 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μœ„ν•΄ μ€€λΉ„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

lino web-app new --name <WebAppName>

λͺ…령은 Lino ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ›Ήμ•± 이름을 μš”μ²­ν•˜κ³ , Blazor μ›Ήμ•± ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•˜κ³ , μ„ νƒν•œ 데이터λ₯Ό ν™•μΈν•˜κ³ , ν•„μš”ν•œ νŒŒμΌμ„ μƒμ„±ν•˜κ³ , ν”„λŸ°νŠΈμ—”λ“œλ₯Ό μ†”λ£¨μ…˜μ— μ—°κ²°ν•˜λŠ” λͺ…령을 μ‹€ν–‰ν•©λ‹ˆλ‹€. 정식 ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. web-app. 별칭 webapp 그리고 web 생산성을 μœ„ν•΄ μ‘΄μž¬ν•˜μ§€λ§Œ λ¬Έμ„œμ™€ μ˜ˆμ œκ°€ 더 μ’‹μŠ΅λ‹ˆλ‹€. lino web-app new 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•΄.

무엇이 μƒμ„±λ˜λ‚˜μš”?

Lino에 μ˜ν•΄ μƒμ„±λœ Blazor μ›Ή 앱은 λ‹¨μˆœν•œ ν™”λ©΄ 폴더가 μ•„λ‹™λ‹ˆλ‹€. μ΄λŠ” λ™μΌν•œ.NET μ†”λ£¨μ…˜μ— μ ν•©ν•˜λ©° λ°±μ—”λ“œμ—μ„œ μ‚¬μš©ν•˜λŠ” λͺ¨λ“ˆμ‹ 쑰직을 λ”°λ₯΄λ©° μ„œλΉ„μŠ€ λ˜λŠ” λͺ¨λ“ˆλ³„λ‘œ 호슀트, ν΄λΌμ΄μ–ΈνŠΈ, 곡유 ꡬ성 μš”μ†Œ 및 UI ν”„λ‘œμ νŠΈ κ°„μ˜ μ±…μž„μ„ λΆ„λ¦¬ν•©λ‹ˆλ‹€.

  • μ„œλ²„ ν”„λ‘œμ νŠΈ: Blazor μ›Ή 앱을 ν˜ΈμŠ€νŒ…ν•˜κ³ , 루트 ꡬ성 μš”μ†Œλ₯Ό λ§€ν•‘ν•˜κ³ , μ„œλΉ„μŠ€ κΈ°λ³Έκ°’, 정적 μžμ‚°, μœ„μ‘° λ°©μ§€, HTTPS, MudBlazor μ„œλΉ„μŠ€ 및 λŒ€ν™”ν˜• λ Œλ”λ§ λͺ¨λ“œλ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œμ νŠΈ: WebAssembly μΈ‘μ—μ„œ μ‹€ν–‰λ˜λŠ” ꡬ성 μš”μ†Œ, λΌμš°νŒ…, λ ˆμ΄μ•„μ›ƒ, 메뉴 ꡬ쑰, λΈŒλΌμš°μ € μ„€μ •, ν˜„μ§€ν™” κΈ°λŠ₯ 및 MudBlazorμ™€μ˜ 톡합에 μ§‘μ€‘ν•©λ‹ˆλ‹€.
  • 곡유 WebApps ν”„λ‘œμ νŠΈ: 곡톡 UI λ¦¬μ†ŒμŠ€, μ•Œλ¦Ό, λŒ€ν™” μƒμž, 쿼리 λ¬Έμžμ—΄ ν…œν”Œλ¦Ώ, ν΄λΌμ΄μ–ΈνŠΈ κ²°κ³Ό, λ¬Έν™”κΆŒ/ν‘œμ€€ μ‹œκ°„λŒ€ μ„œλΉ„μŠ€ 및 μž¬μ‚¬μš© κ°€λŠ₯ν•œ ꡬ성 μš”μ†Œλ₯Ό 쀑앙 μ§‘μ€‘ν™”ν•©λ‹ˆλ‹€.
  • μ„œλΉ„μŠ€λ³„, λͺ¨λ“ˆλ³„ UI λ””μžμΈ: μ†”λ£¨μ…˜μ— μ„œλΉ„μŠ€μ™€ λͺ¨λ“ˆμ΄ μžˆλŠ” 경우 LinoλŠ” μ›Ή μ•± ν”„λ ˆμž„μ›Œν¬ 내에 ν”„λŸ°νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜μ—¬ μ»¨ν…μŠ€νŠΈ 격리된 νŽ˜μ΄μ§€, 메뉴 및 λ¦¬μ†ŒμŠ€λ₯Ό μœ μ§€ κ΄€λ¦¬ν•©λ‹ˆλ‹€.

μƒμ„±λœ 호슀트 λ ˆμ§€μŠ€ν„° AddInteractiveServerComponents 그리고 AddInteractiveWebAssemblyComponents. 루트 ꡬ성 μš”μ†Œ HeadOutlet 그리고 Routes μ‚¬μš© InteractiveAuto, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ„œλ²„λ₯Ό ν†΅ν•œ μƒν˜Έ μž‘μš©μœΌλ‘œ μ‹œμž‘ν•˜κ³  ν΄λΌμ΄μ–ΈνŠΈ λŸ°νƒ€μž„μ„ μ‚¬μš©ν•  수 μžˆμ„ λ•Œ WebAssembly둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ°±μ—”λ“œ API와 톡합

웹앱이 μ‘΄μž¬ν•˜λŠ” 경우 LinoλŠ” ν”„λŸ°νŠΈμ—”λ“œμ—μ„œ μž…λ ₯된 μ†ŒλΉ„λ₯Ό μœ„ν•΄ λ°±μ—”λ“œλ₯Ό μ€€λΉ„λœ μƒνƒœλ‘œ μœ μ§€ν•©λ‹ˆλ‹€. μ„œλΉ„μŠ€ 및 λͺ¨λ“ˆμ€ ν”„λ‘œμ νŠΈλ₯Ό μˆ˜μ‹ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Api.Contracts 그리고 Api.Client, μš”μ²­/응닡 계약 및 μž…λ ₯된 ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μƒμ„±λœ μ—”λ“œν¬μΈνŠΈμ— λ…ΈμΆœν•©λ‹ˆλ‹€.

  • UIλŠ” 각 κΈ°λŠ₯에 λŒ€ν•΄ μ›μ‹œ HTTP ν˜ΈμΆœμ„ μˆ˜λ™μœΌλ‘œ μ‘°ν•©ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
  • μƒμ„±λœ νŽ˜μ΄μ§€λŠ” API ν΄λΌμ΄μ–ΈνŠΈλ₯Ό ν˜ΈμΆœν•˜κ³  λ°±μ—”λ“œμ™€ ν•¨κ»˜ μƒμ„±λœ μš”μ²­ 및 응닡 λͺ¨λΈλ‘œ μž‘μ—…ν•©λ‹ˆλ‹€.
  • λ‹€μŒμœΌλ‘œ κ³΅μœ λ˜λŠ” λͺ¨λΈ ClientResult, QueryParams 그리고 PagedQueryParams κ²°κ³Ό 처리, ν•„ν„°, νŽ˜μ΄μ§€ λ§€κΉ€ 및 μ‹œκ°μ  ν”Όλ“œλ°±μ„ ν‘œμ€€ν™”ν•©λ‹ˆλ‹€.
  • ν˜•μ‹ν™”λœ HttpClientλ₯Ό ν†΅ν•œ 톡합은 ν”„λŸ°νŠΈμ—”λ“œλ₯Ό μ†”λ£¨μ…˜μ˜ λ‚˜λ¨Έμ§€ λΆ€λΆ„μ—μ„œ μ‚¬μš©ν•˜λŠ” 계약, κΆŒν•œ, μœ νš¨μ„± 검사 λ©”μ‹œμ§€ 및 문화와 μΌμΉ˜ν•˜κ²Œ μœ μ§€ν•©λ‹ˆλ‹€.

μ‹€μ œ 흐름은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

Blazor νŽ˜μ΄μ§€ -> ν˜•μ‹ν™”λœ API ν΄λΌμ΄μ–ΈνŠΈ -> Minimal API μ—”λ“œν¬μΈνŠΈ -> Command/Query -> λ°μ΄ν„°λ² μ΄μŠ€

이 κ²½λ‘œλŠ” 전체 μŠ€νƒ 일관성을 μœ μ§€ν•©λ‹ˆλ‹€. 도메인 λͺ¨λΈ, μ‚¬μš© 사둀, 끝점, 계약, μ§€μ—­ν™”λœ μΈν„°νŽ˜μ΄μŠ€, 탐색 및 κΆŒν•œμ€ λ™μΌν•œ ν”„λ‘œμ νŠΈ κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€.

UI κΈ°λŠ₯ 포함

μƒμ„±λœ μ›Ή 앱은 μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 일반적인 관심사에 λŒ€ν•΄ 이미 μ€€λΉ„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  • λΆ€ν’ˆ λΌμš°νŒ… Routes.razor μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • MudBlazorλ₯Ό 기반으둜 ν•œ λ ˆμ΄μ•„μ›ƒ, 탐색 및 μ‹œκ°μ  ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€.
  • 각 μ„œλΉ„μŠ€ λ˜λŠ” λͺ¨λ“ˆμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ νŽ˜μ΄μ§€μ—μ„œ 메뉴 생성.
  • 파일 .resx ν”„λ‘œμ νŠΈμ— κ΅¬μ„±λœ λ¬Έν™”μ—μ„œ ν…μŠ€νŠΈλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.
  • 인증 κΈ°λŠ₯이 ν™œμ„±ν™”λ˜λ©΄ 인증, 토큰 μ €μž₯, 보호된 경둜 및 κΆŒν•œ μ„œλΉ„μŠ€λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
  • ν˜„μž¬ μ‚¬μš©μžμ—κ²Œ ν•„μš”ν•œ κΆŒν•œμ΄ μžˆλŠ” κ²½μš°μ—λ§Œ ν•­λͺ©μ„ ν‘œμ‹œν•˜λŠ” κΆŒν•œλ³„ λ©”λ‰΄μž…λ‹ˆλ‹€.

닀쀑 ν”„λŸ°νŠΈμ—”λ“œ

단일 λ°±μ—”λ“œλŠ” 두 개 μ΄μƒμ˜ 웹앱을 지원할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ‹€μ–‘ν•œ λŒ€μƒμ΄ μ„œλ‘œ λ‹€λ₯Έ 탐색, λ³΄μ•ˆ, κ²½ν—˜ 및 배포λ₯Ό ν•„μš”λ‘œ ν•˜μ§€λ§Œ λ™μΌν•œ μ„œλΉ„μŠ€, λͺ¨λ“ˆ, μ‚¬μš© 사둀 및 APIλ₯Ό 계속 κ³΅μœ ν•΄μ•Ό ν•˜λŠ” κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€.

  • 곡개 μ›Ήμ‚¬μ΄νŠΈ: 고객, 방문자, 아직 μΈμ¦λ˜μ§€ μ•Šμ€ μ‚¬μš©μžκ°€ μ ‘κ·Όν•  수 μžˆλŠ” νŽ˜μ΄μ§€μž…λ‹ˆλ‹€.
  • λ°±μ˜€ν”ΌμŠ€/κ΄€λ¦¬μž: 운영자, 지원 및 κ΄€λ¦¬νŒ€μ„ μœ„ν•œ λ‚΄λΆ€ 관리 νŒ¨λ„.
  • νŒŒνŠΈλ„ˆ 포털: νŒŒνŠΈλ„ˆ, λ¦¬μ…€λŸ¬, 곡급업체 λ˜λŠ” 운영 톡합에 λŒ€ν•œ μ•‘μ„ΈμŠ€κ°€ μ œν•œλ©λ‹ˆλ‹€.
  • μ…€ν”„ μ„œλΉ„μŠ€ ꡬ역: 자체 메뉴와 κΆŒν•œμ„ 톡해 μ΅œμ’… 고객에 μ΄ˆμ μ„ 맞좘 κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

각 ν”„λŸ°νŠΈμ—”λ“œλŠ” 자체 λ ˆμ΄μ•„μ›ƒ, λ¦¬μ†ŒμŠ€, 메뉴 및 μ•‘μ„ΈμŠ€ κ·œμΉ™μœΌλ‘œ λ°œμ „ν•  수 있으며 λ°±μ—”λ“œλŠ” μ„œλΉ„μŠ€, λͺ¨λ“ˆ, μ‚¬μš© 사둀 및 κ³„μ•½λ³„λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

μ›ΉνŽ˜μ΄μ§€ 생성

μ—”ν„°ν‹°λ₯Ό λͺ¨λΈλ§ν•˜κ³  μ‚¬μš© 사둀λ₯Ό μ •μ˜ν•˜κ³  λͺ…λ Ή, 쿼리, μ—”λ“œν¬μΈνŠΈ 및 지속성을 μƒμ„±ν•œ ν›„ λ‹€μŒ λ‹¨κ³„λŠ” 일반적으둜 μΈν„°νŽ˜μ΄μŠ€μ— κΈ°λŠ₯을 λ…ΈμΆœν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. LinoλŠ” νŽ˜μ΄μ§€ 생성기λ₯Ό μ‚¬μš©ν•˜μ—¬ 이 단계λ₯Ό μžλ™ν™”ν•©λ‹ˆλ‹€.

lino page new --service <ServiceName> --module <ModuleName> --entity <EntityName> --webapp <WebAppName>
lino page edit --service <ServiceName> --module <ModuleName> --entity <EntityName> --webapp <WebAppName>
lino page list --service <ServiceName> --module <ModuleName> --entity <EntityName> --webapp <WebAppName>

μ˜΅μ…˜μ— λŒ€ν•œ 정보도 λŒ€ν™”ν˜•μœΌλ‘œ 제곡될 수 μžˆμŠ΅λ‹ˆλ‹€. 이 λͺ…령은 κ·Έλ¦¬λ“œμ— ν‘œμ‹œλ˜μ–΄μ•Ό ν•˜λŠ” μ„œλΉ„μŠ€, λͺ¨λ“ˆ, μ—”ν„°ν‹°, λŒ€μƒ μ›Ήμ•±, νŽ˜μ΄μ§€ μœ ν˜• 및 속성을 μš”μ²­ν•©λ‹ˆλ‹€. κ°€μž₯ 일반적인 μœ ν˜•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. ν¬λ£¨λ“œ; μ—”ν„°ν‹°κ°€ 쿼리만 μ§€μ›ν•˜λŠ” 경우 LinoλŠ” λ‹€μŒκ³Ό 같은 νŽ˜μ΄μ§€λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°κ·Έλ¦¬λ“œ.

μ‚¬μš© page new ν™”λ©΄μ˜ 첫 번째 버전을 μƒμ„±ν•˜λ €λ©΄ page edit νŽ˜μ΄μ§€μ—μ„œ ν•„λ“œ, 계약 λ˜λŠ” λ™μž‘μ˜ λ³€κ²½ 사항을 좔적해야 ν•˜λŠ” 경우 page list 엔터티에 λŒ€ν•΄ 이미 μƒμ„±λœ λ‚΄μš©μ„ μ΄ν•΄ν•©λ‹ˆλ‹€.

ꢌμž₯ 흐름

  1. λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ μ›Ή 앱을 μƒμ„±ν•˜κ±°λ‚˜ μ„ νƒν•©λ‹ˆλ‹€. lino web-app new.
  2. μ—”ν„°ν‹°λ₯Ό λͺ¨λΈλ§ν•˜κ³  μ‚¬μš© 사둀, 쿼리, λͺ…λ Ή, μ—”λ“œν¬μΈνŠΈ, API 계약 및 지속성 μ•„ν‹°νŒ©νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  3. 달리닀 lino page new μΈν„°νŽ˜μ΄μŠ€λ₯Ό μˆ˜μ‹ ν•  μ—”ν„°ν‹°λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  4. κ·Έλ¦¬λ“œμ—μ„œ ν•„λ“œλ₯Ό μ‹ μ€‘ν•˜κ²Œ μ„ νƒν•˜μ„Έμš”. μ΄λŠ” ν‘œμ‹œλ˜λŠ” 열이 λ˜μ–΄ 쿼리 λ§€κ°œλ³€μˆ˜, ν•„ν„° 및 νŽ˜μ΄μ§€ 맀김을 μ„€μ •ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.
  5. AppHostλ₯Ό 톡해 μ†”λ£¨μ…˜μ„ μ‹€ν–‰ν•˜μ—¬ UI, API, 인증, κΆŒν•œ 및 λ°μ΄ν„°λ² μ΄μŠ€ 톡합을 ν•¨κ»˜ κ²€μ¦ν•©λ‹ˆλ‹€.

μƒμ„±λœ ꡬ쑰

CRUD νŽ˜μ΄μ§€μ˜ 경우 LinoλŠ” 단일 Razor 파일 λŒ€μ‹  μ™„μ „ν•œ Blazor νŽ˜μ΄μ§€ νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

  • λͺ©λ‘, 생성, νŽΈμ§‘, μ„ΈλΆ€ 정보 및 μ‚­μ œλ₯Ό μ‘°μ •ν•˜λŠ” 기둝 νŽ˜μ΄μ§€ λ˜λŠ” μƒ‰μΈμž…λ‹ˆλ‹€.
  • 쿼리 λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ μ„œλ²„ μΈ‘ λ‘œλ”©, νŽ˜μ΄μ§€ λ§€κΉ€, ν•„ν„° 및 λ§€ν•‘ κΈ°λŠ₯을 κ°–μΆ˜ MudBlazor 기반의 κ·Έλ¦¬λ“œ ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€.
  • 생성, μ—…λ°μ΄νŠΈ 및 ID별 μš”μ²­μ„ λ§€ν•‘ν•˜κΈ° μœ„ν•œ ν˜•μ‹ν™”λœ ViewModel 및 ν™•μž₯ κΈ°λŠ₯이 μžˆλŠ” 양식 ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€.
  • 제λͺ©, 라벨, λ²„νŠΌ, 확인 λ©”μ‹œμ§€ 및 ν˜„μ§€ν™”λœ μΈν„°νŽ˜μ΄μŠ€ ν…μŠ€νŠΈμ— λŒ€ν•œ λ¦¬μ†ŒμŠ€μž…λ‹ˆλ‹€.
  • νŽ˜μ΄μ§€ μ•‘μ„ΈμŠ€ 확인 및 쑰건뢀 λ²„νŠΌμ„ ν¬ν•¨ν•˜μ—¬ 인증이 ν™œμ„±ν™”λ˜λ©΄ κΆŒν•œμ„ ν™•μΈν•©λ‹ˆλ‹€.

엔터티에 λŒ€ν•œ CRUD νŽ˜μ΄μ§€ λ§Œλ“€κΈ° Vehicle예λ₯Ό λ“€μ–΄ μ„œλΉ„μŠ€μ—μ„œ Fleet, λͺ¨λ“ˆ Operations 및 μ›Ή μ•± Backoffice, κ΅¬μ‘°λŠ” λ‹€μŒ ν˜•μ‹μ„ λ”°λ¦…λ‹ˆλ‹€.

src/WebApps/Backoffice/Services/Fleet/Operations/Pages/Vehicles/Registration/
β”œβ”€β”€ Vehicle.razor
β”œβ”€β”€ Vehicle.razor.cs
β”œβ”€β”€ Resources/
β”‚   β”œβ”€β”€ VehicleResources.resx
β”‚   └── VehicleResources.Designer.cs
└── Components/
    β”œβ”€β”€ Form/
    β”‚   β”œβ”€β”€ VehicleForm.razor
    β”‚   β”œβ”€β”€ VehicleForm.razor.cs
    β”‚   β”œβ”€β”€ VehicleFormExtensions.cs
    β”‚   β”œβ”€β”€ VehicleViewModel.cs
    β”‚   └── Resources/
    β”‚       β”œβ”€β”€ VehicleFormResources.resx
    β”‚       └── VehicleFormResources.Designer.cs
    └── Grid/
        β”œβ”€β”€ VehicleGrid.razor
        β”œβ”€β”€ VehicleGrid.razor.cs
        β”œβ”€β”€ VehicleGridExtensions.cs
        β”œβ”€β”€ VehiclePagedQueryParams.cs
        └── Resources/
            β”œβ”€β”€ VehicleGridResources.resx
            └── VehicleGridResources.Designer.cs

이 μ•„μ΄λ””μ–΄λŠ” λ‹€μŒκ³Ό 같은 μ˜ˆμ— μ‚¬μš©λœ 이전 ꡬ쑰λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. Order: 메인 νŽ˜μ΄μ§€, μ½”λ“œ μˆ¨κΉ€, 양식 ꡬ성 μš”μ†Œ, κ·Έλ¦¬λ“œ ꡬ성 μš”μ†Œ, ν™•μž₯ 및 νŽ˜μ΄μ§€κ°€ 맀겨진 맀개 λ³€μˆ˜. ν˜„μž¬ λ²„μ „μ—λŠ” μ›Ή μ•±, μ„œλΉ„μŠ€ 및 λͺ¨λ“ˆμ„ 톡해 쑰직과의 κΈ°λŠ₯ 및 λͺ…μ‹œμ μΈ 톡합이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μƒμ„±λœ νŽ˜μ΄μ§€μ˜ μž‘λ™ 방식

이 νŽ˜μ΄μ§€λŠ” API에 λŒ€ν•΄ μƒμ„±λœ λ™μΌν•œ 계약을 μ‚¬μš©ν•©λ‹ˆλ‹€. κ·Έλ¦¬λ“œλŠ” 필터와 νŽ˜μ΄μ§€ 맀김을 λͺ©λ‘ μš”μ²­μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€. 양식은 ViewModel을 생성 λ˜λŠ” μ—…λ°μ΄νŠΈ μš”μ²­μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€. μž…λ ₯된 API ν΄λΌμ΄μ–ΈνŠΈλŠ” ν•΄λ‹Ή μ—”λ“œν¬μΈνŠΈμ— ν˜ΈμΆœμ„ λ³΄λƒ…λ‹ˆλ‹€. μ—”λ“œν¬μΈνŠΈλŠ” μƒμ„±λœ λͺ…λ Ή λ˜λŠ” 쿼리λ₯Ό μ‹€ν–‰ν•˜κ³  μž…λ ₯된 응닡을 UI에 λ°˜ν™˜ν•©λ‹ˆλ‹€.

Frontend -> API -> Commands/Queries -> λ°μ΄ν„°λ² μ΄μŠ€

κΆŒν•œμ΄ μžˆλŠ” 경우 μƒμ„±λœ μ½”λ“œλŠ” μ‹λ³„μžλ³„λ‘œ λ‚˜μ—΄, 생성, νŽΈμ§‘, μ‚­μ œ, 쿼리 λ“±μ˜ κΆŒν•œλ„ ν™•μΈν•©λ‹ˆλ‹€. μ΄λŠ” νŽ˜μ΄μ§€μ— λŒ€ν•œ μ•‘μ„ΈμŠ€μ™€ μ‚¬μš©μžμ˜ μž‘μ—… κ°€μ‹œμ„± λͺ¨λ‘μ— 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.

κ·Έ κ²°κ³Ό μΌκ΄€λœ 전체 μŠ€νƒ 흐름이 νƒ„μƒν–ˆμŠ΅λ‹ˆλ‹€. 도메인 λͺ¨λΈ, μ‚¬μš© 사둀, μ—”λ“œν¬μΈνŠΈ, μœ ν˜•ν™”λœ ν΄λΌμ΄μ–ΈνŠΈ, μ§€μ—­ν™”λœ UI, 탐색 및 κΆŒν•œμ€ λ™μΌν•œ 섀계 κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€. μƒμ„±κΈ°λŠ” λ°˜λ³΅μ„ μ€„μ΄μ§€λ§Œ ꡬ성 μš”μ†ŒλŠ” μ œν’ˆ μ‘°μ •, μœ μš©μ„± 및 νŠΉμ • κ·œμΉ™μ— λŒ€ν•΄ νŽΈμ§‘ κ°€λŠ₯ν•œ μƒνƒœλ‘œ μœ μ§€λ©λ‹ˆλ‹€.

닀쀑 μ–Έμ–΄ μΈν„°νŽ˜μ΄μŠ€

Linoμ—μ„œ μƒμ„±λœ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν˜„μ§€ν™”λœ ν…μŠ€νŠΈμ— .resx νŒŒμΌμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ™μΌν•œ Razor ꡬ쑰λ₯Ό μœ μ§€ν•˜κ³  ν™œμ„± λ¬Έν™”κΆŒμ— 따라 제λͺ©, λ ˆμ΄λΈ”, λ²„νŠΌ, 였λ₯˜ λ©”μ‹œμ§€, μœ νš¨μ„± 검사 ν…μŠ€νŠΈ 및 μ„€λͺ…을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μ§€ν™”λ₯Ό μ‹œκ°μ μΈ 마무리 μž‘μ—…μœΌλ‘œλ§Œ μ·¨κΈ‰ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. 관리 νŽ˜μ΄μ§€μ™€ 운영 ν¬ν„Έμ—μ„œ μΌκ΄€λ˜μ§€ μ•Šμ€ μš©μ–΄λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™μ— λŒ€ν•œ μ˜μ‹¬μ„ λΆˆλŸ¬μΌμœΌν‚΅λ‹ˆλ‹€. λ”°λΌμ„œ λ¦¬μ†ŒμŠ€λŠ” UI μ•„ν‚€ν…μ²˜μ˜ 일뢀이며 νŽ˜μ΄μ§€, 양식, κ·Έλ¦¬λ“œ 및 곡유 ꡬ성 μš”μ†Œμ™€ ν•¨κ»˜ μ œκ³΅λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • ν‚€λ₯Ό μ•ˆμ •μ μ΄κ³  μ„€λͺ…적이며 의미 μ§€ν–₯적으둜 μœ μ§€ν•˜κ³  μž„μ‹œ ν™”λ©΄ λ ˆμ΄μ•„μ›ƒμ— 묢인 이름을 ν”Όν•˜μ„Έμš”.
  • νŽ˜μ΄μ§€μ™€ ꡬ성 μš”μ†Œμ— ν•˜λ“œ μ½”λ”©λœ ν…μŠ€νŠΈλ₯Ό ν”Όν•˜μ„Έμš”. 라벨, λ©”μ‹œμ§€, 제λͺ©, 이동 경둜, 메뉴 및 확인에 λŒ€ν•œ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • 기술 μš©μ–΄λ₯Ό κ²€ν† ν•˜μ—¬ λ¬Έμ„œ, CLI, API 계약 및 μΈν„°νŽ˜μ΄μŠ€ κ°„μ˜ 일관성을 μœ μ§€ν•˜μ„Έμš”.
  • μ˜ˆμƒμΉ˜ λͺ»ν•œ λŒ€μ²΄λ‚˜ λΆ€λΆ„μ μœΌλ‘œ λ²ˆμ—­λœ 화면을 λ°©μ§€ν•˜λ €λ©΄ λ¬Έν™”κΆŒ μ „λ°˜μ— 걸쳐 λ™μΌν•œ ν‚€ μ„ΈνŠΈλ₯Ό μœ μ§€ν•˜μ„Έμš”.
  • μ œν’ˆ 각색과 λ³„λ„μ˜ 문자 λ²ˆμ—­: μ΅œμ’… μ‚¬μš©μžλ₯Ό μœ„ν•΄ μš©μ–΄λ₯Ό ν˜„μ§€ν™”ν•΄μ•Ό ν•˜λŠ” 경우 μž‘μ—…μ˜ κΈ°λŠ₯적 의미λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.

μƒμ„±λœ νŽ˜μ΄μ§€μ—λŠ” 일반적으둜 νŽ˜μ΄μ§€, 양식 및 ν‘œ μˆ˜μ€€μ˜ λ¦¬μ†ŒμŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 뢄리λ₯Ό 톡해 각 뢀뢄은 λ‚˜μ—΄, νŽΈμ§‘, 검증 및 탐색 ν…μŠ€νŠΈλ₯Ό ν˜Όν•©ν•˜μ§€ μ•Šκ³ λ„ λ°œμ „ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ°˜μ‘ν˜•, μ¦‰μ‹œ μ‚¬μš© κ°€λŠ₯ν•œ CRUD

μƒμ„±λœ CRUDλŠ” ν™”λ©΄μ˜ 반볡적인 기반(λͺ©λ‘, 양식, APIμ™€μ˜ 톡합, λ¦¬μ†ŒμŠ€, νŽ˜μ΄μ§€ λ§€κΉ€, ν•„ν„°, μž‘μ—… 및 μ½”λ“œ μˆ¨κΉ€)을 μƒμ„±ν•˜λ―€λ‘œ 전달 속도λ₯Ό λ†’μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ΄λŠ” 단지 기술적인 발판이 μ•„λ‹Œ μ œν’ˆ κ²½ν—˜μœΌλ‘œ κ²€ν† λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

쒋은 CRUD ν™”λ©΄μ—μ„œλŠ” μ‚¬μš©μžκ°€ 기둝을 μ°Ύκ³ , ν˜„μž¬ μƒνƒœλ₯Ό μ΄ν•΄ν•˜κ³ , μžμ‹  있게 쑰치λ₯Ό μ·¨ν•˜κ³ , μ‹€νŒ¨μ—μ„œ 볡ꡬ할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” λ‚΄λΆ€ λ°±μ˜€ν”ΌμŠ€ ν™”λ©΄κ³Ό 고객 λ˜λŠ” νŒŒνŠΈλ„ˆλ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λŠ” 포털 λͺ¨λ‘μ— μ μš©λ©λ‹ˆλ‹€.

  • μ˜μ‚¬κ²°μ •μ— 도움이 λ˜λŠ” λͺ©λ‘ 열을 μ„ νƒν•˜μ„Έμš”. μš΄μ˜μžμ—κ²Œ 아무 것도 μ•Œλ €μ£Όμ§€ μ•ŠλŠ” 기술 λΆ„μ•Όμ˜ κ·Έλ¦¬λ“œλŠ” ν”Όν•˜μ‹­μ‹œμ˜€.
  • μ˜ˆμƒλ˜λŠ” 데이터 μ–‘κ³Ό μ‚¬μš©μžμ˜ μ£Όμš” 검색 기쀀에 따라 필터와 νŽ˜μ΄μ§€ 맀김을 κ΅¬μ„±ν•©λ‹ˆλ‹€.
  • κ΅¬ν˜„ μš©μ–΄λΏλ§Œ μ•„λ‹ˆλΌ 도메인 μ–Έμ–΄λ‘œ 문제λ₯Ό μ„€λͺ…ν•˜λ €λ©΄ μœ νš¨μ„± 검사 및 였λ₯˜ λ©”μ‹œμ§€λ₯Ό κ²€ν† ν•˜μ„Έμš”.
  • 데이터가 μ—†κ±°λ‚˜ API에 μ‹œκ°„μ΄ κ±Έλ¦¬κ±°λ‚˜ μž‘μ—…μ΄ μ™„λ£Œλ˜μ§€ μ•Šμ„ λ•Œ μžλ™ 화면이 ν‘œμ‹œλ˜μ§€ μ•Šλ„λ‘ λΉ„μ–΄ 있음, λ‘œλ“œ 쀑, 좩돌 μƒνƒœλ₯Ό ν™•μΈν•˜μ„Έμš”.
  • 되돌릴 수 μ—†λŠ” μ‚­μ œ 및 μž‘μ—…μ„ ν™•μΈν•˜μ—¬ 영ν–₯을 λ°›λŠ” 기둝을 λͺ…ν™•νžˆ ν•©λ‹ˆλ‹€.
  • ν˜„μ§€ν™”λœ μ•Œλ¦Ό 및 λ©”μ‹œμ§€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ €μž₯, νŽΈμ§‘, μ‚­μ œ λ˜λŠ” μ‹€νŒ¨ν•œ ν›„ λͺ…ν™•ν•œ ν”Όλ“œλ°±μ„ ν‘œμ‹œν•©λ‹ˆλ‹€.
  • λ°±μ—”λ“œ 및 ν”„λŸ°νŠΈμ—”λ“œμ— λŒ€ν•œ κΆŒν•œμ„ 톡해 μž‘μ—…μ„ λ³΄ν˜Έν•©λ‹ˆλ‹€. λ²„νŠΌμ„ 숨기면 κ²½ν—˜μ΄ ν–₯μƒλ˜μ§€λ§Œ μ‹€μ œ 인증을 λŒ€μ²΄ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • μž‘μ€ ν™”λ©΄, 특히 μž‘μ—… 메뉴, ν•„ν„°, ν•„μˆ˜ ν•„λ“œ 및 열이 λ§Žμ€ κ·Έλ¦¬λ“œμ—μ„œ 응닡성을 ν™•μΈν•˜μ„Έμš”.

Lino에 μ˜ν•΄ μƒμ„±λœ μ‹œμž‘μ μ€ 일관성 있고 ν†΅ν•©λœ 기반으둜 μ²˜λ¦¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ νŒ€μ€ μ‹€μ œ μ œν’ˆ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ°˜μ˜ν•˜κΈ° μœ„ν•΄ μ‹œκ°μ  밀도, ν•„λ“œ μˆœμ„œ, ν‘œμ‹œ κ·œμΉ™, κΆŒν•œ 및 ν…μŠ€νŠΈλ₯Ό μ‘°μ •ν•©λ‹ˆλ‹€.

처리되지 않은 오류가 발생했습니다. 새로 고침 πŸ—™