Csomagok, metapackák és platformok, microsoft docs

Ebben a cikkben

NET Core egy NuGet csomagból álló platform. A termék egyes jellemzői esetében a modulok kis méretű felismerése jobban megfelel, és mások számára - nagy modul. Ezt a dualitást figyelembe véve a termék egy kis modul csomagkészlet formájában kerül elosztásra, és ezt követően nagyobb csomagokként írja le, csomagtípusként, informálisan "metapackok" néven.







Minden .NET Core csomag támogatja a különböző platformok által képviselt .NET implementációk végrehajtását. Néhányuk hagyományos platform, például a net46 csomag a .NET-keretrendszert képviseli. Egy másik készlet egy új platform, amelyet el lehet képzelni "csomag alapú platformként". Ezek egy új modellt alkotnak a platformok meghatározásához. A csomag alapú platformok teljesen kialakulnak és csomagokként definiáltak, ezáltal szoros kapcsolatot teremtve a csomagok és a platformok között.

A .NET Core platform olyan csomagokkészletre tagolódik, amelyek primitív típusokat, magasabb szintű adattípusokat, összetett alkalmazástípusokat és közös segédprogramokat biztosítanak. Mindegyik csomag egy különálló, azonos nevű egységet alkot. A System.Runtime például tartalmazza a System.Runtime.dll összeszerelést.

A csomagok kis méretű modulja számos előnnyel rendelkezik:

  • A kis modul csomagokat saját ütemezésük alapján lehet kibocsátani; A többi csomag tesztelésének szükségessége viszonylag kicsi.
  • A kis modul csomagok különböző OS és CPU támogatást nyújtanak.
  • A kis modul csomagok függvényei lehetnek, amelyek csak egy könyvtárra vonatkoznak.
  • Az alkalmazások kisebb méretűek, mivel a nem hivatkozott csomagok nem szerepelnek az alkalmazáselosztási csomagban.

Néhány ilyen előny csak bizonyos körülmények között valósul meg. Például a NET Core csomagok általában egyetlen ütemezésben kerülnek kiadásra, ugyanazzal a platformokkal. Karbantartási célból a javításokat az egyes csomagok frissítéseként frissítheti és telepítheti. Annak a ténynek köszönhetően, hogy a javítást egy külön könyvtárra alkalmazzák, az ellenőrzés és a rendelkezésre bocsátás ideje csökken.

Az alábbiakban felsoroljuk a .NET Core fő NuGet csomagjainak listáját:

Meta csomagok

A metapackage egy megállapodás a NuGet-ben egy olyan csomagkészlet leírására, amely valamilyen módon kapcsolatban áll egymással. A csomagok meta csomagként való megjelenítéséhez a csomagok függővé válnak. A metapack egy platformot is meghatározhat egy csomagkészlet számára egy megfelelő platform meghatározásával.

A metapackek használata a következő előnyökkel jár:

  • lehetővé teszi a felhasználók számára, hogy könnyedén hivatkozzanak a kis méretű csomagokra;
  • lehetővé teszi a csomagok (beleértve a speciális verziókat is) meghatározását, amelyeket egyetlen egységként tesztelnek és alkalmaznak.

.NET Standard Metapacket:

  • NETStandard.Library - leírja a .NET Standard könyvtárait. Az összes .NET-implementációra vonatkozik (például .NET-keretrendszer .NET Core és Mono), amelyek támogatják a .NET-szabványt. A netstandard platformot alkotja.

Alapvető .NET Core metapackok:

  • A Microsoft.NETCore.App leírja azokat a könyvtárakat, amelyek szerepelnek a megosztott .NET Core csomagban. Formázza a .NETCoreApp platformot. Attól függ, hogy a meta-csomag NETStandard.Library.
  • A Microsoft.NETCore.Portable.Compatibility olyan kompatibilitási felületek, amelyek lehetővé teszik a hordozható osztálykönyvtárak végrehajtását a .NET Core mscorlib alapján.

infrastruktúra

A .NET Core csomagok egy futásidejű platformot támogatnak. A platform leír egy rendelkezésre álló API-t (és esetleg más jellemzőket), amelyek megoldást nyújthatnak a platformra. A platformhoz új verziók vannak hozzárendelve új API-k hozzáadásakor.

Például a System.IO.FileSystem a következő platformokat támogatja:







  • .NETFramework, Version = 4.6;
  • .NETStandard, verzió = 1.3;
  • 6 Xamarin platformok (például xamarinios10).

Hasznos lenne összehasonlítani az első két ilyen platformot, mivel a platformok meghatározásának két különböző módját képviselik.

A .NETFramework, Version = 4.6 platform jelenti a rendelkezésre álló API-kat a .NET-keretrendszer 4.6-ban. Készíthet olyan könyvtárakat, amelyek a .NET Framework 4.6 referenciakészletekkel vannak összeolvasztva, majd azt a lib net46 mappában található NuGet csomagokban terjesztik. Ezt a mappát a .NET Framework 4.6 platformra szánt vagy kompatibilis alkalmazásokhoz használják. Így működnek a platformok hagyományosan.

