Lino CLI ì€ì¹ ë° êµ¬ì±
ìì
ì ììíë 첫 ë²ì§ž ëšê³ Lino CLI ê°ë° í겜ì ë구륌 ì€ì¹íë ê²ì
ëë€.
ìŒë¡ ë°°í¬ë©ëë€. ë·ë· êžë¡ë² ë구, ìŽë 컎íší°ì 몚ë .NET íë¡ì ížì ì¬ì©í ì ììì ì믞í©ëë€.
ì€ì¹íêž° ì ì íì¬ í
í늿ì íìí.NET SDK륌 ì¬ì©í ì ìëì§, í°ë¯žëì ì€íí ì ìëì§ íìžíìžì. dotnet .NET ì ì ë구 ëë í°ëЬë PATH.
1ëšê³: ì€ì¹
Lino CLI륌 ì€ì¹(ëë ì
ë°ìŽíž)íë €ë©Ž í°ë¯žëìì ë€ì ëª
ë ¹ì ì€ííìžì.
dotnet tool install --global Tolitech.Lino
ì€ì ì¬í:
- ìŽë¯ž ë²ì ìŽ ì€ì¹ëìŽ ìë ê²œì° ë€ìì ì¬ì©í ì ììµëë€.
dotnet tool update --global Tolitech.Lino ì
ë°ìŽíží©ëë€.
- .NET ì ì ë구 ëë í°ëЬê°
PATH ìì€í
ì ëª
ë ¹ìŽ lino ì¬ë°ë¥Žê² ìëí©ëë€.
2ëšê³: ìžìŽ êµ¬ì±
ì€ì¹ í CLIê° ë©ìì§, í롬ííž ë° ë¡ê·žìì ì¬ì©í ìžìŽ(ëë 묞íê¶)륌 구ì±íë ê²ìŽ ì¢ìµëë€.
lino preferences culture set
ì¬ì© ê°ë¥í ìžìŽ ì€ìì ì ííëŒë ë©ìì§ê° íìë©ëë€. ìŽ ì€ì ì ì¬ì©í멎 몚ë ì§ì¹šê³Œ í롬íížê° ìíë ìžìŽë¡ ìŒêŽëê² íìë©ëë€.
ìŽ êž°ë³ž ì€ì ì CLI íì§íë ë©ìì§, í롬ííž ë° ì§ì¹šì ë³ê²œí©ëë€. íë¡ì ížìì ìì±ë ìí°í°, ìë¹ì€, 몚ë ëë ë¹ìŠëì€ ì©ìŽì ìŽëŠì ë°ëì§ ììµëë€.
3ëšê³: ìžìŠ ë° ë±ë¡
ê³ êž í
í늿, Docker ìŽë¯žì§ ê²ì ë° ìžë¶ ìë¹ì€ìì íµí©ì í¬íší 몚ë Lino êž°ë¥ì ì¡ìžì€íë €ë©Ž ìžìŠì ë°ììŒ í©ëë€.
- ìì§ ë±ë¡íì§ ììŒì
šë€ë©Ž, ë€ì ëª
ë ¹ìŽë¡ ë±ë¡íŽì£Œìžì.
- ìŽë¯ž ë±ë¡í ê²œì° ë€ìì ì¬ì©íì¬ ë¡ê·žìžíììì€.
ë¬Žìš ìŒìŽ ìŒìŽëëì§: CLIë ìžìŠ í í°ì ë¡ì»¬ì ì ì¥íë¯ë¡ ì¬ì©í ëë§ë€ ë¡ê·žìží íì ììŽ ë³Žížë 늬ìì€ì ì¡ìžì€íŽìŒ íë ëª
ë ¹ì ì€íí ì ììµëë€.
ìŽ í í°ì ë¹ê³µê°ë¡ ì ì§íê³ ì¬ë¬ ê°ë°ì, CI ììŽì íž ëë 컎íší° ê°ì ëìŒí ì¬ì©ì íë¡íì ê³µì íì§ ë§ìžì.
4ëšê³: íìž
ì€ì¹ ë° ìžìŠìŽ ì±ê³µíëì§ íìžíë €ë©Ž ë€ìì ì€ííìžì.
ëª
ë ¹ìŽ ì€ì¹ë ë²ì ì ë°íí멎 ë€ìì ì¬ì©í ì€ë¹ê° ë ê²ì
ëë€. Lino CLI ë¹ì ì íë¡ì ížìì.
MyApp íë¡ì íž ìì±
ìŽ ëšê³ììë ë€ìì ì¬ì©íì¬ íë¡ì ížì ìŽêž° 구조륌 ë§ëëë€. Lino CLI.
ìŽ íë¡ì ížë ìë¹ì€, 몚ë, íë°ížìë ë° ëªšë ìŽë²€íž íµí©ì ìì±ì ìì°íë êž°ìŽ ìí ì í©ëë€.
Lino íë¡ì ížë ëšìí ì룚ì
ìŽ ìë íŽëê° ìëëë€. ìë¹ì€ 겜ê³, ê³µì ëŒìŽëžë¬ëЬ, Aspire ížì€íž, íë°ížìë íë ììí¬, í
ì€íž, íší€ì§ êŽëЬ, ë¶ìêž° ë° ë€ì ëª
ë ¹ìŽ ì¬ì¬ì©íë 구ì±ì ëí ê·ì¹ì ì ìí©ëë€.
1ëšê³: ìì± ëª
ë ¹ ì€í
ì íë¡ì ížë¥Œ ìì±íë €ë©Ž í°ë¯žëìì ìë ëª
ë ¹ì ì€ííìžì.
CLIë ë€ì곌 ê°ì ì 볎륌 ìì²í멎ì ëšê³ë³ë¡ ìëŽí©ëë€.
- íë¡ì íž ìŽëŠ: ì°ëЬë ì¬ì©í ê²ìŽë€
MyApp, ìíë ìŽëŠì ì íí ì ììµëë€.
- ì¶ê° êž°ë¥: ìœë ë¶ìêž°, ë¶ì° ìºì±, ë¹ëêž° ìŽë²€íž ì§ì ë±
2ëšê³: íì êž°ë¥ êµ¬ì±
ìŽ íë¡ì ížììë ì²ìë¶í° ë€ì êž°ë¥ì íì±ííë ê²ìŽ ì¢ìµëë€.
- ìœë ë¶ìêž°: ìœëê° ëªšë² ì¬ë¡ì ìŒêŽë íì€ì ë°ë¥Žê³ ìëì§ íìžíì¬ ìŒë°ì ìž êµ¬í ì€ë¥ë¥Œ ë°©ì§í©ëë€.
- ë¶ì° ìºì: ë¶íìí ë°ìŽí°ë² ìŽì€ 쿌늬륌 ë°©ì§íì¬ ì¬ë¬ ìë¹ì€ê° í¬íšë ìë늬ì€ìì ì í늬ìŒìŽì
ì±ë¥ì í¥ìí©ëë€.
- ë¹ëêž° íµì : ìë¹ì€ ê° íµí©ì ìíŽ ìŽë²€ížì ëêž°ìŽì ì¬ì©í ì ììŒë¯ë¡ íì¥ì±ê³Œ ë¶ëŠ¬ê° ë³Žì¥ë©ëë€.
íµí© ìŽë²€ížë¥Œ íµíŽ íµì í ì¬ë¬ ìë¹ì€ë¥Œ ìì±í ê²ìŽë¯ë¡ ìŽ íë¡ì ížììë ìŽë¬í ìµì
ì 몚ë íì±ííë ê²ìŽ ì€ìí©ëë€.
ìŽë¥Œ íµíŽ Lino륌 ì¬ì©íì¬ ëªšëì ë° ë¶ì° ìì€í
ì 구ì±íë ë°©ë²ì ìŽíŽí ì ììµëë€.
3ëšê³: ìì±ë 구조
ëª
ë ¹ì ì€ííê³ ëŠ¬ìì€ë¥Œ 구ì±í í CLIë ìŽêž° íë¡ì íž êµ¬ì¡°ë¥Œ ìì±í©ëë€. ì¬êž°ìë ë€ììŽ í¬íšë©ëë€.
- ìë¹ì€ ë° ëªšë íŽë
- íë°ížìë í
í늿(íŽë¹íë 겜ì°)
- ìŽêž° ìºì ì€ì , ìŽë²€íž ë° íµí©
- 컎íìŒ ì€ë¹ê° ìë£ë ì룚ì
(.slnx) ë° íë¡ì íž(.csproj) íìŒì
ëë€.
ìŽì ë¹ì ì íë¡ì íž ë§ìŽì± ë€ì ëšê³ìì 구ì±í ìë¹ì€, 몚ë, ìí°í° ë° íë°íž ìë륌 ë°ì ì€ë¹ê° ëììµëë€.
ê³ìíêž° ì ì ìì±ë ì룚ì
ì ìŽê³ ì€ííìžì. dotnet build ì°žì¡°, ìì€ ìì±êž°, í
í늿, íë¡ì íž íìŒ ë° ìŽêž° 구ì±ìŽ ìŒêŽì±ìŽ ìëì§ íìží©ëë€.
ë°±ì€íŒì€ ì¹ ì í늬ìŒìŽì
ì¶ê°
ì 첎 ìì€í
ìë ìŒë°ì ìŒë¡ ëë©ìžì ìŽìíêž° ìíŽ ìµìí íëì ì¹ ì í늬ìŒìŽì
ìŽ íìí©ëë€. ìŽ ê°ìŽëììë ì í늬ìŒìŽì
ì Backoffice êŽëЬì, êŽëЬì ëë ìŽì ì¬ì©ìê° ì í, 칎í
ê³ ëŠ¬, ì¬ê³ , íë§€ ë° êž°í ìì€í
ì 볎륌 몚ëí°ë§í ì ìë ëŽë¶ ìží°íìŽì€ë¥Œ ëíë
ëë€.
ì¹ ì í늬ìŒìŽì
ì ëë©ìž ìë¹ì€ë¥Œ ë첎íì§ ììµëë€. API륌 ì¬ì©íê³ , ëª
ë ¹ì ì€ííê³ , 쿌늬륌 ì°žì¡°íê³ , ìë¹ì€ì ìŽë¯ž 몚ëžë§ë ê·ì¹ê³Œ ìŒì¹íë í멎ì íìíë ìê°ì ì§ì
ì ìí ì í©ëë€.
1ëšê³: ìì± ëª
ë ¹ ì€í
íë¡ì ížì ì ì¹ ì í늬ìŒìŽì
ì ì¶ê°íë €ë©Ž ë€ìì ì¬ì©í©ëë€:
ì
ë ¥ì ë ìœê² íêž° ìíŽ lino webapp new aliasë ì¬ì©í ì ììµëë€. ì€í ì€ìë ì¹ ì í늬ìŒìŽì
ì ëª
íí ìŽëŠì ì
ë ¥í©ëë€. ìŽ ìì ììë Backoffice륌 ì¬ì©í©ëë€.
lino web-app new --name Backoffice
2ëšê³: ìì±ë 구조 ìŽíŽ
íë¡ìžì€ê° ëë멎 Linoë src/WebApps/<WebAppName>ì Web Appì ìŽêž° 구조륌 ìì±í©ëë€. Blazor ì í늬ìŒìŽì
ì ê²œì° ìŽ êµ¬ì¡°ìë server/client íë¡ì íž, ê³µì 늬ìì€, localization íìŒ, API륌 ìë¹íêž° ìí clients, ìŽí lino page newìì ì¬ì©í ê·ì¹ìŽ í¬íšë ì ììµëë€.
- íìŽì§, 구ì±ìì, ë ìŽìì, ìë¹ì€ ë° ì í늬ìŒìŽì
늬ìì€ì© íŽë
- íë¡ì íž ìë¹ì€ì ìíŽ ë
žì¶ë API륌 ì¬ì©íë ë° íìí HTTP íŽëŒìŽìžíž ë° ê³ìœ
- ì¹ ê²œíì ì¬ì©ëë íì§í 늬ìì€ ë° ìŽêž° í
í늿
- ì í늬ìŒìŽì
ì íì ë°ëŒ ìŽë¬í ë¶ëŠ¬ê° íìí ê²œì° íŽëŒìŽìžíž/ìë² íë¡ì íž.
- íìŽì§ ìì±ì ì¬ì¬ì©ë 겜ë¡, íì ë° íµí© ê·ì¹
- ìžìŠ êž°ë¥ìŽ íë¡ì ížì ì¶ê°ë ë ìžìŠ ë° ê¶í ë¶ì¬ìì íµí© ì§ì ì
ëë€.
3ëšê³: íëŠìì ì¹ì±ì ë§ëë ìêž°
ìì€í
ì Blazor ìží°íìŽì€ê° í¬íšëë€ë ê²ì ìŽë¯ž ìê³ ìë€ë©Ž, íë¡ì íž ìì± ì§í ìŽêž°ì Web Appì ë§ëììì€. ê·žë¬ë©Ž ëì€ì ìì±ëë services, modules, entities, APIs, pagesê° ìŽë¥Œ ìë¹í ì¹ ì í늬ìŒìŽì
곌 믞늬 ì ë ¬ë©ëë€.
ìŽ íëŠì ëì€ì ìì±ëë servicesê° Blazor íë¡ì ížìì ìë¹íë typed Api.Contracts ë° Api.Client íë¡ì ížë ìì±íêž° ë묞ì í¹í ì ì©í©ëë€. ì²ìë¶í° Web AppìŽ ììŒë©Ž domain, API, contracts, HttpClient, í멎ê¹ì§ì ì 첎 겜ë¡ë¥Œ ë ìœê² ê²ìŠí ì ììµëë€.
ì€ì ì¬í
- ë°±ì€íŒì€ë ìì±ë API륌 íµíŽ ë°ìŽí°ë¥Œ ìë¹íì¬ ì¬ë°ë¥ž ìë¹ì€ ë° ëªšëìì ë¹ìŠëì€ ë¡ì§ì ì ì§íŽìŒ í©ëë€.
- êŽëЬ íìŽì§ë¥Œ ë
žì¶íêž° ì ì ìžìŠ, ì¹ìž, ìí , ê¶í ë° ì¡ìžì€ ì ì±
ì ê²í íìžì.
- ì륌 ë€ìŽ ì¬ë¬ ì¹ ì í늬ìŒìŽì
ì ë§ë€ ì ììµëë€.
Backoffice ëŽë¶ ë° Site ê³µê°, ëì, ê¶í, ë°°í¬ ëë ì±
ììŽ ë€ë¥ž 겜ì°.
- 볎ì, íì, ë°°í¬ ëë í ìì ê¶ìŽ ìŽë €ìì§ë ê²œì° ëìŒí ì¹ ì±ìì ê³µì© íëŠê³Œ êŽëЬ íëŠì íŒí©íì§ ë§ììì€.
ì¹ ì í늬ìŒìŽì
ìŽ ìì±ë멎 ê°ìŽëë ìŽ ìží°íìŽì€ìì ì¬ì©ëë ë°ìŽí°ì ë¹ìŠëì€ ê·ì¹ì ì ê³µíë ìë¹ì€ ë° ëªšëë¡ ìŽëí ì ììµëë€.
ìë¹ì€ ë° ëªšë ìì±
ìŽ ëšê³ììë ì í늬ìŒìŽì
ì 구ì±í ìë¹ì€ì 몚ëì 구ì¶í©ëë€.
목íë ì í, 칎í
ê³ ëŠ¬, ì¬ê³ , íë§€ ë° ë¯žëìŽì ê°ì ìì€í
ì ë€ìí ìììŽ ë
늜ì ìŒë¡ ë°ì íê³ ìì§ë ¥ì ì ì§íê³ ì ì§ êŽëŠ¬ë¥Œ ì©ìŽíê² íë íì¥ ê°ë¥í 몚ëì ìí€í
ì²ë¥Œ ë§ëë ê²ì
ëë€.
ìë¹ì€ë ë°°í¬ ë° ì§ìì± ê²œê³ë¥Œ ì ìí©ëë€. 몚ëì 몚ëì ìë¹ì€ ëŽìì ë¹ìŠëì€ ììì 구ì±í©ëë€. íìŒì ìì±íêž° ì ì ëë©ìžì ìŽë ë¶ë¶ì ì첎 ë°ìŽí°ë² ìŽì€, ë
늜 늎늬ì€, íµí© ê³ìœ ëë ë³ëì ìì ê¶ìŽ íìíì§ íê°íììì€.
1ëšê³: ìë¹ì€ ì ì
ì²ììë ê°ê° ì ì ìë ì±
ììŽ ìë ë€ì곌 ê°ì ìë¹ì€ë¥Œ ë§ë€ ê²ì
ëë€.
- Catalog (몚ëì) â ì í, 칎í
ê³ ëŠ¬ ë° ê°ê²© êŽëŠ¬ë¥Œ ëŽë¹í©ëë€.
- Sales â íë§€ ë° ì£Œë¬ž ì²ëŠ¬ë¥Œ ëŽë¹í©ëë€.
- Stock â ì¬ê³ ë° ìŽë êŽëŠ¬ë¥Œ ëŽë¹í©ëë€.
- Security â ìžìŠ, ê¶í ë¶ì¬ ë° ì¬ì©ì êŽëŠ¬ë¥Œ ëŽë¹í©ëë€.
ìì ì services륌 ë§ë€ë €ë©Ž serviceë§ë€ íëì© ëª
ë ¹ì ì€íí©ëë€. Catalog wizardììë modular architecture륌 ì ííê³ , ëëšžì§ë ëšìí 겜ê³ì ì í©í architecture륌 ì íí©ëë€.
lino service new --name Catalog
lino service new --name Sales
lino service new --name Stock
lino service new --name Security
ëª
ë ¹ ì€í ì€ CLIë ë€ìì ìì²í©ëë€:
- Service name: ì:
Catalog;
- Display name and architectural style: ìì 겜ê³ìë simple architecture륌, serviceì ë
늜ì ìŽê³ ìì§ë ìììŽ ìì ëë modular륌 ì íí©ëë€;
- Database: íë¡ì ížì ê°ì¥ ì í©í êž°ì ì ì íí©ëë€(SQL Server, PostgreSQL ë±);
2ëšê³: services ìì modules ë§ë€êž°
몚ë servicesê° modularìŒ íìë ììµëë€. ìŽ projectììë merchandising곌 pricing ê°ì ì±
ìì ë¶ëЬíêž° ìíŽ Catalog serviceë§ modules륌 ê°ì§ëë€.
Catalog serviceìë ë€ì modules륌 ì ìí©ëë€:
- Merchandising â products ë° categories êŽëЬ;
- Pricing â prices, promotions ë° ë³ê²œ ìŽë ¥ êŽëЬ.
Catalog modules륌 ë§ë€ë €ë©Ž ë€ìì ì€íí©ëë€:
lino module new --service Catalog --name Merchandising
lino module new --service Catalog --name Pricing
몚ëí ìë¹ì€ ëŽìì ìíë ë§íŒ 몚ëì ìì±í ì ììµëë€. Catalog.
ëí ë³µì¡ì±ì ë°ëŒ ìŒë¶ 몚ëì í¥í ë
늜ì ìž ìë¹ì€ê° ë ì ììµëë€.
ì¬êž°ì ì ìë ë¶ëЬë êµíì ìž ëª©ì ìŒë¡ë§ ì ê³µëë©° 몚ëì 구ì±ì ì ìí ì í©ëë€.
íŽë륌 ìì±íêž° ìíŽ ëªšëì ì¬ì©íì§ ë§ììì€. ì첎 ìí°í°, ì¬ì© ì¬ë¡, API, ë§ìŽê·žë ìŽì
ë° ìŽë²€ížë¡ ë¹ìŠëì€ ììì 볎íží ë ìŽë¥Œ ì¬ì©í©ëë€.
ìµì¢
íë¡ì íž êµ¬ì¡°
ìë¹ì€ì 몚ëì ìì±í íìë ì룚ì
ì êµ¬ì¡°ê° ë€ì곌 ì ì¬íŽìŒ í©ëë€.
MyApp/
âââ src/
âââ Aspire/
âââ Integrations/
âââ Services/
â âââ Catalog/
â â âââ Modules/
â â â âââ Merchandising/
â â â âââ Pricing/
â â âââ MyApp.Catalog.Host
â â âââ MyApp.Catalog.Infrastructure
â âââ Sales/
â âââ Security/
â âââ Shared/
â âââ Stock/
âââ WebApps/
âââ Backoffice/
â âââ Services/
â â âââ Catalog/
â â âââ Sales/
â â âââ Security/
â â âââ Stock/
â âââ MyApp.WebApp.Backoffice
â âââ MyApp.WebApp.Backoffice.Client
âââ Shared/
âââ MyApp.WebApp.Shared
âââ tests/
âââ Services/
âââ Catalog/
â âââ Merchandising/
â âââ Pricing/
âââ Sales/
âââ Security/
âââ Shared/
âââ Stock/
구조 ì€ëª
:
Services/: ê°ê° ì첎 ë¹ìŠëì€ ë¡ì§, ìžíëŒ ë° ížì€í
ìŒë¡ 격늬ë 몚ë ìì€í
ìë¹ì€ë¥Œ í¬íší©ëë€.
Modules/: 몚ëì ìë¹ì€ ëŽì íŽëë¡, í¹ì êž°ë¥ì 구ì±íê³ ìì§ë ¥ ìë ìœë륌 ì ì§í ì ììµëë€.
WebApps/: ìŽë¯ž ìë¹ì€ì íµí©ë ìì€í
곌 êŽë šë íë°ížìëì
ëë€.
Shared/: ìë¹ì€ì íë°ížìë ê°ì ê³µì ëë ëŒìŽëžë¬ëЬ ë° ëŠ¬ìì€
tests/: ìë¹ì€ì 몚ëë³ë¡ 구ì±ë ëšì ë° íµí© í
ì€ížì
ëë€.
ìŽ ëªšëì 구조륌 íµíŽ ê° íìŽë ê°ë°ìë ìì€í
ì ì¬ë¬ ë¶ë¶ìì ë
늜ì ìŒë¡ ìì
í ì ììŽ íì¥ì±, ì ì§ êŽëЬ ë° í
ì€ížê° ì©ìŽí©ëë€.
ìë¹ì€ì 몚ëì ìì±í í ë€ìì ì€íí©ëë€. dotnet build íë¡ì ížê° ì룚ì
ì ì¬ë°ë¥Žê² ì°ê²°ëìëì§ íìžíë €ë©Ž Aspire, ê³µì íë¡ì íž ë° í
ì€íž íë ììí¬ë¥Œ ížì€ížíìžì.
ìžìŠ ë° ì¹ìž ì¶ê°
ìžìŠ ë° ê¶í ë¶ì¬ë 몚ë ìµì ìì€í
ì íì ììì
ëë€.
ìžìŠì ì¬ì©ìê° ë구ìžì§ ìŠëª
í©ëë€. ìžìŠì ìŽ ì¬ì©ìê° ìíí ì ìë ìì
ì ì ìí©ëë€. ë§ë Lino CLI, ìžìŠ êž°ë¥ì ì¬ì©ì, ìí , ê¶í, í í°, ì¡ìžì€ ì ì±
ë° APIìì íµí©ì íìí êž°ë°ì ìì±í©ëë€.
1ëšê³: ìžìŠ ëª
ë ¹ ì€í
ìžìŠ ë° ê¶í ë¶ì¬ êž°ë¥ì ì¶ê°íë €ë©Ž ë€ì ëª
ë ¹ì ì¬ì©íììì€.
CLIë ë€ì ëšê³ë¥Œ ìëŽí©ëë€.
-
ìë¹ì€ ëë 몚ë ì í: ìžìŠ ìí°í©ížê° ì€ì¹ë ìì¹ë¥Œ íìíŽìŒ í©ëë€.
ìì íë¡ì ížììë ìë¹ì€ë¥Œ ì¬ì©í©ëë€. Security, ìì€í
ì 몚ë 볎ì ë¡ì§ì ì€ì ì§ì€íí©ëë€.
- ì¶ê° ì€ì : ì¬ì©ì, ìí , ê¶í, í í° ë° ì¡ìžì€ ì ì±
êµ¬ì± í
ìŽëž ìì±
- í í° ìëª
: ì íì 볎ì ì ì±
ì ë°ëŒ ì¡ìžì€ í í° ë° ìë¡ ê³ ì¹š í í°ì ë§ë£ ì ì
- ì¬ì©ì ìë³ì ì í: ì¬ì©ì 몚ëžê³Œ ìì±ë ê³ìœìì ì¬ì©ëë ì íì ì íí©ëë€.
2ëšê³: ìì±ë 구조
ëª
ë ¹ì ì€íí í ìë¹ì€ Security ë€ì곌 ê°ì íìŒê³Œ íŽëê° í¬íšë©ëë€.
- ëë©ìž/ìí°í°: ì¬ì©ì, ìí , ê¶í ë° í í°ì ëí ì§ê³, ìí°í° ë° ê·ì¹
- ìžíëŒ/ì§ìì±: 볎ì í
ìŽëžì ëí ë°ìŽí°ë² ìŽì€ 구ì±, Entity Framework ë§€í ë° ë§ìŽê·žë ìŽì
- ì í늬ìŒìŽì
: ëª
ë ¹, 쿌늬, ì²ëŠ¬êž°, ìžìŠ ìë¹ì€, í í° ìì±, ì격 ìŠëª
íìž ë° ê¶í íìž
- API/ížì€íž: ë¡ê·žìž, ë¡ê·žìì, ë±ë¡, ìë¡ ê³ ì¹š í í° ë° ë³Žížë ìì
ì ìí ìëí¬ìžíž
- ì¹ ì±ê³Œ íµí©: ì¹ ì í늬ìŒìŽì
ìŽ ìë ê²œì° ìžìŠë íëŠì ì§ìí©ëë€.
ìŽë¥Œ íµíŽ ì í늬ìŒìŽì
ì ê°ë ¥í ìžìŠê³Œ ìžë¶íë ì¡ìžì€ ì ìŽë¥Œ íµíŽ ì¬ë¬ ì¬ì©ìì ë€ìí ìì€ì ê¶íì ì§ìí ì€ë¹ê° ë©ëë€.
ê·žë¬ë ìì±ë ìœëë ìµì¢
볎ì ê²í ê° ìë ê°ë ¥í êž°ë°ìŒë¡ ì·šêžëìŽìŒ í©ëë€. íë¡ëì
ì ì í í° ìëª
, ê¶í ì€ê³, ë¹ë°ë²íž ì ì±
, HTTPS, ë¹ë°, ìë ì í, ë¡ê·ž ë° ë°°í¬ êµ¬ì±ì ê²í íìžì.
Background Job ì¶ê°
ì°ëŠ¬ê° êµ¬ì¶íê³ ìë ê²ê³Œ ê°ì ë¶ì°í ë° ëªšëí ìì€í
ìì Lino CLI, 몚ë ìë¹ì€ê° ìë¡ ì§ì íµì íë ê²ì ìëëë€.
ì 볎 êµíì ìŒêŽì±ê³Œ ì 뢰ì±ì 볎ì¥íêž° ìíŽ íµí© ìŽë²€ížë¥Œ ì¬ì©í©ëë€.
ê·žë¬ë ìŽë¬í ìŽë²€ížë¥Œ íšìšì ìŽê³ ë¹ëêž°ì ìŒë¡ ì²ëЬíë €ë©Ž ë€ììŽ íìí©ëë€. Background Job.
Linoë íì€ì ì¬ì©í©ëë€. Outbox íšíŽ ìë¹ì€ìì ìì±ë 몚ë ë©ìì§ê° ì ì¡ëêž° ì ì ìì ì ìŒë¡ êž°ë¡ëëë¡ í©ëë€.
ìŽë¥Œ íµíŽ ì°ëЬë ë€ìì ë¬ì±íìµëë€.
- ìë¹ì€ê° ì€íšíê±°ë ë€ì ììëë ê²œì° ìŽë²€íž ìì€ì ë°©ì§í©ëë€.
- ëìŒí ë©ìì§ê° í ë²ë§ ì ì¡ëëì§ íìžíììì€.
- ë°°ë¬ ì€íš ì ë©ìì§ ì¬ì²ëŠ¬ë¥Œ íì©í©ëë€.
- Ʞ볞 ì í늬ìŒìŽì
ë¡ì§ìì ìŽë²€íž ì²ëŠ¬ë¥Œ ë¶ëЬíì¬ ì±ë¥ê³Œ íì¥ì±ì í¥ììíµëë€.
1ëšê³: ëª
ë ¹ ì€í
íë¡ì ížì Background Job ì§ìì ì¶ê°íë €ë©Ž ë€ì ëª
ë ¹ì ì€ííìžì.
lino feature background-job add
CLIë Background JobìŽ ì€ì¹ë ìë¹ì€ë¥Œ ì ííëŒë ë©ìì§ë¥Œ íìí©ëë€. ìŒë°ì ìŒë¡ ë€ì곌 ê°ìŽ ìŽë²€íž ì ìì ì€ì ì§ì€ííë ìë¹ì€ë¥Œ ì ííê² ë©ëë€. Catalog ëë Sales.
íì¬ ìµì
ìì ë§ë²ì¬ë 몚ë, ìì
ëŒìŽëžë¬ëЬ, Outbox ìŽë²€íž ì²ëЬ ì¬ë¶, ìŒì ë° ë°°ì¹ í¬êž°ë¥Œ ìì²í ìë ììµëë€. íì¬ í
í늿 íëŠì ë°ë³µ ìì
ì€íì ìíŽ Hangfire륌 ì¬ì©í©ëë€.
2ëšê³: ì€í 구ì±
êµ¬ì± ì€ì ë€ìì ì ìí ì ììµëë€.
- íìž ê°ê²©: Background JobìŽ í
ìŽëžì íìžíë ë¹ë륌 ê²°ì í©ëë€. Outbox ì ë©ìì§ì 겜ì°. ê°ê²©ìŽ ë묎 ì§§ìŒë©Ž 늬ìì€ ì¬ì©ëìŽ ëìŽë ì ìê³ ê°ê²©ìŽ ë묎 Ꞟ멎 ìŽë²€íž ì ë¬ìŽ ì§ì°ë ì ììµëë€.
- í ë²ì ì²ëЬëë ë ìœë ë°°ì¹: ì€íë¹ ìœê³ ì ì¡ëë ìŽë²€íž ì륌 ì ìŽí©ëë€. ë°°ì¹ê° íŽìë¡ ì±ë¥ìŽ í¥ìë ì ìì§ë§ ë ë§ì ë©ëªšëЬì ì²ëŠ¬ê° íìí©ëë€.
- ê²ì ì ì±
: ë©ìì§ ì ì¡ì ì€íší ê²œì° ìì
ìì ì¬ì ì¡ì ìëíë íì륌 구ì±í ì ììµëë€.
ìŽë¬í ë§€ê°ë³ìë ìì€í
í¬êž°, ìì€í
ì©ë ë° ììëë ìŽë²€íž 볌륚ì ë°ëŒ ë¬ëŒì§ëë€.
3ëšê³: ìì±ë 구조
êµ¬ì± í íë¡ì ížìë í
ìŽëžì ë©ìì§ë¥Œ ì²ëЬí ì ìë Background JobìŽ ì€ë¹ë©ëë€. Outbox ê° ìë¹ì€ìì.
- ì¬ì© ì¬ë¡ë ëë©ìžì ë³ê²œíê³ ëë©ìž ëë íµí© ìŽë²€ížë¥Œ êž°ë¡í©ëë€.
- ìì
ëšìë Outboxì ë¹ìŠëì€ ë°ìŽí°ì ë©ìì§ë¥Œ ëìŒí ížëìì
ì ì ì¥í©ëë€.
- Hangfireë ë³Žë¥ ì€ìž ë©ìì§ë¥Œ ìŒêŽì ìŒë¡ ìœë ë°ë³µ ìì
ì ì€íí©ëë€.
- ë¹ëêž° íµì ìŽ íì±íë멎 RabbitMQì ê°ìŽ êµ¬ì±ë íµí© ìì§ì ë©ìì§ê° ê²ìë©ëë€.
- ìë£, ì€íš, ì€ëëìê±°ë ì€ëšë ë©ìì§ë ìì
ì ëíŽ ìì±ë ë
ŒëЬ ë° êµ¬ì±ì ìíŽ ì²ëЬë ì ììµëë€.
ìŽë¥Œ íµíŽ ëªšë íµí© ìŽë²€ížê° ìì ì ìŽê³ íšìšì ìŒë¡ ì²ëЬëìŽ ì¬ë¬ ìë¹ì€ì 몚ëìŽ êž°ë³ž ìì€í
ì ì±ë¥ì ìí¥ì ì£Œì§ ìê³ ë¹ëêž°ììŒë¡ íµì í ì ììµëë€.
ê°ì¥ ì€ìí ìŽì ê·ì¹ì ížëìì
겜ê³ë¥Œ ëª
ííê² ì ì§íë ê²ì
ëë€. Outbox륌 íµíŽ ì ì¡íŽìŒ íë ìŽë²€ížë íŽë¹ ìŽë²€ížê° ëíëŽë ë¹ìŠëì€ ë³ê²œê³Œ ëìŒí ížëìì
íëŠìì ìì±ëìŽìŒ í©ëë€.
ìí°í° ë° ìŽê±°í ë§ë€êž°
ìŽ ì¹ì
ììë ì í늬ìŒìŽì
ì ìí°í°, ìŽê±°í ë° Value Objectì ëììžì ììží ì€ëª
íê³ ê° íëª©ìŽ ìì±ë ìë¹ì€ì 몚ëì 볎ì¬ì€ëë€.
1. ìí°í° ìì± Category
Catalog ìë¹ì€ì Merchandising 몚ëì Category entity륌 ë§ë€ë €ë©Ž ë€ìì ì€íí©ëë€:
lino entity new --service Catalog --module Merchandising --name Category
ìí°í°ë ìë¹ì€ìì ìì±ë©ëë€. Catalog ê·žëŠ¬ê³ ëªšëìì Merchandising ë€ì곌 ê°ì 구조륌 ê°ì§ê³ ììµëë€:
ââââââ¬âââââ¬ââââââââââââââââ¬âââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ
â PK â FK â Property name â Type â Length â Required â Auto-increment â
ââââââŒâââââŒââââââââââââââââŒâââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â x â â Id â Guid â â x â x â
ââââââŒâââââŒââââââââââââââââŒâââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Name â string â 50 â x â â
ââââââŽâââââŽââââââââââââââââŽâââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
2. ìí°í° ìì± Product
ë€ììŒë¡ ê°ì ìë¹ì€ì 몚ëì Product entity륌 ë§ëëë€. ìŽ íëŠììë Value Object ProductDimension곌 enum ProductStatusê° Product aggregateì ìŒë¶ë¡ entity ìì± wizard ììì 구ì±ë©ëë€:
lino entity new --service Catalog --module Merchandising --name Product
ì€í ì€ìë simple properties, Categoryìì relationship, Value Object íì
ì Dimensions property, Enum íì
ì Status property륌 ì¶ê°í©ëë€.
ââââââ¬âââââ¬ââââââââââââââââ¬ââââââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ
â PK â FK â Property name â Type â Length â Required â Auto-increment â
ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â x â â Id â Guid â â x â x â
ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Name â string â 100 â x â â
ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Description â string â 500 â x â â
ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Price â decimal â â x â â
ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â x â CategoryId â Category â â x â â
ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Dimensions â ValueObject â â â â
ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Status â Enum â â x â â
ââââââŽâââââŽââââââââââââââââŽââââââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
2.1 Product ëŽë¶ìì Value Object ProductDimension 구ì±
ìŽ ê°ìŽëì ìë늬ì€ììë ProductDimensionì ë³ë ëª
ë ¹ìŒë¡ ë§ë€ì§ ììµëë€. Productì lino entity new ì€í ì€ Dimensions propertyë¡ ì¶ê°ëë©°, ì íì ì¹ì륌 ëíë
ëë€:
âââââââââââââââââ¬ââââââââââ¬âââââââââ¬âââââââââââ
â Property name â Type â Length â Required â
âââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââ€
â Width â decimal â â x â
âââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââ€
â Height â decimal â â x â
âââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââ€
â Depth â decimal â â x â
âââââââââââââââââŽââââââââââŽâââââââââŽâââââââââââ
ì°žê³ : lino value-object new ëª
ë ¹ì Value Object륌 ë³ëë¡ ë§ë€ìŽìŒ íë ìë늬ì€ë¥Œ ìíŽ ì¡Žì¬í©ëë€. ìŽë° ê²œì° ëì service ë° module ìžì륌 ì¬ì©í©ëë€:
lino value-object new --service <ServiceName> --module <ModuleName> --name <ValueObjectName>
2.2 Product ëŽë¶ìì Enum ProductStatus 구ì±
ë§ì°¬ê°ì§ë¡ ProductStatusë Productì lino entity new ììì Status propertyë¡ êµ¬ì±ë©ëë€. ìŽë ì í ìí륌 ì ìí©ëë€:
âââââââââ¬âââââââââââââââ¬âââââââââââââââ
â Value â Name â Display Name â
âââââââââŒâââââââââââââââŒâââââââââââââââ€
â 1 â Active â Active â
âââââââââŒâââââââââââââââŒâââââââââââââââ€
â 2 â Inactive â Inactive â
âââââââââŒâââââââââââââââŒâââââââââââââââ€
â 3 â Discontinued â Discontinued â
âââââââââŽâââââââââââââââŽâââââââââââââââ
ì°žê³ : ë€ë¥ž ìë늬ì€ìì enumì ë³ëë¡ ë§ë€ìŽìŒ í ëë lino enumeration new ëª
ë ¹ë ì¬ì©í ì ììµëë€:
lino enumeration new --service <ServiceName> --module <ModuleName> --name <EnumerationName>
3. ìë¡ìŽ ìì± ì¶ê°
íë¡ì ížê° ë°ì íšì ë°ëŒ Ʞ졎 ìí°í°ë¥Œ ížì§íì¬ ì ìì±ì ì¶ê°í ì ììµëë€.
ì륌 ë€ìŽ ìí°í°ì ìŽë¯žì§ 목ë¡ì ì¶ê°íê² ìµëë€. Product:
lino entity edit --service Catalog --module Merchandising --entity Product
ìŽ ê°ì íëŠ ììì List<ProductImage> íì
ì Images property륌 ë§ëëë€. ProductImageë Product aggregateì ìíë¯ë¡, ê·ž 구조ë Productì lino entity edit ì€ì 구ì±ë©ëë€:
ââââââ¬âââââ¬ââââââââââââââââ¬âââââââââââââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ
â PK â FK â Property name â Type â Length â Required â Auto-increment â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â x â â Id â Guid â â x â x â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Name â string â 100 â x â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Description â string â 500 â x â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Price â decimal â â x â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â x â CategoryId â EntityId â â x â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Dimensions â ValueObject â â â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Status â Enum â â x â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â x â Images â List â â â â
ââââââŽâââââŽââââââââââââââââŽâââââââââââââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
3.1 Product ëŽë¶ìì ProductImage 구ì±
ìŽ ìë늬ì€ììë ProductImage륌 ë³ë ëª
ë ¹ìŒë¡ ë§ë€ì§ ììµëë€. Product륌 ížì§íë ëì Images collectionì í목ìŒë¡ 구ì±ëë©° ë€ì 구조륌 ê°ì§ëë€:
ââââââ¬âââââ¬ââââââââââââââââ¬âââââââââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ
â PK â FK â Property name â Type â Length â Required â Auto-increment â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â x â â Id â Guid â â x â x â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â x â ProductId â EntityId â â x â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â UploadDate â DateTimeOffset â â x â â
ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Image â File â â x â â
ââââââŽâââââŽââââââââââââââââŽâââââââââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
ì°žê³ : lino entity new ëª
ë ¹ì ë€ë¥ž ìë늬ì€ìì ë
늜 entities륌 ë§ë€êž° ìíŽ ì¡Žì¬í©ëë€. entityê° êž°ì¡Ž aggregate ížì§ì ìŒë¶ê° ìë ëë ë€ìì ì¬ì©í©ëë€:
lino entity new --service <ServiceName> --module <ModuleName> --name <EntityName>
4. ë€ë¥ž ìë¹ì€ë¥Œ ìí ìí°í° ìì±
ìë¹ì€ ì€ Sales, ì°ëЬë ìí°í°ë¥Œ ë§ëëë€ ProductSnapshot, ìŽë íµí© ìŽë²€ížì ìíŽ ì ê³µë©ëë€.
ìí°í°ì ìë IDë¡ Product ìë¹ì€ìì ëìŽ Catalog, ì¬êž°ìë ìë ìŠë¶ë ì ììµëë€.
lino entity new --service Sales --name ProductSnapshot
ââââââ¬âââââ¬ââââââââââââââââ¬ââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ
â PK â FK â Property name â Type â Length â Required â Auto-increment â
ââââââŒâââââŒââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â x â â Id â Guid â â x â â
ââââââŒâââââŒââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Name â string â 100 â x â â
ââââââŒâââââŒââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââŒâââââââââââââââââ€
â â â Price â decimal â â x â â
ââââââŽâââââŽââââââââââââââââŽââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
ì°žê³ : Sales ìë¹ì€ì ProductSnapshotìë íµì¬ fieldsë§ ë³µì íìµëë€. Customer, Order, StockItem ê°ì 볎조 entitiesë 묞ì륌 ëšìíê² ì ì§íêž° ìíŽ ì¬êž°ì ììží ë€ë£šì§ ììµëë€. ProductSnapshotì shadow entityë¡ ëìí©ëë€. ìŠ, ìì ìê° ë€ë¥ž ìë¹ì€ì ìë ë°ìŽí°ì ë¡ì»¬, ìµì, ì ìŽë ë³µì¬ë³žì
ëë€. ìŽë¥Œ íµíŽ Salesë Catalogì entityë databaseì ì§ì ì졎íì§ ìê³ íìí ì í ë°ìŽí°ë¥Œ ì¡°íí ì ììµëë€.
ìŽë° ì íì 구조ë lino shadow-entity newì aliasìž lino shadow new ëª
ë ¹ìŒë¡ë ë§ë€ ì ììµëë€. ìŽ íëŠìì Linoë ë€ë¥ž service ëë moduleì entity 구조륌 ë³µì¬íê³ , ìë¹íë contextì ì믞 ìë propertiesë§ ì íí ì ìê² í©ëë€.
lino shadow new --service <ServiceName> --module <ModuleName> --name <ShadowEntityName>
ìì ìì ì볞 entityë Catalog.Merchandising.ProductìŽê³ ëìì Sales ìë¹ì€ìŽë©°, íë§€ì íìí fieldsë§ ì ì§í©ëë€.
ìŽë²€íž ë° íŽë¹ ížë€ë¬ ë§ë€êž°
ììœíì멎, ìŽì 죌ì ììë 몚ëì ìë¹ì€ë¥Œ ë§ë€ììµëë€. Catalog.Merchandising ìí°í° Product, Category ê·žëŠ¬ê³ ProductImage, 귌묎 ì€ Sales ì°ëЬë ìí°í°ë¥Œ ë§ëëë€ ProductSnapshot.
ìŽì ëë©ìž ìŽë²€ížì íµí© ìŽë²€ížë¥Œ ë§ë€ìŽ ë³Žê² ìµëë€. 목íë ìë¹ì€ìì ì íì ìì±íê±°ë ì
ë°ìŽíží ë Catalog, ìŽë¬í ë³ê²œ ì¬íì ë€ì곌 ê°ì ìë¹ì ìë¹ì€ì ë³µì ë©ëë€. Sales ê·žëŠ¬ê³ Stock.
1. ëë©ìž ìŽë²€íž ìì±
첫 ë²ì§ž ëšê³ë ëë©ìž ìŽë²€ížë¥Œ ë§ëë ê²ì
ëë€. ProductCreated ê·žëŠ¬ê³ ProductUpdated ë€ì ëª
ë ¹ìŒë¡:
ìì±íë ëì ìŽë²€ížë¥Œ ížë€ë¬ì ì°ê²°íê³ ëìì íµí© ìŽë²€ížì ë°ìì 구ì±í ì ììµëë€. ìŽë íìí 몚ë íëŠì ìì±ì ì€ì ì§ì€íí©ëë€.
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¬âââââââââââââââââââââââââââââââââ
â Question â Answer â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select a service: â Catalog â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select a module: â Merchandising â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select a entity: â Product â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select the event type: â Domain Event â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Enter the name of the event: â ProductCreated â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Do you want to create an associated event handler? â Yes â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Trigger a integration event? â Yes â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Choose the integration event to be triggered: â (Create new integration event) â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Enter the name of the event: â ProductCreated â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Which model will be used for this integration event? â Creation model â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŽâââââââââââââââââââââââââââââââââ
ê°ì ë°©ë²ìŒë¡ ìŽë²€ížë¥Œ ìì±í©ëë€. ProductUpdated:
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¬âââââââââââââââââââââââââââââââââ
â Question â Answer â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select a service: â Catalog â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select a module: â Merchandising â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select a entity: â Product â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Select the event type: â Domain Event â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Enter the name of the event: â ProductUpdated â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Do you want to create an associated event handler? â Yes â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Trigger a integration event? â Yes â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Choose the integration event to be triggered: â (Create new integration event) â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Enter the name of the event: â ProductUpdated â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââ€
â Which model will be used for this integration event? â Update model â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŽâââââââââââââââââââââââââââââââââ
ìŽë¥Œ íµíŽ ë€ìì ì»ì ì ììµëë€.
- ìì±ë ëë©ìž ìŽë²€íž(
ProductCreated ê·žëŠ¬ê³ ProductUpdated);
- íŽë¹ ëë©ìž ìŽë²€íž ížë€ë¬
- ëë©ìž ìŽë²€íž ížë€ë¬ì ìíŽ ìëìŒë¡ Outboxì êž°ë¡ëë íµí© ìŽë²€ížì
ëë€.
2. íµí© ìŽë²€íž ížë€ë¬ ìì±
ë€ì ëšê³ë íµí© ìŽë²€ížë¥Œ ì¬ì©í ìë¹ì€ë¥Œ ì ìíë ê²ì
ëë€. ìŽë¥Œ ìíŽ ë€ìì ì¬ì©í©ëë€.
ìì± íëŠìë ë€ììŽ í¬íšë©ëë€.
- ížë€ë¬ë¥Œ í¬íší ìë¹ì€, 몚ë ë° ìí°í°ë¥Œ ì íí©ëë€.
- ì¬ì©ë íµí© ìŽë²€ížì íŽë¹ ìŽë²€ížê° ë°ìí ìë¹ì€/몚ë/ìí°í°ë¥Œ ì íí©ëë€.
ì륌 ë€ìŽ ìë¹ì€ìì Sales ì°ëЬë ížë€ë¬ë¥Œ ë§ë€ììµëë€. ProductCreated ê·žëŠ¬ê³ ProductUpdated ì ìíŽ ížëŠ¬ê±°ë ìŽë²€ížë¥Œ ìë¹í©ëë€. Catalog.Merchandising.Product:
ââââââââââââââââââââââââââââââââââââââââââââââ¬ââââââââââââââââââââ
â Question â Answer â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select a service: â Sales â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select a entity: â ProductSnapshot â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event type: â Integration Event â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event's service to be consumed: â Catalog â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event's module to be consumed: â Merchandising â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event's entity to be consumed: â Product â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Choose the event to be consumed: â ProductCreated â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Enter the name of the event handler: â ProductCreated â
ââââââââââââââââââââââââââââââââââââââââââââââŽââââââââââââââââââââ
ââââââââââââââââââââââââââââââââââââââââââââââ¬ââââââââââââââââââââ
â Question â Answer â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select a service: â Sales â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select a entity: â ProductSnapshot â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event type: â Integration Event â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event's service to be consumed: â Catalog â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event's module to be consumed: â Merchandising â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select the event's entity to be consumed: â Product â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Choose the event to be consumed: â ProductUpdated â
ââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Enter the name of the event handler: â ProductUpdated â
ââââââââââââââââââââââââââââââââââââââââââââââŽââââââââââââââââââââ
ìŽë¥Œ íµíŽ ìë¹ì€ìë ë ê°ì íµí© ìŽë²€íž ížë€ë¬ê° ììµëë€. Sales, íµí© ìŽë²€ížìì íìí íëë§ ìë¹í©ëë€. Catalog.Merchandising.
ìŽë ê² í멎 ë³µì ë í
ìŽëžìŽ íì ë°ìŽí°ë§ ì ì§íì¬ ì€í 늬ì§ì ì±ë¥ì ìµì íí ì ììµëë€.
ìí€í
ì² ìž¡ë©Žìì ììëë íëŠì ë€ì곌 ê°ìµëë€. ëª
ë ¹ ì²ëŠ¬êž°ê° ì§ê³ë¥Œ ë³ê²œíê³ , ëë©ìž ìŽë²€ížê° ë°ìíê³ , ì²ëŠ¬êž°ê° íµí© ìŽë²€ížë¥Œ ì€ë¹íê³ , Outboxê° ë©ìì§ë¥Œ ì ì¥íê³ , Background JobìŽ ë¬žì 륌 ì²ëЬíê³ , ë©ìì§ ìì§ìŽ ìë¹ììê² ë©ìì§ë¥Œ ì ë¬í©ëë€.
ìŽë ê² í멎 ìë¹ì€ ê°ì ëêž° ê²°í©ì ë°©ì§íê³ íŽë¹ ìŽë²€ížê° ê²ìëì§ ìê³ ë°ìŽí°ë² ìŽì€ê° ë³ê²œë ìíìŽ ì€ìŽëëë€.
ì¹ íìŽì§, API, ëª
ë ¹ ë° ì¿ŒëŠ¬ ìì±
ì ê°ì¥ í° ì¥ì ì€ íëë Lino CLI ì¹ íìŽì§, API, ëª
ë ¹ ë° ì¿ŒëŠ¬ë¥Œ ìëíë ë°©ììŒë¡ íµí© ìì±íì¬ ì 첎 ê°ë° íëŠì ëšìííë ê²ì
ëë€.
ëë©ìž 몚ëžìŽ ì¶©ë¶í ìì ì ìŽë©Ž ìŽ ëª
ë ¹ì í멎ìì ì§ìì±ê¹ì§ì ì 첎 겜ë¡ë¥Œ ìì±íì¬ ìŽì ëšê³ìì ìíë 몚ëžë§ ìì
ì ìµì¢
ì¬ì©ììê² íìí©ëë€.
ììíë €ë©Ž ë€ì ëª
ë ¹ì ì€íí멎 ë©ëë€.
ìŽ ê³Œì ìì ê·íë ë€ìì ìííê² ë©ëë€.
- ë
žì¶íë €ë ìë¹ì€, 몚ë ë° ìí°í°ë¥Œ ì íí©ëë€.
- ìì±ë íìŽì§ì ì í곌 ìŽëŠì ì ííììì€.
- 목ë¡ì í¬íšë íë륌 ì ííììì€.
- ëª©ë¡ íìŽì§(íìŽì§ê° ë§€ê²šì§ ê·žëŠ¬ë) ë° ìì±/ížì§ ììì ìëìŒë¡ ìì±í©ëë€.
- íë°ížìëìì ì¬ì©í HttpClient íŽëì€ë¥Œ ìì±í©ëë€.
- ìì²/ìëµ ê³ìœ ë° íìí 몚ë REST API(POST, PUT, PATCH, DELETE ë° GET)륌 ìì±í©ëë€.
- ìì í CRUD íëŠì 볎ì¥íêž° ìíŽ ë°ìŽí°ë² ìŽì€ë¡ ìŽëíë ëª
ë ¹, 쿌늬, ížë€ë¬ ë° ì íšì± ê²ì¬êž°ë¥Œ ë§ëëë€.
ìŽ ëª
ë ¹ì ì¬ì©í멎 ìží°íìŽì€ ê³ìžµ, API ë° ë¹ìŠëì€ ë¡ì§ì ìëìŒë¡ ìì±íì§ ìê³ ë êž°ë¥ì ìž ì í늬ìŒìŽì
ì ì»ì ì ììŒë©° ìë¹ì€ ê°ì íì€ê³Œ ìŒêŽì±ì ì ì§í©ëë€.
ê·žë ëëŒë ìì± ë©íë°ìŽí°ë§ìŒë¡ë 몚ë ê·ì¹ì ì¶ë¡ í ì ììŒë¯ë¡ ìì± í ë¹ìŠëì€ ê·ì¹ê³Œ ì íšì± ê²ì¬ë¥Œ ê²í íìžì.
ìŽ íë¡ì ížììë ë€ì ìí°í°ì ëí íµí© íìŽì§ë¥Œ ìì±í ì ììµëë€.
- Catalog.Merchandising.
Category
- Catalog.Merchandising.
Product
- Sales.
ProductSnapshot
íìŽì§, API ë° ëª
ë ¹/쿌늬륌 ìì±í í ì í늬ìŒìŽì
ì íë°ížìëì ë°±ìë ê°ì ì벜íê² ìíž ìì©í ì€ë¹ê° ëë©° ê²ìŠ, ê²œë¡ ë° ì§ìì±ì ìŽë¯ž ìëìŒë¡ 구ì±ë©ëë€. Lino CLI.
ë¬ëŠ¬ë€ dotnet build ê¹šì§ ì°žì¡°, ìŒêŽëì§ ìì ê³ìœ ëë ìµê·Œ ëªšëž ë³ê²œì ìí¥ì ì¡°êž°ì ìë³í©ëë€.
ë§ìŽê·žë ìŽì
ìì± ë° ì ì©
ìí°í°, Value Object, ìŽê±°í, êŽê³, ìžìŠ, í
ëíž ì§ì ëë Background Job ì§ìì±ì ìì±íê±°ë ë³ê²œí í ë§ìŽê·žë ìŽì
ì ìì±íì¬ ë°ìŽí°ë² ìŽì€ì ìœë ì ë ¬ì ì ì§í©ëë€. ë§ìŽê·žë ìŽì
ì ëªšëž ë³ê²œ ì¬íì ëª
ìì ìŽê³ ë²ì ì§ì ê°ë¥íë©° ê²í ê°ë¥í ìí°í©ížë¡ ë³íí©ëë€.
ê·žë§íŒ Lino CLI Entity Framework륌 ì¬ì©íì¬ ìŽ íë¡ìžì€ë¥Œ ì¡°ì íê³ , ì¬ë°ë¥ž ìë¹ì€/몚ëì ì ííê³ , íì¬ ë²ì ì ìë¹ì€ë¥Œ ì¬ì©íê³ , ìì±ë ì€í¬ëŠœížë¥Œ 구ì±íì¬ ì¶ì ì±ì ì©ìŽíê² í©ëë€.
1ëšê³: ë§ìŽê·žë ìŽì
ë§ë€êž°
ì ë§ìŽê·žë ìŽì
ì ë§ë€ë €ë©Ž ë€ìì ì€ííìžì.
lino database migrations add
ìŽ ëª
ë ¹ì ë€ì곌 ê°ì ë³ì¹ë íì©í ì ììµëë€. lino database migrations new ê·žëŠ¬ê³ lino database migrations create, ê·žë¬ë 묞ììì ì ížëë ë°©ë²ì ë€ì곌 ê°ìµëë€. add.
ì€í ì€ì ë€ì ì¬íì ìë €ìŒ í©ëë€.
- ì륌 ë€ìŽ ë§ìŽê·žë ìŽì
ì ë°ì ìë¹ì€ì
ëë€.
Catalog;
- ìë¹ì€ê° 몚ëíìž ê²œì° ìí¥ì ë°ë 몚ëì
ëë€.
Merchandising;
- íì¬ ìë¹ì€ ë²ì (ë€ììì ìœì)
src/Services/<ServiceName>/version.txt;
- ë€ì곌 ê°ì ë§ìŽê·žë ìŽì
ì ëí ê°êŽì ìž ì€ëª
Initial migration ëë Add product images.
âââââââââââââââââââââââââââââââââââââââââââââ¬ââââââââââââââââââââ
â Question â Answer â
âââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select a service: â Catalog â
âââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Select a module: â Merchandising â
âââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Current version of the service: â 0.1.0 â
âââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââ€
â Provide a description for this migration: â Initial migration â
âââââââââââââââââââââââââââââââââââââââââââââŽââââââââââââââââââââ
ìë¹ì€ì 몚ëì ìŽë¯ž ìê³ ììŒë©Ž ë€ì ë°ìŽí°ë¥Œ ì§ì ì
ë ¥í ì ììµëë€.
lino database migrations add --service <ServiceName> --module <ModuleName>
2ëšê³: ìì±ëë ëŽì©
ìì±ì íìží ë Linoë ì íí ìë¹ì€ ëë 몚ë ì§ìì± íë¡ì ížì ëí ì¬ë°ë¥ž Entity Framework ëª
ë ¹ì ì€ë¹í©ëë€. 몚ëì ìë¹ì€ììë ë§ìŽê·žë ìŽì
ìŽ íŽë¹ 몚ëìì 격늬ë ìíë¡ ì ì§ëìŽ ìë¡ ë€ë¥ž 컚í
ì€ížì ë³ê²œ ì¬íìŽ íŒí©ëë ê²ì ë°©ì§í©ëë€.
- íì¬ ë²ì ì ìë¹ì€ì êŽë šë ìë¡ìŽ ë°ìŽí°ë² ìŽì€ ë§ìŽê·žë ìŽì
.
- ì§ìì± ê³ìžµì 구ì±ë íŽë¹ SQL ì€í¬ëŠœížë ë€ì곌 ê°ì ë²ì 겜ë¡ë¡ 구ì±ë©ëë€. /scripts/<ë²ì >/<íìŒ ìŽëŠ>;
- ì íí ìë¹ì€ ëë 몚ëì ìžíëŒ/ì§ìì± êµ¬ì¡°ì ížíëë ìí°í©íž
- ìë¹ì€ ë²ì , ì€í€ë§ ë³ê²œ ë° ì í늬ìŒìŽì
늎늬ì€ì êŽë šë ì¶ì ê°ë¥í êž°ë¡ì
ëë€.
3ëšê³: ë§ìŽê·žë ìŽì
ëìŽ ë° ì ì©
ë°ìŽí°ë² ìŽì€ì ë³ê²œ ì¬íì ì ì©íêž° ì ì ìë €ì§ ë§ìŽê·žë ìŽì
ì ëìŽíê³ ììëë ë§ìŽê·žë ìŽì
ìŽ ìëì§ íìžíìžì.
lino database migrations list --service <ServiceName> --module <ModuleName>
구ì±ë í겜ì ë§ìŽê·žë ìŽì
ì ì ì©íë €ë©Ž ë€ì ìëŽë¥Œ ë°ë¥Žìžì.
lino database migrations apply --service <ServiceName> --module <ModuleName>
ë¡ì»¬ ê°ë°ìì ìŽ íëŠì ëªšëž ê²ìŠ ìë륌 ëì
ëë€. ê³µì ëë íë¡ëì
í겜ììë íìŽ ì ìí ë°°í¬ íë¡ìžì€ë¥Œ íµíŽ ë§ìŽê·žë ìŽì
ì ì ì©íê³ íìí ê²œì° ì€í¬ëŠœíž ê²í , ì¹ìž ë° ë°±ì
ì ìíí©ëë€.
4ëšê³: íµì ë í겜ìì ëë늬Ʞ ëë ì ê±°
ì¬ì© revert íµì ë í겜ì ì ì©ë ë§ìŽê·žë ìŽì
ì ë°ííŽìŒ íë ê²œì° ë§ìŽê·žë ìŽì
ëŽì©ì ë°ëŒ íŽë¹ ìì
ìŽ íꎎì ìž ëª
ë ¹ì ì€íí ì ìë€ë ì ì ìŽíŽíìžì.
lino database migrations revert --service <ServiceName> --module <ModuleName>
ì¬ì© remove ìŒë°ì ìŒë¡ ë³ê²œ ì¬íì 컀ë°íê±°ë ê²ìíêž° ì ì 컀ë°ëì§ ìì ë§ì§ë§ ë§ìŽê·žë ìŽì
ì ìì í©ëë€.
lino database migrations remove --service <ServiceName> --module <ModuleName>
ëªšë² ì¬ë¡
- ì ìí°í°, ìì±, êŽê³, ìžë±ì€, ì ìœ ì¡°ê±Ž, ìžìŠ í
ìŽëž ëë Outbox í
ìŽëž ë± ì§ìí 몚ëžìŽ ë³ê²œë ëë§ë€ ë§ìŽê·žë ìŽì
ì ë§ëëë€.
- ê³µì í겜ì ì ì©íêž° ì ì ìì±ë ìœëì SQLì ê²í íìžì.
- ìŽëŠ ë³ê²œ, ì í ë³ê²œ, ìŽ ìì , í€ ë³ê²œ, ì€í€ë§ ë³ê²œ ë° ë°ìŽí° ìì€ì ìŒìŒí¬ ì ìë ìì
ì í¹ë³í 죌ì륌 êž°ìžìŽììì€.
- ê°ì¬, ê³íë 례백 ë° ëŠŽëŠ¬ì€ íµì ì ì©ìŽíê² íêž° ìíŽ ìì±ë ì€í¬ëŠœížì ë§ê² ìë¹ì€ ë²ì ì ì ì§í©ëë€.
- ë§ìŽê·žë ìŽì
ì ìì±í í ë¹ë ë° êŽë š í
ì€ížë¥Œ ì€ííì¬ ëë©ìž, ì§ìì±, API ë° ìì±ë íìŽì§ê° ìŒêŽì±ì ì ì§íëì§ íìžíìžì.
ìŽ íëŠì ë°ë¥Žë©Ž ë°ìŽí°ë² ìŽì€ë Linoì ì ìë ëë©ìž 몚ëžê³Œ ìŒêŽì±ì ì ì§íë©° ê° ì€í€ë§ ë³ê²œ ì¬íì 묞ìíëê³ ì¶ì ê°ë¥íë©° ë°°í¬ ì ì ê²í í ì ììµëë€.
5ëšê³: ì í늬ìŒìŽì
ì ë¡ì»¬ìì ê²ìŠ
project, Web App, services, modules, entities, migrations, APIs, Commands, Queriesê° ì€ë¹ë멎 Docker images륌 ìì±íêž° ì ì ì í늬ìŒìŽì
ì ê²ìŠí©ëë€. 뚌ì solutionì ë¹ëíì¬ ìì±ë 몚ë projects, contracts, clientsê° ê³ì ìŒêŽì ìžì§ íìží©ëë€:
ê·žë° ë€ì Aspire AppHost륌 íµíŽ ì í늬ìŒìŽì
ì ì€íí©ëë€:
dotnet run --project src/Aspire/AppHost/<ProjectName>.AppHost.csproj
Aspire dashboard륌 ì¬ì©íì¬ APIs, Web App, database, cache, messaging, Background Jobsê° ì¬ë°ë¥Žê² ììëìëì§ íìží©ëë€. ìŽí Backofficeìì 죌ì flows륌 í
ì€íží©ëë€: ìì±ë pages, Blazorìì Api.Client projectsë¡ì ížì¶, ì ì©ë migrations, íì±íë ê²œì° authentication, ê·žëŠ¬ê³ ìë늬ì€ì í¬íšë events ëë jobsì
ëë€.
ì í늬ìŒìŽì
ìŽ ë¹ëëê³ ë¡ì»¬ìì ì€íëë©° 죌ì flowsê° ê²ìŠë멎, projectë packaging ëšê³ë¡ ìŽëí ì€ë¹ê° ë ê²ì
ëë€.
Docker ìŽë¯žì§ ìì± ì€
ì í늬ìŒìŽì
ìŽ ë¹ëëê³ AppHost륌 íµíŽ ë¡ì»¬ìì ì€íëë©° 죌ì flowsê° í
ì€ížë멎, servicesì web applicationsì Docker images륌 ìì±íì¬ ëì€ì container registryì ê²ìí ì ììµëë€.
ì íí í목ì imagesë¡ íší€ì§í ì€ë¹ê° ëìì ë lino build륌 ì¬ì©í©ëë€.
ê·žë§íŒ Lino CLI ë€ì ëª
ë ¹ì ì¬ì©íì¬ ìŽ íë¡ìžì€ë¥Œ ëšìíí©ëë€.
ì€íí멎 íë¡ì ížìì ì¬ì©í ì ìë 몚ë ìë¹ì€ ë° ì¹ ì í늬ìŒìŽì
목ë¡ê³Œ íì¬ ë²ì ìŽ íìë©ëë€.
Select the services or web applications you want to include in the build:
> [ ] Services
[ ] Catalog |0.1.0|
[ ] Sales |0.1.0|
[ ] Security |0.1.0|
[ ] Stock |0.1.0|
[ ] Web applications
[ ] Backoffice |0.1.0|
íë ìŽìì ìë¹ì€ì ì¹ ì í늬ìŒìŽì
ì ì ííì¬ ìŽë¯žì§ë¥Œ ëìì ìì±í ì ììµëë€. ìíë í목ì íìí멎 ë©ëë€.
ê·žë° ë€ì ìì±ë ìŽë¯žì§ì ë²ì ì ì
ë°ìŽíží ë°©ë²ì ì ííëŒë ë©ìì§ê° íìë©ëë€. ì¬ì© ê°ë¥í ìµì
ì ë€ì곌 ê°ìµëë€.
- íì¬ ë²ì ì ì ì§íìžì â Ʞ졎 ë²ì ì ë³ê²œíì§ ììµëë€.
- ë°ì â íšì¹ ë²ì ì ëì
ëë€(ì: 0.1.0 â 0.1.1).
- 믞ì±ë
ì â ë¶ ë²ì ì ìŠê°ìíµëë€(ì: 0.1.0 â 0.2.0).
- 죌ìí â 죌ì ë²ì ì ìŠê°ìíµëë€(ì: 0.1.0 â 1.0.0).
ìë¹ì€ë¥Œ ì ííê³ ë²ì ìŠë¶ì ì ìí í Lino CLI ë€ìì ìíí©ëë€:
- ê° ìë¹ì€ ë° ì¹ ì í늬ìŒìŽì
ì ëí ìœë륌 ë¹ëí©ëë€.
- íŽë¹ Docker ìŽë¯žì§ ìì±
- ì ìë ë²ì ìŒë¡ í귞륌 ì ì©í©ëë€.
- 컚í
ìŽë ë ì§ì€ížëЬì ê²ìí ì ìë ìŽë¯žì§ ë§ë€êž°
- ë€ì곌 ê°ì ê²ì ë§€ê°ë³ì ì¬ì©
-c Release, -p:PublishProfile=DefaultContainer, -p:ContainerRepository, -p:ContainerImageTag ê·žëŠ¬ê³ -p:ContainerLabelVersion, ìì±ë íë¡ì íž ì íì ë°ëŒ ë€ëŠ
ëë€.
íë¡ìžì€ê° ëë멎 몚ë ì¹ ìë¹ì€ì ì í늬ìŒìŽì
ìŽ ì íëììì ê³ ë €íì¬ ìì±ë ìŽë¯žì§ë ë€ì곌 ê°ì 구조륌 ê°ìµëë€.
- my-app/services/catalog-host - íê·ž: 0.1.0
- my-app/services/sales-api - íê·ž: 0.1.0
- my-app/services/security-api - íê·ž: 0.1.0
- my-app/services/stock-api - íê·ž: 0.1.0
- my-app/webapps/backoffice - íê·ž: 0.1.0
ìŒë°ì ìŒë¡ ê°ëší ìë¹ì€ë ë€ì곌 ê°ì ì ì¥ì륌 ìì±íë 겜í¥ìŽ ììµëë€. project-name/services/service-name-api:1.2.3, 몚ëí ìë¹ì€ë ížì€ížë¥Œ ë€ì곌 ê°ìŽ ì¬ì©í©ëë€. project-name/services/service-name-host:1.2.3ë° Blazor ì í늬ìŒìŽì
ì ë€ì곌 ê°ì 겜ë¡ë¥Œ ì¬ì©í©ëë€. project-name/webapps/webapp-name:1.2.3.
êŽì°°: ìŽ íë¡ìžì€ë ìœëì Docker ìŽë¯žì§ ë²ì ê°ì ìŒêŽì±ì 볎ì¥íì¬ ì¬ë¬ í겜ì ë°°í¬ ë° ì ì§ êŽëŠ¬ë¥Œ ìŽì§í ë¿ë§ ìëëŒ ê° ìë¹ì€ë¥Œ ë
늜ì ìž ì»ší
ìŽëì 격늬í ì ììµëë€.
ë¡ì»¬ ìŽë¯žì§ê° ìì±ë í ë°°í¬ íë«íŒìì ì¬ì©íë ë ì§ì€ížëЬ(ì: Docker Hub, GitHub Container Registry, AWS ECR, Azure Container Registry ëë ë€ë¥ž OCI íží ë ì§ì€ížëЬ)ì ê²ìí©ëë€. ìŽë¯žì§ ëŽì ë¹ë°, íë¡ëì
ì°ê²° 묞ììŽ ëë ì격 ìŠëª
ì í¬íšíì§ ë§ìžì.
ì í늬ìŒìŽì
ìì ë²ì ìì±
Linoë ê° ìë¹ì€ì ìŽì ë²ì ì ì ì§ êŽëЬí©ëë€. src/Services/<ServiceName>/version.txt ê·žëŠ¬ê³ ê° ì¹ ì í늬ìŒìŽì
src/WebApps/<WebAppName>/version.txt. ìŽë¥Œ íµíŽ ë°°í¬ ê°ë¥í ê° í목ì ëíŽ ë
늜ì ìž ëŠŽëŠ¬ì€ë¥Œ ê³íí ì ììµëë€.
ë²ì ì ë³ê²œíêž° ì ì íì¬ ìí륌 ê²ì¬íìžì.
ì¬ì© lino version show í¹ì ìë¹ì€ë ì¹ ì í늬ìŒìŽì
ì ì°žì¡°íŽìŒ í ë.
ì¹ ìë¹ì€ ëë ì í늬ìŒìŽì
ì ì ë²ì ì ë늬ë ê²ì ê°ëšíê³ ì€ì ì§ì€íë íë¡ìžì€ì
ëë€. Lino CLI. ë€ì ëª
ë ¹ì ì€ííìžì.
Docker ìŽë¯žì§ë¥Œ ìì±íë ê²ê³Œ ë§ì°¬ê°ì§ë¡ ìŽ ëª
ë ¹ì ì€íí멎 íë¡ì ížì ìë 몚ë ìë¹ì€ ë° ì¹ ì í늬ìŒìŽì
ì ì 첎 목ë¡ìŽ íìë©ëë€.
ì íí íëª©ë§ ë²ì ìŽ ì¬ëŒê°ê³ ëëšžì§ í목ì ë³ê²œëì§ ììµëë€.
Select the services or web applications that will have version changes:
> [ ] Services
[ ] Catalog |0.1.0|
[ ] Sales |0.1.0|
[ ] Security |0.1.0|
[ ] Stock |0.1.0|
[ ] Web applications
[ ] Backoffice |0.1.0|
ìíë í목ì ì íí í ë²ì ìŠë¶ ì íì ì ííëŒë ë©ìì§ê° íìë©ëë€. ì¬ì© ê°ë¥í ìµì
ì ë€ì곌 ê°ìµëë€.
- ë°ì â êž°ë¥ì ìí¥ì ì£Œì§ ìë ìì ìì ;
- 믞ì±ë
ì â ìŽì ë²ì 곌 ížíëë ìë¡ìŽ êž°ë¥ ì¶ê°;
- 죌ìí â ìŽì ë²ì 곌ì ížíì±ì 깚ëšëŠŽ ì ìë ë³ê²œ ì¬í.
ì¹ ìë¹ì€ ë° ì í늬ìŒìŽì
ì ë²ì ìŽ ë€ìì ì§ì ì ìž ìí¥ì 믞ì¹ë€ë ì ì ê°ì¡°íë ê²ìŽ ì€ìí©ëë€.
- ìŽë¯žì§ íê·ž Docker;
- ë°ìŽí°ë² ìŽì€ ë§ìŽê·žë ìŽì
ìŒë¡ ìì±ë ì€í¬ëŠœížë¥Œ ì ì¥íë ë° ì¬ì©ëë íŽëì
ëë€.
- ëŠŽëŠ¬ì€ ë° íë¡ì íž êž°ë¡ êŽëЬ
- ëŠŽëŠ¬ì€ ë
žíž, ë°°í¬ ë§€ëíì€íž ë° API ìë¹ììì 컀뮀ëìŒìŽì
.
ë²í륌 ì ì©íêž° ì ì 늎늬ì€ì ìŒë¶ìž ìœë ë³ê²œ ì¬í, ë§ìŽê·žë ìŽì
, íµí© ìŽë²€íž, API ê³ìœ ë° íë°ížìë ë³ê²œ ì¬íì ê²í íìžì. í ê°ì§ ë²ì ë°ì íží ê°ë¥í ìì ì¬íì ëíëŽìŒ í©ëë€. 믞ì±ë
ì íží ê°ë¥í ì¶ê° í목ì ëíëŽìŒ íë©°, 죌ìí ìë¹ìê° ì ìíŽìŒ íë ë³ê²œì ìíŽ ììœëìŽìŒ í©ëë€.
ìŽê²ìŒë¡ ì°ëЬë ë€ìì ì¬ì©íì¬ ì¹ íë¡ì ížë¥Œ 구ì¶íë ë° íìí 몚ë íì ëª
ë ¹ì ëí ëšê³ë³ ê°ìŽë륌 ë§ë¬ŽëЬí©ëë€. Lino CLI, ì€ì¹ë¶í° ìë¹ì€, ìí°í°, ìŽë²€íž ë° íìŽì§ ìì±ë¶í° Docker ìŽë¯žì§ ìì± ë° ë²ì êŽëЬê¹ì§.
ëë©ìž 몚ëžë§, ì¬ì© ì¬ë¡ ë° í멎 ìì±, ë¹ë ë° í
ì€ížë¥Œ íµí ê²ìŠ, ë§ìŽê·žë ìŽì
ìì±, ë²ì íê·žê° ìë ìŽë¯žì§ ê²ì, ëª
ìì ìž SemVer ê°ì ì¬ì©íì¬ ê° ìë¹ì€ ëë ì¹ ì í늬ìŒìŽì
ëŠŽëŠ¬ì€ ë± ì 첎 íëŠì ì¶ì í ì ììµëë€.
ì í¬ ì±ëì íë¡ì°íë ê²ì ìì§ ë§ìžì. ì íëž ê°ëší ì¡°ìë¶í° ê³ êž êž°ë¥ê¹ì§ ë구 ì¬ì©ì ëí ììží íí 늬ìŒ, ì€ì ë°ëªš ë° íì ë°ë¥Žììì€.