Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Készítette: Rick Anderson
Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)
Az alkalmazásrész egy alkalmazás erőforrásainak absztrakciója. Az alkalmazásrészek lehetővé teszik, hogy az ASP.NET Core felderítse a vezérlőket, a nézetösszetevőket, a címkesegítőket, a Razor oldalakat, a Razor fordítási forrásokat és más elemeket.
AssemblyPart egy alkalmazásrész.
AssemblyPart beágyaz egy összeállítási hivatkozást, és kiteszi a típusokat és fordítási referenciákat.
Funkciószolgáltatók alkalmazásrészekkel töltik fel egy ASP.NET Core alkalmazás funkcióit. Az alkalmazásrészek fő felhasználási esete, hogy egy alkalmazás konfigurálja, hogy felderítse (vagy elkerülje a betöltést) ASP.NET Core-funkciókat egy szerelvényből. Előfordulhat például, hogy közös funkciókat szeretne megosztani több alkalmazás között. Az alkalmazásrészek használatával több alkalmazással megoszthat egy Assembly-t (DLL-t), amely vezérlőket, nézeteket, Razor oldalakat, Razor fordítási forrásokat, címkesegítőket és egyebeket tartalmaz. A szerelvény megosztását előnyben részesíti a kód több projektben történő duplikálása.
ASP.NET Core-alkalmazások betöltik a ApplicationPartfunkciókat. A AssemblyPart osztály egy szerelvény által biztosított alkalmazáskomponenst jelöl.
ASP.NET Core-funkciók betöltése
A Microsoft.AspNetCore.Mvc.ApplicationParts és AssemblyPart osztályokkal felderítheti és betöltheti ASP.NET Core-funkciókat (vezérlők, összetevők megtekintése stb.). A ApplicationPartManager nyomon követi az elérhető alkalmazásrészeket és szolgáltatásszolgáltatókat.
ApplicationPartManager a Startup.ConfigureServices-ben van konfigurálva:
// Requires using System.Reflection;
public void ConfigureServices(IServiceCollection services)
{
var assembly = typeof(MySharedController).Assembly;
services.AddControllersWithViews()
.AddApplicationPart(assembly)
.AddRazorRuntimeCompilation();
services.Configure<MvcRazorRuntimeCompilationOptions>(options =>
{ options.FileProviders.Add(new EmbeddedFileProvider(assembly)); });
}
Az alábbi kód alternatív módszert kínál a ApplicationPartManagerAssemblyParthasználatával történő konfigurálásához:
// Requires using System.Reflection;
// Requires using Microsoft.AspNetCore.Mvc.ApplicationParts;
public void ConfigureServices(IServiceCollection services)
{
var assembly = typeof(MySharedController).Assembly;
// This creates an AssemblyPart, but does not create any related parts for items such as views.
var part = new AssemblyPart(assembly);
services.AddControllersWithViews()
.ConfigureApplicationPartManager(apm => apm.ApplicationParts.Add(part));
}
Az előző két kódrészlet betölti a SharedController-t egy assemblyből. A SharedController nincs az alkalmazás projektjében. Tekintse meg a WebAppParts-megoldást mintaletöltést.
Nézetek belefoglalása
Egy Razor osztálytár használatával vegye fel a nézeteket a szerelvénybe.
Erőforrások betöltésének megakadályozása
Az alkalmazásrészek segítségével elkerülheti, erőforrások betöltése egy adott szerelvénybe vagy helyre. A Microsoft.AspNetCore.Mvc.ApplicationParts-gyűjtemény tagjainak hozzáadása vagy eltávolítása az erőforrások elrejtéséhez vagy elérhetővé tétele érdekében. A ApplicationParts gyűjtemény bejegyzéseinek sorrendje nem fontos. A ApplicationPartManager-t konfigurálja a tárolóban lévő szolgáltatások konfigurálása előtt. Konfigurálja például a ApplicationPartManager a AddControllersAsServicesmeghívása előtt. Erőforrás eltávolításához a Remove gyűjteményből hívja meg a ApplicationParts számot.
A ApplicationPartManager a következő alkatrészeket tartalmazza:
- Az alkalmazás szerelvénye és a függő szerelvények.
Microsoft.AspNetCore.Mvc.ApplicationParts.CompiledRazorAssemblyPartMicrosoft.AspNetCore.Mvc.Razor.RuntimeCompilation-
Microsoft.AspNetCore.Mvc.TagHelpers. -
Microsoft.AspNetCore.Mvc.Razor.
Szolgáltatásszolgáltatók
Az alkalmazásfunkció-szolgáltatók megvizsgálják az alkalmazásrészeket, és szolgáltatásokat nyújtanak ezekhez a részekhez. Az alábbi ASP.NET Core-funkciókhoz beépített szolgáltatásszolgáltatók tartoznak:
- ControllerFeatureProvider
- TagHelperFeatureProvider
- MetadataReferenceFeatureProvider
- ViewsFeatureProvider
-
internal classRazorCompiledItemFeatureProvider
A szolgáltatók a IApplicationFeatureProvider<TFeature>-t öröklik, ahol T a funkció típusa. A szolgáltatásszolgáltatók bármelyik korábban felsorolt funkciótípushoz implementálhatók. A ApplicationPartManager.FeatureProviders szolgáltatásszolgáltatók sorrendje befolyásolhatja a futási idő viselkedését. A későbbi hozzáadott szolgáltatók reagálhatnak a korábban hozzáadott szolgáltatók által végrehajtott műveletekre.
Elérhető funkciók megjelenítése
Egy alkalmazás számára elérhető funkciók felsorolhatók, ha egy
using AppPartsSample.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.AspNetCore.Mvc.Controllers;
using System.Linq;
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
using Microsoft.AspNetCore.Mvc.Razor.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewComponents;
namespace AppPartsSample.Controllers
{
public class FeaturesController : Controller
{
private readonly ApplicationPartManager _partManager;
public FeaturesController(ApplicationPartManager partManager)
{
_partManager = partManager;
}
public IActionResult Index()
{
var viewModel = new FeaturesViewModel();
var controllerFeature = new ControllerFeature();
_partManager.PopulateFeature(controllerFeature);
viewModel.Controllers = controllerFeature.Controllers.ToList();
var tagHelperFeature = new TagHelperFeature();
_partManager.PopulateFeature(tagHelperFeature);
viewModel.TagHelpers = tagHelperFeature.TagHelpers.ToList();
var viewComponentFeature = new ViewComponentFeature();
_partManager.PopulateFeature(viewComponentFeature);
viewModel.ViewComponents = viewComponentFeature.ViewComponents.ToList();
return View(viewModel);
}
}
}
A letöltési minta az előző kóddal jeleníti meg az alkalmazás funkcióit:
Controllers:
- FeaturesController
- HomeController
- HelloController
- GenericController`1
- GenericController`1
Tag Helpers:
- PrerenderTagHelper
- AnchorTagHelper
- CacheTagHelper
- DistributedCacheTagHelper
- EnvironmentTagHelper
- Additional Tag Helpers omitted for brevity.
View Components:
- SampleViewComponent
Felderítés az alkalmazásrészekben
A HTTP 404-hibák nem ritkák az alkalmazásrészek fejlesztésekor. Ezeket a hibákat általában az okozza, hogy hiányzik egy alapvető követelmény az alkalmazások részeinek felderítéséhez. Ha az alkalmazás HTTP 404-hibát ad vissza, ellenőrizze, hogy teljesültek-e a következő követelmények:
- A
applicationNamebeállítást a felderítéshez használt gyökérszerelvényre kell beállítani. A felderítéshez használt gyökérszerelvény normál esetben a belépési pont szerelvénye. - A gyökérszerelvénynek hivatkoznia kell a felderítéshez használt részekre. A hivatkozás lehet közvetlen vagy tranzitív.
- A gyökérszerelvénynek hivatkoznia kell a webes SDK-ra. A keretrendszer logikája attribútumokat bélyegez a felderítéshez használt gyökérszerelvénybe.
Készítette: Rick Anderson
Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)
Az alkalmazásrész egy alkalmazás erőforrásainak absztrakciója. Az alkalmazásrészek lehetővé teszik, hogy az ASP.NET Core felderítse a vezérlőket, a nézetösszetevőket, a címkesegítőket, a Razor oldalakat, a Razor fordítási forrásokat és más elemeket.
AssemblyPart egy alkalmazásrész.
AssemblyPart beágyaz egy összeállítási hivatkozást, és kiteszi a típusokat és fordítási referenciákat.
Funkciószolgáltatók alkalmazásrészekkel töltik fel egy ASP.NET Core alkalmazás funkcióit. Az alkalmazásrészek fő felhasználási esete, hogy egy alkalmazás konfigurálja, hogy felderítse (vagy elkerülje a betöltést) ASP.NET Core-funkciókat egy szerelvényből. Előfordulhat például, hogy közös funkciókat szeretne megosztani több alkalmazás között. Az alkalmazásrészek használatával több alkalmazással megoszthat egy Assembly-t (DLL-t), amely vezérlőket, nézeteket, Razor oldalakat, Razor fordítási forrásokat, címkesegítőket és egyebeket tartalmaz. A szerelvény megosztását előnyben részesíti a kód több projektben történő duplikálása.
ASP.NET Core-alkalmazások betöltik a ApplicationPartfunkciókat. A AssemblyPart osztály egy szerelvény által biztosított alkalmazáskomponenst jelöl.
ASP.NET Core-funkciók betöltése
A ApplicationPart és AssemblyPart osztályokkal felderítheti és betöltheti ASP.NET Core-funkciókat (vezérlők, összetevők megtekintése stb.). A ApplicationPartManager nyomon követi az elérhető alkalmazásrészeket és szolgáltatásszolgáltatókat.
ApplicationPartManager a Startup.ConfigureServices-ben van konfigurálva:
public void ConfigureServices(IServiceCollection services)
{
// Requires using System.Reflection;
var assembly = typeof(MySharedController).GetTypeInfo().Assembly;
services.AddMvc()
.AddApplicationPart(assembly)
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Az alábbi kód alternatív módszert kínál a ApplicationPartManagerAssemblyParthasználatával történő konfigurálásához:
public void ConfigureServices(IServiceCollection services)
{
// Requires using System.Reflection;
// Requires using Microsoft.AspNetCore.Mvc.ApplicationParts;
var assembly = typeof(MySharedController).GetTypeInfo().Assembly;
var part = new AssemblyPart(assembly);
services.AddMvc()
.ConfigureApplicationPartManager(apm => apm.ApplicationParts.Add(part))
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Az előző két kódrészlet betölti a SharedController-t egy assemblyből. A SharedController nincs az alkalmazás projektjében. Tekintse meg a WebAppParts-megoldást mintaletöltést.
Nézetek belefoglalása
Egy Razor osztálytár használatával vegye fel a nézeteket a szerelvénybe.
Erőforrások betöltésének megakadályozása
Az alkalmazásrészek segítségével elkerülheti, erőforrások betöltése egy adott szerelvénybe vagy helyre. A Microsoft.AspNetCore.Mvc.ApplicationParts-gyűjtemény tagjainak hozzáadása vagy eltávolítása az erőforrások elrejtéséhez vagy elérhetővé tétele érdekében. A ApplicationParts gyűjtemény bejegyzéseinek sorrendje nem fontos. A ApplicationPartManager-t konfigurálja a tárolóban lévő szolgáltatások konfigurálása előtt. Konfigurálja például a ApplicationPartManager a AddControllersAsServicesmeghívása előtt. Erőforrás eltávolításához a Remove gyűjteményből hívja meg a ApplicationParts számot.
Az alábbi kód Microsoft.AspNetCore.Mvc.ApplicationParts használatával távolít el MyDependentLibrary az alkalmazásból:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.ConfigureApplicationPartManager(apm =>
{
var dependentLibrary = apm.ApplicationParts
.FirstOrDefault(part => part.Name == "MyDependentLibrary");
if (dependentLibrary != null)
{
apm.ApplicationParts.Remove(dependentLibrary);
}
});
}
A ApplicationPartManager a következő alkatrészeket tartalmazza:
- Az alkalmazás szerelvénye és a függő szerelvények.
-
Microsoft.AspNetCore.Mvc.TagHelpers. -
Microsoft.AspNetCore.Mvc.Razor.
Alkalmazásfunkció-szolgáltatók
Az alkalmazásfunkció-szolgáltatók megvizsgálják az alkalmazásrészeket, és szolgáltatásokat nyújtanak ezekhez a részekhez. Az alábbi ASP.NET Core-funkciókhoz beépített szolgáltatásszolgáltatók tartoznak:
A szolgáltatók a IApplicationFeatureProvider<TFeature>-t öröklik, ahol T a funkció típusa. A szolgáltatásszolgáltatók bármelyik korábban felsorolt funkciótípushoz implementálhatók. A ApplicationPartManager.FeatureProviders szolgáltatásszolgáltatók sorrendje befolyásolhatja a futási idő viselkedését. A későbbi hozzáadott szolgáltatók reagálhatnak a korábban hozzáadott szolgáltatók által végrehajtott műveletekre.
Elérhető funkciók megjelenítése
Egy alkalmazás számára elérhető funkciók felsorolhatók, ha egy
using AppPartsSample.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.AspNetCore.Mvc.Controllers;
using System.Linq;
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
using Microsoft.AspNetCore.Mvc.Razor.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewComponents;
namespace AppPartsSample.Controllers
{
public class FeaturesController : Controller
{
private readonly ApplicationPartManager _partManager;
public FeaturesController(ApplicationPartManager partManager)
{
_partManager = partManager;
}
public IActionResult Index()
{
var viewModel = new FeaturesViewModel();
var controllerFeature = new ControllerFeature();
_partManager.PopulateFeature(controllerFeature);
viewModel.Controllers = controllerFeature.Controllers.ToList();
var tagHelperFeature = new TagHelperFeature();
_partManager.PopulateFeature(tagHelperFeature);
viewModel.TagHelpers = tagHelperFeature.TagHelpers.ToList();
var viewComponentFeature = new ViewComponentFeature();
_partManager.PopulateFeature(viewComponentFeature);
viewModel.ViewComponents = viewComponentFeature.ViewComponents.ToList();
return View(viewModel);
}
}
}
A letöltési minta az előző kóddal jeleníti meg az alkalmazás funkcióit:
Controllers:
- FeaturesController
- HomeController
- HelloController
- GenericController`1
- GenericController`1
Tag Helpers:
- PrerenderTagHelper
- AnchorTagHelper
- CacheTagHelper
- DistributedCacheTagHelper
- EnvironmentTagHelper
- Additional Tag Helpers omitted for brevity.
View Components:
- SampleViewComponent
Felderítés az alkalmazásrészekben
A HTTP 404-hibák nem ritkák az alkalmazásrészek fejlesztésekor. Ezeket a hibákat általában az okozza, hogy hiányzik egy alapvető követelmény az alkalmazások részeinek felderítéséhez. Ha az alkalmazás HTTP 404-hibát ad vissza, ellenőrizze, hogy teljesültek-e a következő követelmények:
- A
applicationNamebeállítást a felderítéshez használt gyökérszerelvényre kell beállítani. A felderítéshez használt gyökérszerelvény normál esetben a belépési pont szerelvénye. - A gyökérszerelvénynek hivatkoznia kell a felderítéshez használt részekre. A hivatkozás lehet közvetlen vagy tranzitív.
- A gyökérszerelvénynek hivatkoznia kell a webes SDK-ra.
- A ASP.NET Core-keretrendszer egyéni buildlogikával rendelkezik, amely attribútumokat bélyegez a felderítéshez használt gyökérszerelvénybe.