A .NETStandard platform, a Version = 1.3, csomag alapú platform. A platformra szánt csomagokat platformok azonosítására és API-k létrehozására használja.

Csomagokon alapuló platformok

A platformok és a csomagok között kétirányú kommunikáció van. A platformok meghatározzák az adott platformra elérhető API-kat, például a netstandard1.3. A netstandard1.3 (vagy kompatibilis platformok, például netstandard1.0) csomagok meghatározzák a netstandard1.3 elérhető API-kat. Ez a meghatározás ciklikusan zártnak tűnhet, de nem így van. A platform API-ja csomagokon alapul, vagyis azokban meghatározott. A platform maga nem határozza meg az API-kat.

A kommunikáció második oldala a források kiválasztása. A csomagok több platformot is tartalmazhatnak. Ha van egy csomó csomag vagy metapacket tartalmazó kapcsolat, a platformnak meg kell határoznia, hogy melyik erőforrást választja, például net46 vagy netstandard1.3. Fontos kiválasztani a megfelelő erőforrást. Például a net46 erőforrás valószínűleg nem kompatibilis a .NET Framework 4.0 vagy a .NET Core 1.0 verzióval.

Csomagok, metapackák és platformok, microsoft docs

Ez a kapcsolat az alábbi ábrán látható. Az API felület célja a platform, és meghatározza azt. A platform egy eszköz kiválasztását szolgálja. Az eszköz API-t biztosít.

A .NET Core rendszer két fő platformot használ a csomagok alapján:

.NET Standard

A .NET Standard platform (a célplatform moniker: netstandard) a .NET-szabvány alapján definiált és létrehozott API-k. Különböző végrehajtási környezetekre szánt könyvtárakat célszerű erre a platformra irányítani. Ezek támogatottak lesznek a .NET-szabványokkal kompatibilis futási környezetben, mint például a .NET Core. NET Framework és Mono vagy Xamarin. Mindegyik futásidejű környezet támogatja a .NET szabványos verziókat, attól függően, hogy implementálják-e azokat az API-kat.

A netstandard platform implicit módon a NETstandard.Library metapacket jelenti. Például a következő MSBuild projektfájl azt jelzi, hogy a projekt a netstandard1.6 könyvtárhoz tartozik. amely a meta-csomag NETStandard.Library 1.6 verziójára utal.

De a platformban és a metapacket referenciákban a projektfájlban nem kell ugyanaz, és használhatja az elemet a projektfájlban, hogy meghatározza a platform verzióját, amely alacsonyabb, mint a meta csomag verziója. Például a következő projektfájl érvényes.

A netstandard1.3 és a NETStandard 1.6.0 verziójának egyidejű használata célzott. A könyvtári könyvtár furcsának tűnhet. Ez azonban érvényes használati szcenárió, mivel a metapackage támogatja a netstandard régebbi verzióit. Például a meta-csomag 1.6.0 verzióját választhatja, hogy szabványosítsa az összes olyan könyvtárat, amely a netstandard különböző verziói számára készült. Ezzel a megközelítéssel csak a NETStandard.Library 1.6.0-ot kell visszaállítania, de nem az előző verziókat.

A fordított (például a netstandard1.6-os célzás a NETstandard.Library 1.3.0 verzióval) nem engedélyezett. Nem lehetséges a platform egy adott verziójának célzása a metapackage egy korábbi verziójával, mivel egy ilyen metapackage nem nyújt erőforrásokat egy későbbi verzió platformjára. A metapacketverzió-ellenőrzési rendszer szerint a metapackek megfelelnek a platform legfrissebb verziójának. A verziókezelő rendszer miatt a NETstandard.Library első verziója 1.6.0, feltéve, hogy netstandard1.6 erőforrást tartalmaz. Az 1.3.0 verziót az előző példában használjuk, hogy konzisztensek legyenek egy másik fenti példával, bár tényleg nincs ilyen verzió.

.NET Core alkalmazás

A .NET Core Application Platform (TFM: netcoreapp) bemutatja azokat a csomagokat és társított API-kat, amelyek a .NET Core elosztási csomag és a konzolalkalmazás modell része. A .NET Core alkalmazásoknak ezt a platformot kell használniuk, mert a konzolalkalmazás modelljét célozzák meg, valamint olyan könyvtárakat is, amelyek csak a .NET Core-ben futnak. A platform használata esetén az alkalmazások és a könyvtárak csak a .NET Core szolgáltatásban futhatnak.

A Microsoft.NETCore.App metapacket a netcoreapp platformhoz használják. Hozzáférést biztosít a NETStandard.Library által biztosított mintegy 40 könyvtárhoz. és mintegy 20 további könyvtárat (összesen mintegy 60 könyvtárt). A netcoreapp vagy kompatibilis platformokra tervezett kiegészítő könyvtárakra hivatkozhat, például a netstandardra. további API-k eléréséhez.

A Microsoft.NETCore.App által biztosított kiegészítő könyvtárak többsége. Netstandardhoz is tervezték. feltéve, hogy függőségüket más netstandard könyvtárak biztosítják. Ez azt jelenti, hogy a netstandard könyvtárak függőségekként is hivatkozhatnak ezekre a csomagokra.