appsettings.json: Կարգավորման ֆայլ
Բովանդակություն
Ներածություն
appsettings.json-ը նախատեսված է 8X սերվիսի աշխատանքի կարգավորման պարամետրերը սահմանելու համար, ինչպիսիք են տվյալների բազայի Sql Connection-ը, լոգավորման կարգավորումները: Այստեղ ավելացվում են կարգավորումներ, որոնք պարունակում են գաղտնիք (password) կամ որոնք էականորեն փոխում են 8X սերվիսի պահվածքը։ Նման պարամետրերը նպատակահարմար չէ պահել 4X հարթակի համակարգային պարամետրերի մեջ։
Տե՛ս նաև
- All About AppSettings In ASP.NET Core
- Configuration in .NET
- Configuration in ASP.NET Core
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Azure AD-ի հետ
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Windows ADFS-ի հետ
- Սխալների լոգավորման կազմակերպում
additionalSettings
Նախկինում 8X սերվիս լոգին լինելու համար անհրաժեշտ էր միայն մուտքանուն և գաղտնաբառ, որի արդյունքում ստացվող JWT token-ի միջոցով օգտագործողը նույնականացվում էր և կարող էր կատարել կամայական API կանչեր։
Այժմ մտցվել է API Client-ի գաղափար, որը նախատեսված է 8X սերվիս մուտք գործող կլիենտ ծրագրի սահմանման համար։
Այն անհրաժեշտ է ստեղծել 4X կամ 8X համակարգի UI-ից “API Client-ներ” դիտելու ձևից “Ավելացնել” կոնտեքստային ֆունկցիայով՝ նշելով կլիենտի վավերականացման եղանակը (սերտիֆիկատով կամ բանալիով) և նկարագրելով Json ֆորմատի Manifest ֆայլ, որը սահմանում է կլիենտ ծրագրի իրավասությունները և սահմանափակումները (որ օգտագործողները կարող են մուտք գործել համակարգ, որ տվյալների աղբյուրներին, փաստաթղթերին, DPR-ներին կարող են դիմել ու որ API կանչերը կատարել)։
Այս հայտանիշը ավելացվել է հին լոգինի մեխանիզմը անջատելու համար։
"additionalSettings": {
"disableOldLogins": false
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| disableOldLogins | bool | Ոչ պարտադիր | true | Լոգինի հին մեխանիզմի անջատման հայտանիշ: |
Autentication
Azure AD-ով կամ Windows ADFS-ով նույնականացման կարգավորումներ։
Մանրամասների համար տե՛ս
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Azure AD-ի հետ
- ՀԾ-Ձեռնարկություն, ՀԾ-Աշխատավարձ և ՀԾ-Բանկ համակարգերի գրանցման մեխանիզմի ինտեգրացումը Windows ADFS-ի հետ։
Այս կարգավորումները հարկավոր է լինեն նույնը 8X սերվիսի և կոնֆիգուրացիոն սերվիսի համար։
"Autentication": {
"Alternative": "AD",
"AD": {
"Authority": "https://login.microsoftonline.com/yourdomain.am",
"ClientId": "158u5wn2-2n95-14nm-22b2-9694efe14vae",
"RedirectUri": "https://yourdomain.am/b2bAdminTool",
"TokenMapping": "oid",
"ResourceID": "https://yourdomain.am/Cloud"
},
"ADFS": {
"Authority": "https://federationservername.yourdomain.am/adfs",
"ClientId": "v04c6fd-4220-14e6-n315-f147ac852c18",
"RedirectUri": "https://localhost:44322",
"TokenMapping": "sid"
}
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Alternative | string | Ոչ պարտադիր | AD | Սահմանում է օգտագործողի նույնականացման եղանակը՝ AD կամ ADFS։ |
| AD | object | Պարտադիր | Կարգավորում է Azure Active Directory-ով նույնականացման կարգավորումները։ | |
| Authority | string | Պարտադիր | - | Oգտագործողի նույնականացման համար անհրաժեշտ URL-ը։ |
| ClientId | string | Պարտադիր | - | Ծրագրի Client ID-ն, որը գրանցված է Azure AD-ում։ |
| RedirectUri | string | Պարտադիր | - | Նույնականացումից հետո վերահղման համար URL-ը։ |
| TokenMapping | string | Պարտադիր | - | Նույնականացման համար անհրաժեշտ տոկենի տեսակը՝ OID։ |
| ResourceID | string | Պարտադիր | - | Ծրագրի կողմից մուտքագրվող ռեսուրսի URL-ը։ |
| ADFS | object | Պարտադիր | - | Կարգավորում է Active Directory Federation Services (ADFS)-ով նույնականացման կարգավորումները։ |
| Authority | string | Պարտադիր | - | Oգտագործողի նույնականացման համար անհրաժեշտ URL-ը։ |
| ClientId | string | Պարտադիր | - | Ծրագրի Client ID-ն, որը գրանցված է ADFS-ում։ |
| RedirectUri | string | Պարտադիր | - | Նույնականացումից հետո վերահղման համար URL-ը։ |
| TokenMapping | string | Պարտադիր | - | Նույնականացման համար անհրաժեշտ տոկենի տեսակը՝ SID։ |
BackgroundJobs
Այս բաժինը նախատեսված է առաջադրանքների աշխատանքի կարգավորման համար։
"BackgroundJobs": {
"Enabled": false,
"CheckIntervalSeconds": 30,
"Scheduler": false
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Enabled | bool | Ոչ պարտադիր | false | Առաջադրանքների հերթագրման և կատարման մեխանիզմի միացման հայտանիշ։ |
| CheckIntervalSeconds | int | Ոչ պարտադիր | 30 | Առաջադրանքների հերթագրման և կատարման պարբերականությունը վայրկյաններով։ |
| Scheduler | bool | Ոչ պարտադիր | false | Պարամետրի true արժեքի դեպքում սերվիսը հեթագրում և կատարում է առաջադրանքները, հակառակ դեպքում` միայն կատարում: |
db
Այս բաժինը նախատեսված է տվյալների բազայի կարգավորումները տալու համար։
"db": {
"server": "TEST-SERVER",
"database": "test_db",
"login": "test-user",
"password": "test-password",
"readOnly" : "1",
"maxPoolSize" : 100,
"customerId": "100000",
"encrypt": false
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| server | string | Պարտադիր | - | Սերվերի անուն: |
| database | string | Պարտադիր | - | Սերվերում գտնվող տվյալների բազայի անուն: |
| login | string | Պարտադիր | - | Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող մուտքանունը: |
| password | string | Պարտադիր | - | Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող գաղտնաբառը: |
| readOnly | string | Ոչ պարտադիր | “0” | Նշում է, թե արդյոք տվյալների բազային միացումը միայն կարդալու իրավասությամբ է, թե ոչ: |
| maxPoolSize | int | Ոչ պարտադիր | 100 | Տվյալների բազային միացումների Pool-ում միացումների առավելագույն քանակը: |
| customerId | string | Ոչ պարտադիր | Պատվիրատուի նույնակացման համար: Օգտագործվում է ՀԾ-Ձեռնարկության և ՀԾ-Աշխատավարձի 8X սերվիսների կողմից: | |
| encrypt | bool | Ոչ պարտադիր | false | Նշում է, թե արդյոք տվյալների բազային միացումը ծածկագրվի, թե ոչ: |
Extensions
Այս բաժինը նախատեսված է կազմակերպության սեփական նկարագրությունները և ընդլայնումները պարունակող պրոյեկտ(ներ)ի սահմանման համար։
Ընդլայնող պրոյեկտ(ներ)ը անհրաժեշտ է ստեղծել, կարգավորել (տե՛ս), կառուցել dll-(ներ)ը, ապա dll-(ներ)ը տեղադրել սերվիսի ֆայլերի մոտ` ենթաթղթապանակում։
"Extensions": [
{
"Name": "Organisation Specific Definitions project",
"Location": "Organisation-DLLs",
"MainAssembly": "Organisation.Specific.Definitions.dll",
"Assemblies": [
"Security.Authentication.dll",
"Seq.Api.dll"
]
}
],
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Name | string | Ոչ պարտադիր | MainAssembly | Ցուցադրվող անուն (մասնավորապես լոգերում)։ Փոխանցված չլինելու դեպքում օգտագործվում է MainAssembly-ն։ |
| Location | string | Պարտադիր | - | Ընդլայնումների dll-ի հարաբերական ճանապարհը սերվիսի թղթապանակի նկատմամբ, կամ ամբողջական ճանապարհը։ Օրինակ՝ եթե ընդլայնումների dll-ը տեղադրվել է սերվիսի թղթապանակի «Organisation-DLLs» անունով ենթաթղթապանակում, ապա Location-ի արժեքը պետք է լինի "Organisation-DLLs"։ Համակարգի տարբերակը փոխելուց անհրաժեշտ է ընդլայնող պրոյեկտը կրկին կառուցել և ստացված dll-ով փոխարինել հինը։ |
| MainAssembly | string | Պարտադիր | - | Ընդլայնումների dll-ի անունը, որը պետք է տեղակայված լինի Location-ում նշված հասցեում։ Օրինակ՝ “Organisation.Specific.Definitions.dll”։ |
| Assemblies | string[] | Ոչ պարտադիր | dll-ների անունների զանգված, որոնք անհրաժեշտ են MainAssembly-ում նշված dll-ին աշխատանքի համար։ dll-ները պետք է տեղակայված լինեն Location-ում նշված հասցեում։ |
Hangfire
Hangfire-ը գրադարան է, որը նախատեսված է background job-երի հերթի դրման և կատարման մեխանիզմը ապահովելու համար։
"IsHangfireServer": false
"Hangfire": {
"server": "TEST-SERVER",
"database": "test_db",
"login": "test-user",
"password": "test-password",
"workerCount": 10,
"expirationInDays": 1
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| IsHangfireServer | bool | Ոչ պարտադիր | false | Hangfire Server-ի միացման հայտանիշ։ |
| server | string | Պարտադիր | - | Սերվերի անունը, որտեղ գտնվում է Hangfire-ի տվյալների բազան։ |
| database | string | Պարտադիր | - | Տվյալների բազայի անունը, որը օգտագործում է Hangfire-ը։ |
| login | string | Պարտադիր | - | Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող մուտքանունը։ |
| password | string | Պարտադիր | - | Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող գաղտնաբառը։ |
| workerCount | int | Ոչ պարտադիր | Environment.ProcessorCount * 5 | Ֆոնային աշխատող պրոցեսների քանակը, որոնք Hangfire-ը պետք է օգտագործի առաջադրանքները մշակելու համար։ |
| expirationInDays | int | Ոչ պարտադիր | 1 | Նշում է օրերի քանակը, որից հետո մշակված առաջադրանքները կհամարվեն ժամկետանց և կջնջվեն տվյալների բազայից։ |
JwtConfig
8X սերվիսում ծրագրային նույնականացվելուց սերվիսը տրամադրվում է JWT Token, որը օգտագործվում է API կանչերի ժամանակ նույնականությունը ստուգելու համար: Այս բաժնում սահմանված են JWT Token-ի կարգավորումները։
"JwtConfig": {
"secret": "7V{)Grmn0/12cx^TY<gnl.568",
"issuer": "test_db",
"expirationInMinutes": 1440,
"refreshExpirationInMinutes": 43200
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| secret | string | Պարտադիր | - | JWT Token-ի վավերականացման ու ստորագրման համար նախատեսված բանալի։ Առավելագույն երկարությունը 32 է (երկարության գերազանցման դեպքում հաշվի են առնվում միայն առաջին 32 սիմվոլները): |
| issuer | string | Պարտադիր | - | Token-ը թողարկող տվյալների բազայի անունը: |
| expirationInMinutes | int | Պարտադիր | - | JWT Token-ի վավերականության տևողությունը րոպեներով: |
| refreshExpirationInMinutes | int | Ոչ պարտադիր | 43200 | Թարմացման Token-ի վավերականության տևողությունը րոպեներով: Լռությամբ արժեքը 43200 րոպե է (1 ամիս): |
OTLP
Այս բաժինը նախատեսված է trace-ների և մետրիկաների կարգավորումների սահմանման համար։
"OTLP": {
"Metrics": {
"EnableDefaultInstrumentations": false,
"PeriodicExporting": {
"ExportIntervalMilliseconds": 10000,
"MaxExceptionLogCount": 5
},
"CachedItemsCountEnabled": false,
"CBMessagesEnabled": false
},
"Tracing": {
"EnableDefaultInstrumentations": false,
"SqlClientInstrumentation": {
"Enabled": false,
"AddSqlParameters": false
}
}
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Metrics | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է մետրիկաների կարգավորման համար: | |
| EnableDefaultInstrumentations | bool | Ոչ պարտադիր | false | Ծրագրի աշխատանքի ընթացքում եկած Api հարցումների մասին մետրիկաների հավաքագրման հայտանիշ: |
| PeriodicExporting | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է պարբերական մետրիկաների կարգավորման համար: | |
| ExportIntervalMilliseconds | int | Ոչ պարտադիր | 60000 | Պարբերական մետրիկաների արտահանման ինտերվալը միլիվայրկյաններով: |
| MaxExceptionLogCount | int | Ոչ պարտադիր | 5 | Մետրիկաները արտահանելիս առաջացող սխալների լոգավորման առավելագույն քանակը։ |
| CachedItemsCountEnabled | bool | Ոչ պարտադիր | false | Lite և RO Document տիպի օբյեկտների քանակի գրանցման հայտանիշ: |
| CBMessagesEnabled | bool | Ոչ պարտադիր | false | ԿԲ հաղորդագրությունների (CB_MESSAGES) մետրիկաների հավաքագրման և արտահանման հայտանիշ։ |
| Tracing | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է trace-ների կարգավորման համար: | |
| EnableDefaultInstrumentations | bool | Ոչ պարտադիր | false | Ծրագրի աշխատանքի ընթացքում եկած Api հարցումների մասին trace-ների հավաքագրման հայտանիշ: |
| SqlClientInstrumentation | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է Sql հարցումների համար trace-երի կարգավորման համար: | |
| Enabled | bool | Ոչ պարտադիր | false | Ծրագրի աշխատանքի ընթացքում կատարված Sql հարցումների համար trace-երի հավաքագրման հայտանիշ: |
| AddSqlParameters | bool | Ոչ պարտադիր | false | Sql հարցման պարամետրերի մասին ինֆորմացիան trace-երում ներառելու հայտանիշ: |
"OTLP": {
"Metrics": {
"EnableDefaultInstrumentations": false,
"PeriodicExporting": {
"ExportIntervalMilliseconds": 10000,
"MaxExceptionLogCount": 5
},
"CachedItemsCountEnabled": false,
},
"Tracing": {
"EnableDefaultInstrumentations": false,
"SqlClientInstrumentation": {
"Enabled": false,
"AddSqlParameters": false
}
}
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Metrics | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է մետրիկաների կարգավորման համար: | |
| EnableDefaultInstrumentations | bool | Ոչ պարտադիր | false | Ծրագրի աշխատանքի ընթացքում եկած Api հարցումների մասին մետրիկաների հավաքագրման հայտանիշ: |
| PeriodicExporting | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է պարբերական մետրիկաների կարգավորման համար: | |
| ExportIntervalMilliseconds | int | Ոչ պարտադիր | 60000 | Պարբերական մետրիկաների արտահանման ինտերվալը միլիվայրկյաններով: |
| MaxExceptionLogCount | int | Ոչ պարտադիր | 5 | Մետրիկաները արտահանելիս առաջացող սխալների լոգավորման առավելագույն քանակը։ |
| CachedItemsCountEnabled | bool | Ոչ պարտադիր | false | Lite և RO Document տիպի օբյեկտների քանակի գրանցման հայտանիշ: |
| Tracing | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է trace-ների կարգավորման համար: | |
| EnableDefaultInstrumentations | bool | Ոչ պարտադիր | false | Ծրագրի աշխատանքի ընթացքում եկած Api հարցումների մասին trace-ների հավաքագրման հայտանիշ: |
| SqlClientInstrumentation | object | Ոչ պարտադիր | Այս բաժինը նախատեսված է Sql հարցումների համար trace-երի կարգավորման համար: | |
| Enabled | bool | Ոչ պարտադիր | false | Ծրագրի աշխատանքի ընթացքում կատարված Sql հարցումների համար trace-երի հավաքագրման հայտանիշ: |
| AddSqlParameters | bool | Ոչ պարտադիր | false | Sql հարցման պարամետրերի մասին ինֆորմացիան trace-երում ներառելու հայտանիշ: |
RateLimiter
"RateLimiter": {
"Default": "Global",
"EnableActionAutoLimiting" : true,
"FixedWindow": [
{
"Name": "Policy1",
"Urls": [ "/api/Test/Test" ],
"PermitLimit": 10000,
"Window": 30
}
],
"SlidingWindow": [
{
"Name": "Policy2",
"Urls": [],
"PermitLimit": 10000,
"Window": 30,
"SegmentsPerWindow": 5
}
],
"Concurrency": [
{
"Name": "Policy3",
"Urls": [],
"PermitLimit": 50
}
],
"TokenBucket": [
{
"Name": "Global",
"TokenLimit": 100000,
"ReplenishmentPeriod": 5,
"TokensPerPeriod": 2000,
"QueueLimit": 0,
"QueueProcessingOrder": 0
}
]
}
Այս բաժինը նախատեսված է Rate Limiting-ի ալգորիթմի ընտրության և կարգավորման համար։
Այս բաժնում տրվել է հնարավորություն սահմանելու Rate Limiting-ի ալգորիթմի տարբեր կոնֆիգուրացիաներ` policy-ներ (տարբեր պարամետրերով) և դրանք կիրառել անհրաժեշտ api-ների համար՝ օգտագործելով EnableRateLimiting ատրիբուտը( ատրիբուտում նշելով սահմանված policy-ի անունը (Name)) կամ policy-ի Urls դաշտում նշելով api-ների հասցեները։
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Default | string | Ոչ պարտադիր | — | Գլոբալ policy-ի անունը (Name)։ Այն կիրառելի է դառնում բոլոր այն api-ների համար, որոնց համար նշված չէ DisableRateLimiting ատրիբուտը կամ EnableRateLimiting ատրիբուտը՝ անհրաժեշտ policy-ի անունով։ |
| EnableActionAutoLimiting | bool | Ոչ պարտադիր | false |
Սատարվող Rate Limiting-ի ալգորիթմներ
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| FixedWindow | array | Ոչ պարտադիր | — | Սահմանում է Fixed Window տիպի Policy-ների ցուցակը։ |
| Name | string | Պարտադիր | — | Policy-ի անունը։ |
| PermitLimit | int | Պարտադիր | — | Թույլատրված հարցումների առավելագույն քանակը մեկ պատուհանի ընթացքում։ |
| Window | int (վայրկյան) | Պարտադիր | — | Ժամանակային պատուհանի տևողությունը վայրկյաններով։ |
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| SlidingWindow | array | Ոչ պարտադիր | — | Սահմանում է Sliding Window տիպի Policy-ների ցուցակը։ |
| Name | string | Պարտադիր | — | Policy-ի անունը։ |
| PermitLimit | int | Պարտադիր | — | Թույլատրված հարցումների առավելագույն քանակը պատուհանի ընթացքում։ |
| Window | int (վայրկյան) | Պարտադիր | — | Ժամանակային պատուհանի ընդհանուր տևողությունը։ |
| SegmentsPerWindow | int | Պարտադիր | — | Ժամանակային պատուհանի բաժանումների քանակը։ |
- Concurrency
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Concurrency | array | Ոչ պարտադիր | — | Սահմանում է Concurrency տիպի Policy-ների ցուցակը։ |
| Name | string | Պարտադիր | — | Policy-ի անունը։ |
| PermitLimit | int | Պարտադիր | — | Թույլատրված միաժամանակյա հարցումների առավելագույն քանակը։ |
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| TokenBucket | array | Պարտադիր | — | հմանում է Token Bucket տիպի Policy-ների ցուցակը։ |
| Name | string | Պարտադիր | — | Policy-ի անունը։ |
| TokenLimit | int | Պարտադիր | — | Թույլատրելի token-ների առավելագույն քանակը bucket-ում։ |
| ReplenishmentPeriod | int (վայրկյան) | Պարտադիր | — | Ժամանակային միջակայքը, որի ընթացքում bucket-ը համալրվում է նոր token-ներով։ |
| TokensPerPeriod | int | Պարտադիր | — | Քանի token պետք է ավելացվի յուրաքանչյուր լրացման շրջանի ընթացքում։ |
| QueueLimit | int | Ոչ պարտադիր | 0 | Սպասման հերթի առավելագույն երկարությունը։ |
| QueueProcessingOrder | int | Ոչ պարտադիր | 0 | Սպասման հերթի մշակման կարգը (0՝ FIFO, 1՝ LIFO)։ |
Օրինակ
"RateLimiter": {
"TokenBucket": [
{
"Name": "DSExecute",
"TokenLimit": 100000,
"ReplenishmentPeriod": 5,
"TokensPerPeriod": 2000
}
]
}
[HttpPost("{name}")]
[EnableRateLimiting("DSExecute")]
public async Task<JsonResult> Execute(string name,
[FromBody] JsonElement request,
[FromServices] IServiceProvider serviceProvider)
կամ
"RateLimiter": {
"TokenBucket": [
{
"Name": "DSExecute",
"TokenLimit": 100000,
"ReplenishmentPeriod": 5,
"TokensPerPeriod": 2000,
"Urls": [ "/api/DS/{name}" ],
}
]
}
redisCachingSettings
Redis-ը նախատեսված է տվյալների քեշավորման և արագ բեռնման համար։ Այս բաժնում սահմանված են Redis-ի կարգավորումները։
"redisCachingSettings": {
"enabled": false,
"connectionString": "dockerub1:6379,password=mypassword"
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| enabled | bool | Ոչ պարտադիր | Redis-ով տվյալների քեշավորման միացման հայտանիշ։ Չլրացնելու դեպքում արժեքը համարվում է true, եթե լրացված է connectionString դաշտը, հակառակ դեպքում՝ false: |
|
| connectionString | string | Պարտադիր | - | Redis սերվերին միացման Connection string-ը։ Տե՛ս Redis Connection Strings: |
redisCachedItems
Այս բաժինը նախատեսված է Redis սերվերում պահվող առանձին տվյալներ և պահպանման տևողությունը կարգավորելու համար։
Այն ընդլայնելի է և առաձին պրոյեկտներում կարող է ավելի շատ լինել։
Օրինակ ՀԾ-Բանկի սերվիսը տալիս է OLAP կարգավորումների քեշավորման պարամետրերը։
8X հարթակում նվազագույնը առկա են հետևյալ կարգավորումները փաստաթղթի մետատվյալները, պարամետրերը և մոնիտորինգի համար անհրաժեշտ տվյալները քեշավորելու համար։
“redisCachedItems” բաժնի դաշտերը կիրառելի են redisCachingSettings:enabled հայտանիշի true արժեքի դեպքում։
"redisCachedItems": {
"documentMetadata": {
"enabled": true,
"lifetime": "1.00:00:00"
},
"monitoring": {
"enabled": true,
"lifetime": "0.00:01:00"
},
"parameters": {
"enabled": true,
"lifetime": "1.00:00:00"
}
}
Յուրաքանչյուր բաժին պարունակում է երկու պարամետր՝ | Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն | | — | — | — | — | — | | enabled | bool | Ոչ պարտադիր | false | Թույլատրված է քեշավորումը Redis-ում, թե ոչ: | | lifetime | string | Ոչ պարտադիր | 1.00:00:00 (1 օր) | Քեշի պահպանման տևողությունը Redis-ում: |
Serilog
8X սերվիսում լոգերի հավաքագրման համար օգտագործվում է Serilog գրադարանը։ appsettings.json-ում կարգավորումների ձևը որոշվում է Serilog գրադարանի կողմից։
Լոգավորումը հնարավոր է կարգավորել այնպես, որ լոգը գրանցվի Console-ում, ֆայլում կամ Seq սերվերում։ Հնարավոր է կարգավորել, որ միաժամանակ մի քանի աղբյուրում կատարվի լոգի գրանցում` այդ թվում կիրառելով որոշակի ֆիլտր։
Տե՛ս նաև
MinimumLevel-ի կարգավորում
Այստեղ կարգավորվում է լոգի պահպանման մակարդակը (Information, Warning, Error, Debug, Trace)։
Օրինակ՝
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.AspNetCore": "Warning",
"Serilog.AspNetCore": "Warning"
}
}
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| MinimumLevel:Default | string | Ոչ պարտադիր | “Information” | Կարգավորում է լոգի պահպանման մակարդակը (Information, Warning, Error, Debug, Trace) ընդհանուր դեպքում։ |
| MinimumLevel:Override | object | Ոչ պարտադիր | Կարգավորում է լոգի պահպանման մակարդակը առանձին աղբյուրների համար։ |
Լոգի գրանցում ֆայլում
Ֆայլում գրանցումը ապահովելու համար անհրաժեշտ է Serilog բաժնի WriteTo ենթաբաժնում ավելացնել դրան հատուկ պարամետրերը։
"Serilog": {
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/log.json",
"rollingInterval": "Day",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
]
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Name | string | Պարտադիր | - | Գրելով File նշում են, որ լոգավորումը կատարվում է ֆայլում։ |
| Args | object | Ոչ պարտադիր | Գրանցման ֆայլի կարգավորումները։ | |
| path | string | Պարտադիր | - | Ֆայլի հարաբերական ճանապարհը appsettings.json ֆայլի նկատմամբ։ |
| rollingInterval | string | Ոչ պարտադիր | Day | Լոգերի գրանցման համար անհրաժեշտ նոր ֆայլի ստեղծման հաճախականությունը։ Այս օրինակում նշված է Day, որ նշանակում է, որ ամեն օրվա լոգերի համար ստեղծվում է նոր ֆայլ։ |
| formatter | string | Ոչ պարտադիր | TXT | Լոգերի գրանցման ֆորմատը (JSON, XAML, …): Լռությամբ ֆորմատը TXT է։ Օրինակում նշված արժեքը առավել հարմար է լոգերի հետ հետագա աշխատանքի համար։ |
Լոգի գրանցում Seq սերվերում
Seq սերվերում գրանցումը ապահովելու համար անհրաժեշտ է Serilog բաժնի WriteTo ենթաբաժնում ավելացնել դրան հատուկ պարամետրերը։
"Serilog": {
"WriteTo": [
{
"Name": "Seq",
"Args": {
"serverUrl": "http://95.140.203.18:8443",
"bufferBaseFilename": "./logs/buffer"
}
}
]
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Name | string | Պարտադիր | - | Գրելով Seq նշում են, որ լոգավորումը կատարվում է Seq սերվերում։ |
| Args | object | Ոչ պարտադիր | Գրանցման Seq-ի կարգավորումները։ | |
| serverUrl | string | Պարտադիր | - | Seq-ի սերվերի հասցեն։ |
| bufferBaseFilename | string | Ոչ պարտադիր | Սերվերի անհասանելի լինելու դեպքում լոգերի գրանցման համար անհրաժեշտ ֆայլի հարաբերական ճանապարհը appsettings.json ֆայլի նկատմամբ։ Սերվերը հասանելի դառնալուն պես ֆայլում գրանցված լոգերը գրանցվում են Seq-ում։ |
Լոգի ֆիլտրում
Լոգը կարելի գրանցել կիրառելով որոշ ֆիլտրեր։ Ստորև օրինակում ֆիլտրվում է ըստ լոգի ConnectedService դաշտի ‘ArCaP2P’ արժեքի և լոգավորումը պահպանում է ArCaP2P_XXXXXXXX.json անունով ֆայլում (XXXXXXXX-ի փոխարեն գրված ամսաթիվ):
"Serilog": {
"WriteTo": [
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@p['ConnectedService'] = 'ArCaP2P'"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/ArCaP2P_.json",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "1000000"
}
}
]
}
}
}
]
}
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն | | — | — | — | — | — | | Name | string | Պարտադիր | - | Նշում է որ բարդ լոգ է։ | | Filter | array | Ոչ պարտադիր | | Կարգավորում է ֆիլտրը։ Տե՛ս նաև Serilog Expressions։ |
Մի քանի լոգերի կիրառում
Ստորև օրինակում կարգավորված են վերևի երեք լոգերը միաժամանակ։
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.AspNetCore": "Warning",
"Serilog.AspNetCore": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/log.json",
"rollingInterval": "Day",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
},
{
"Name": "Seq",
"Args": {
"serverUrl": "http://95.140.203.18:8443",
"bufferBaseFilename": "./logs/buffer"
}
},
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@p['ConnectedService'] = 'ArCaP2P'"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/ArCaP2P_.json",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "1000000"
}
}
]
}
}
}
]
}
Service
"Service": {
"Id": "ServiceId"
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| Id | string | Ոչ պարտադիր | 8x սերվիսի ներքին նույնականացման համարը (id): |
Storage
Սահմանում է ծրագրի աշխատանքի ընթացքում ստեղծվող ֆայլերի (Text reports, տպելու ձևանմուշներից առաջացած ֆայլեր, կամ այլ ֆայլեր) լոկալ պահպանման կարգավորումները։
"Storage": {
"BaseUri": "http://localhost:1026/",
"Directory": "C:\\Storage\\Files\\",
"Permanent": {
"Directory": "C:\\Storage\\PermanentFiles\\"
}
}
Պարամետրեր
| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն |
|---|---|---|---|---|
| BaseUri | string | Ոչ պարտադիր | Սերվիսի հասցեն, որն օգտագործվում է ֆայլերի ծրագրային բեռնման կամ վերբեռնման դեպքում URL-ների ձևավորման համար: | |
| Directory | string | Պարտադիր | - | Ստեղծվող ժամանակավոր ֆայլերի պահպանման հիմնական թղթապանակի ճանապարհը։ |
| Permanent | object | Ոչ պարտադիր | Այս ենթաբաժինը նախատեսված է ստեղծվող մշտական ֆայլերի կարգավորման համար։ | |
| Directory | string | Ոչ պարտադիր | Ստեղծվող մշտական ֆայլերի պահպանման հիմնական թղթապանակի ճանապարհը։ |