Microsoft Fabric -taustan toteuttaminen
Tämä Microsoft Fabric -kuormituksen kehitysmallisäilö on lähtökohta sovellusten rakentamiselle, jotka edellyttävät integrointia eri palveluihin ja integrointia Lakehouse-arkkitehtuuriin. Tässä artikkelissa opastetaan ympäristön määrittämisessä ja tarvittavien osien määrittämisessä käytön aloittamiseksi. Artikkelissa esitellään keskeiset osat ja niiden roolit arkkitehtuurissa.
Edusta
Edustassa hallitaan käyttökokemusta (UX) ja toimintaa. Se kommunikoi Fabric-edustaportaalin kanssa iFramen kautta saumattoman vuorovaikutuksen helpottamiseksi.
Jos haluat lisätietoja, katso Microsoft Fabric Workload Development Kit -edusta.
Tausta
Taustatieto sisältää sekä tiedot että metatiedot. Se käyttää Luo-, Lue-, Päivitä- ja Poista (CRUD) -toimintoja kuormituskohteiden ja metatietojen luomiseen ja suorittaa töitä tietojen täyttämiseksi tallennustilassa. Edustan ja taustan välinen viestintä muodostetaan julkisten ohjelmointirajapintojen kautta.
Azure-releen ja DevGatewayn
Azure-välityspalvelu mahdollistaa viestinnän paikallisen kehitysympäristön ja Fabric-taustan välillä kehittäjätilassa. Kehittäjätilassa kuormitus toimii kehittäjän tietokoneessa.
DevGateway-apuohjelmalla on kaksi roolia:
- Se käsittelee kuormituksen puolen Azure Relay -kanavassa ja hallitsee kuormituksen paikallisen esiintymän rekisteröimistä Fabriciin tietyn työtilan kontekstissa. Apuohjelma käsittelee rekisteröinnin, kun kanava katkeaa.
- Se toimii Azure Relay to Channel -kuormituksen API-kutsujen kanssa Fabricista kuormitukseen.
Kuormituksenhallinnan ohjelmointirajapintakutsut tehdään suoraan kuormituksesta Fabriciin. Azure Relay -kanavaa ei tarvita kutsuissa.
Lakehouse-integrointi
Kuormituksen kehityspakettiarkkitehtuuri integroituu saumattomasti Lakehouse-arkkitehtuuriin esimerkiksi tallentamista, lukemista ja tietojen noutamista varten. Vuorovaikutusta helpotetaan Azure-releen ja Fabric SDK:n avulla suojatun ja todennetun viestinnän varmistamiseksi. Lisätietoja on kohdassa Asiakastietojen käsitteleminen.
Todentaminen ja suojaus
Microsoft Entra -tunnusta käytetään turvalliseen todentamiseen, mikä varmistaa, että kaikki arkkitehtuurin sisältämät vuorovaikutukset ovat valtuutettuja ja suojattuja.
Kehityspaketin yleiskatsaus tarjoaa katsauksen arkkitehtuuriimme. Lisätietoja projektien määrittämisestä, todentamisohjeista ja aloittamisesta on seuraavissa artikkeleissa:
Edusta muodostaa yhteyden Fabric-edustaportaaliin iFramen kautta. Portaali vuorostaan on vuorovaikutuksessa Fabric-taustan kanssa kutsumalla sen näkyviä julkisia ohjelmointirajapintoja.
Taustakehitysruudun ja Fabric-taustan välisessä vuorovaikutuksessa Azure-välitys toimii väylänä. Lisäksi taustakehityslaatikko integroituu saumattomasti Lakehouseen. Viestintää helpotetaan käyttämällä Azure Relayä ja SDK:ta (Fabric Software Development Kit), jotka on asennettu taustakehitysruutuun.
Kaikkien näiden osien tiedonsiirron todentaminen varmistetaan Microsoft Entran kautta. Microsoft Entra tarjoaa suojatun ja todennetun ympäristön edustan, taustan, Azure Relayn, Fabric SDK:n ja Lakehousen välisille vuorovaikutuksille.
Edellytykset
- .NET 7.0 SDK
- Visual Studio 2022
Varmista, että NuGet Package Manager on integroitu Visual Studion asennukseen. Tätä työkalua tarvitaan projektissamme olennaisten ulkoisten kirjastojen ja pakettien virtaviivaistettuun hallintaan.
NuGet-pakettien hallinta
<NuspecFile>Packages\manifest\ManifestPackageDebug.nuspec</NuspecFile>
ja<NuspecFile>Packages\manifest\ManifestPackageRelease.nuspec</NuspecFile>
: Nämä ominaisuudet määrittävät polun NuSpec-tiedostoihin, joita käytetään NuGet-paketin luomiseen Virheenkorjaus- ja Julkaisu-tiloja varten. NuSpec-tiedosto sisältää metatietoja paketista, kuten sen tunnuksen, version, riippuvuussuhteet ja muita olennaisia tietoja.<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
: Kun asetuksena ontrue
, tämä ominaisuus ohjaa koontiprosessin luomaan automaattisesti NuGet-paketin kunkin koontiversioon. Tämän ominaisuuden avulla voit varmistaa, että paketti on aina ajan tasalla projektin uusimpien muutosten kanssa.<IsPackable>true</IsPackable>
: Kun arvona ontrue
, tämä ominaisuus ilmaisee, että projekti voidaan pakata NuGet-pakettiin. Pakkaaminen on välttämätön ominaisuus projekteille, joiden on tarkoitus tuottaa NuGet-paketteja koontiprosessin aikana.
Luotu NuGet-paketti virheenkorjaustilaa varten sijaitsee src\bin\Debug-hakemistossa koontiprosessin jälkeen.
Kun työskentelet pilvipalvelutilassa, voit muuttaa Visual Studion koontimäärityksen julkaisu- ja koontiversioksi. Luotu paketti sijaitsee - src\bin\Release
hakemistossa. Lisätietoja on kohdassa Pilvitilassa työskentelyn opas.
Riippuvuudet
Taustan boilerplate-malli määräytyy seuraavien Azure SDK -pakettien mukaan:
- Azure.Core
- Azure.Identity
- Azure.Storage.Files.DataLake
- Microsoft Identity -paketti
Jos haluat määrittää NuGet Package Managerin, määritä polku Paketin lähteet -osassa ennen koontiprosessin aloittamista.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<BuildDependsOn>PreBuild</BuildDependsOn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<IsPackable>true</IsPackable>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<NuspecFile>Packages\manifest\ManifestPackageRelease.nuspec</NuspecFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<NuspecFile>Packages\manifest\ManifestPackageDebug.nuspec</NuspecFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Azure.Core" Version="1.38.0" />
<PackageReference Include="Azure.Identity" Version="1.11.0" />
<PackageReference Include="Azure.Storage.Files.DataLake" Version="12.14.0" />
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.9" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.5" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="Microsoft.Identity.Client" Version="4.60.3" />
<PackageReference Include="Microsoft.IdentityModel.Protocols" Version="6.30.1" />
<PackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="6.30.1" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.30.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\ServiceDependencies\" />
</ItemGroup>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\RemoveErrorFile.ps1 -outputDirectory ValidationScripts\" />
<Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\ManifestValidator.ps1 -inputDirectory .\Packages\manifest\ -inputXml WorkloadManifest.xml -inputXsd WorkloadDefinition.xsd -outputDirectory ValidationScripts\" />
<Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\ItemManifestValidator.ps1 -inputDirectory .\Packages\manifest\ -inputXsd ItemDefinition.xsd -outputDirectory ValidationScripts\" />
<Exec Command="powershell.exe -ExecutionPolicy Bypass -File ValidationScripts\ValidateNoDefaults.ps1 -outputDirectory ValidationScripts\" />
<Error Condition="Exists('ValidationScripts\ValidationErrors.txt')" Text="Validation errors with either manifests or default values" File="ValidationScripts\ValidationErrors.txt" />
</Target>
</Project>
Aloittaminen
Voit määrittää kuormitusmalliprojektin paikallisessa tietokoneessa seuraavasti:
Kloonaa säilö: Suorita
git clone https://github.com/microsoft/Microsoft-Fabric-workload-development-sample.git
.Avaa ratkaisu Visual Studio 2022:ssa.
Määritä sovelluksen rekisteröinti noudattamalla todentamisen opetusohjelmassa annettuja ohjeita. Varmista, että sekä edustaprojekteissa että taustaprojekteissa on artikkelin edellyttämä määritys. Microsoft Entran avulla varmistetaan suojatun todentamisen avulla, että kaikki arkkitehtuurin sisältämät vuorovaikutukset ovat valtuutettuja ja suojattuja.
Päivitä Microsoft OneLake DFS:n perus-URL-osoite. Fabric-ympäristöstäsi riippuen saatat pystyä päivittämään kohteen src\Constants-arvon
OneLakeDFSBaseURL
. Oletusarvo ononelake.dfs.fabric.microsoft.com
, mutta voit päivittää URL-osoitteen ympäristösi mukaiseksi. Lisätietoja DFS-poluista on OneLake-dokumentaatiossa.Määritä kuormituksen määritys.
- Kopioi workload-dev-mode.json kohteesta src/Config kohteeseen C:.
-
Päivitä workload-dev-mode.json-tiedostossa seuraavat kentät vastaamaan määritystäsi:
-
WorkspaceGuid: Työtilasi tunnus. Tämä arvo löytyy selaimen URL-osoitteesta, kun valitset työtilan Fabricissa. Esimerkki:
https://app.powerbi.com/groups/<WorkspaceID>/
. - ManifestPackageFilePath: Luettelotiedostopaketin sijainti. Kun luot ratkaisun, se tallentaa kokoonpanotiedostopaketin src \bin\Debugiin. Lisätietoja luettelopaketista annetaan jäljempänä artikkelissa.
- WorkloadEndpointURL: Kuormituksen päätepisteen URL-osoite.
-
WorkspaceGuid: Työtilasi tunnus. Tämä arvo löytyy selaimen URL-osoitteesta, kun valitset työtilan Fabricissa. Esimerkki:
-
Päivitä Packages/manifest/WorkloadManifest.xml-tiedostossa seuraavat kentät vastaamaan määritystäsi:
-
<AppId>
: Microsoft Entra -sovelluksen asiakastunnus (sovellustunnus). -
<RedirectUri>
: Uudelleenohjauksen URI-osoitteet. Löydät tämän arvon luomastasi sovelluksen rekisteröinnistä kohdasta Todentaminen. -
<ResourceId>
: Saapuvien Microsoft Entra -tunnusten yleisö. Löydät nämä tiedot luomastasi sovelluksen rekisteröinnistä kohdasta Ohjelmointirajapinnan paljastaminen.
-
-
Päivitä src/appsettings.json-tiedostossa seuraavat kentät vastaamaan määritystäsi:
- PublisherTenantId: Kuormituksen julkaisijan vuokraajan tunnus.
- Asiakastunnus: kuormituksen Microsoft Entra -sovelluksen asiakastunnus (sovellustunnus).
- ClientSecret: Microsoft Entra -sovelluksen kuormituksen salaisuus.
- Kohderyhmä: Saapuvien Microsoft Entra -tunnusten yleisö. Löydät nämä tiedot luomastasi sovelluksen rekisteröinnistä kohdasta Ohjelmointirajapinnan paljastaminen. Tätä asetusta kutsutaan myös sovellustunnuksen URI:ksi.
Luo luettelopaketti.
Jos haluat luoda kokoonpanopakettitiedoston, luo Fabric_Extension_BE_Boilerplate. Koontiversio on kolmivaiheinen prosessi, joka luo kokoonpanopakettitiedoston. Se suorittaa seuraavat vaiheet:
- Käynnistää ManifestValidator.ps1 on WorkloadManifest.xml in Packages\manifest/ ja käynnistää ItemManifestValidator.ps1:n kaikille kohteille XMLs (esimerkiksi Item1.xml) kohteessa Packages\manifest/. Jos vahvistus epäonnistuu, luodaan virhetiedosto. Voit tarkastella vahvistuskomentosarjoja kohdassa ValidationScripts/.
- Jos virhetiedosto on olemassa, koontiversio epäonnistuu ja virhevahvistusvirheet joko luetteloinnin tai oletusarvon kanssa. Jos haluat nähdä virhetiedoston Visual Studiossa, kaksoisnapsauta vahvistustuloksissa olevaa virhettä.
- Pakkaa vahvistuksen jälkeen WorkloadManifest.xml- ja Item1.xml-tiedostot ManifestPackage.1.0.0.nupkg-tiedostoon. Tuloksena saatava paketti on kohteessa src\bin\Debug.
Kopioi ManifestPackage.1.0.0.nupkg-tiedosto workload-dev-mode.json määritystiedostossa määritettyyn polkuun.
Program.cs on sovelluksen aloituskohta ja käynnistyskomentosarja. Tässä tiedostossa voit määrittää eri palveluja, alustaa sovelluksen ja käynnistää verkkoisännän.
Koontiversio, jolla varmistetaan, että projektisi voi käyttää kokoelman ja suorituksen vaadittuja riippuvuuksia.
Suorita Microsoft.Fabric.Workload.DevGateway.exe -sovellus ja kirjaudu sisään käyttäjällä, jolla on työtilan järjestelmänvalvojan oikeudet työtilaan, joka on määritetty
WorkspaceGuid
workload-dev-mode.json -kentässä.Todentamisen jälkeen ulkoiset kuormitukset luovat viestintää Fabric-taustayhteyden kanssa Azure-releen kautta. Tämä prosessi sisältää välityspalvelimen rekisteröinnin ja viestinnän hallinnan, joita määritetty välityspalvelinsolmu avustaa. Kuormituksen luettelotiedoston sisältävä paketti ladataan ja julkaistaan.
Tässä vaiheessa Fabric havaitsee kuormituksen ja käyttää sille varattua kapasiteettia.
Voit valvoa mahdollisia virheitä konsolissa.
Jos virheitä ei näytetä, yhteys muodostetaan, rekisteröinti suoritetaan onnistuneesti ja kuormituksen luettelo ladataan järjestelmällisesti.
Vaihda Visual Studiossa startup-projektisi Boilerplate-projektiksi ja valitse Suorita.
Boilerplate-malliprojektin käsitteleminen
Koodin luominen
Käytämme kuormitusta Boilerplate C# ASP.NET Core -mallia kuormituksen luomisen esittelyssä REST-ohjelmointirajapintojen avulla. Malli alkaa luodaan palvelimen nastat ja sopimusluokat kuormituksen API Swagger -määrityksen perusteella. Voit luoda koodin millä tahansa useilla Swagger-koodinmuodostamistyökaluilla. Boilerplate-malli käyttää NSwagia. Näyte sisältää GenerateServerStub.cmd komentorivin komentosarjan, joka rivittää NSwag-koodigeneraattorin. Komentosarja ottaa yhden parametrin, joka on täysi polku NSwag-asennushakemistoon. Se tarkistaa myös Swagger-määritystiedoston (swagger.json) ja -kansion määritystiedoston (nswag.json).
Suorittamalla tämän komentosarjan luot C#-tiedoston nimeltä WorkloadAPI_Generated.cs. Tämän tiedoston sisältö voidaan jakaa loogisesti kolmeen osaan, kuten seuraavissa osioissa selitetään.
ASP.NET Ydin-stub-ohjauskoneet
ItemLifecycleController
ja JobsController
luokat ovat ASP.NET Core Controller -toteutuksia, jotka koskevat kahta kuormituksen ohjelmointirajapinnan alijoukkoa: kohteen elinkaaren hallinta ja työt. Nämä luokat liitetään ASP.NET HTTP-ydinputkeen. Ne toimivat swagger-määrityksessä määritettyjen ohjelmointirajapintamenetelmien aloituspisteinä. Luokat siirtävät kutsut kuormituksen tarjoamaan "todelliseen" toteutukseen.
Tässä on esimerkki -menetelmästä CreateItem
:
/// <summary>
/// Called by Microsoft Fabric for creating a new item.
/// </summary>
/// <remarks>
/// Upon item creation Fabric performs some basic validations, creates the item with 'provisioning' state and calls this API to notify the workload. The workload is expected to perform required validations, store the item metadata, allocate required resources, and update the Fabric item metadata cache with item relations and ETag. To learn more see [Microsoft Fabric item update flow](https://updateflow).
/// <br/>
/// <br/>This API should accept [SubjectAndApp authentication](https://subjectandappauthentication).
/// <br/>
/// <br/>##Permissions
/// <br/>Permissions are checked by Microsoft Fabric.
/// </remarks>
/// <param name="workspaceId">The workspace ID.</param>
/// <param name="itemType">The item type.</param>
/// <param name="itemId">The item ID.</param>
/// <param name="createItemRequest">The item creation request.</param>
/// <returns>Successfully created.</returns>
[Microsoft.AspNetCore.Mvc.HttpPost, Microsoft.AspNetCore.Mvc.Route("workspaces/{workspaceId}/items/{itemType}/{itemId}")]
public System.Threading.Tasks.Task CreateItem(System.Guid workspaceId, string itemType, System.Guid itemId, [Microsoft.AspNetCore.Mvc.FromBody] CreateItemRequest createItemRequest)
{
return _implementation.CreateItemAsync(workspaceId, itemType, itemId, createItemRequest);
}
Kuormituksen toteutuksen käyttöliittymät
IItemLifecycleController
ja IJobsController
ovat liittymiä aiemmin mainituille "todellisille" toteutuksille. Ne määrittävät samat menetelmät, jotka rekisterinpitäjät toteuttavat.
Sopimusluokkien määritelmä
C#-sopimusluokat ovat luokkia, joita ohjelmointirajapinnat käyttävät.
Toteuttaminen
Koodin luonnin jälkeen seuraava vaihe on - ja IItemLifecycleController
-IJobsController
liittymien käyttöönotto. Toteuta nämä käyttöliittymät boilerplate-mallissa ItemLifecycleControllerImpl
JobsControllerImpl
.
Esimerkiksi tämä koodi on CreateItem-ohjelmointirajapinnan toteutus:
/// <inheritdoc/>
public async Task CreateItemAsync(Guid workspaceId, string itemType, Guid itemId, CreateItemRequest createItemRequest)
{
var authorizationContext = await _authenticationService.AuthenticateControlPlaneCall(_httpContextAccessor.HttpContext);
var item = _itemFactory.CreateItem(itemType, authorizationContext);
await item.Create(workspaceId, itemId, createItemRequest);
}
Kohteen hyötykuorman käsitteleminen
Useat ohjelmointirajapintamenetelmät hyväksyvät pyynnön leipätekstiin erilaisia "hyötykuormia", tai ne palauttavat hyötykuormat osana vastausta. Sisältää esimerkiksi CreateItemRequest
-ominaisuuden creationPayload
.
"CreateItemRequest": {
"description": "Create item request content.",
"type": "object",
"additionalProperties": false,
"required": [ "displayName" ],
"properties": {
"displayName": {
"description": "The item display name.",
"type": "string",
"readOnly": false
},
"description": {
"description": "The item description.",
"type": "string",
"readOnly": false
},
"creationPayload": {
"description": "Creation payload specific to the workload and item type, passed by the item editor or as Fabric Automation API parameter.",
"$ref": "#/definitions/CreateItemPayload",
"readOnly": false
}
}
}
Näiden hyötykuorman ominaisuuksien tyypit määritetään Swagger-määrityksessä. Jokaiselle hyötykuormalle on oma tyyppinsä. Nämä tyypit eivät määritä mitään tiettyjä ominaisuuksia, ja ne sallivat minkä tahansa ominaisuuden sisältymisen.
Tässä on esimerkki -tyypistä CreateItemPayload
:
"CreateItemPayload": {
"description": "Creation payload specific to the workload and item type.",
"type": "object",
"additionalProperties": true
}
Luodut C#-sopimusluokat on määritetty muodossa partial
. Niillä on sanasto, jonka ominaisuudet on määritetty.
Esimerkki:
/// <summary>
/// Creation payload specific to the workload and item type.
/// </summary>
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class CreateItemPayload
{
private System.Collections.Generic.IDictionary<string, object> _additionalProperties;
[Newtonsoft.Json.JsonExtensionData]
public System.Collections.Generic.IDictionary<string, object> AdditionalProperties
{
get { return _additionalProperties ?? (_additionalProperties = new System.Collections.Generic.Dictionary<string, object>()); }
set { _additionalProperties = value; }
}
}
Koodi voi käyttää tätä sanastoa ominaisuuksien lukemiseen ja palauttamiseen. Parempi tapa on kuitenkin määrittää tietyt ominaisuudet käyttämällä vastaavia tyyppejä ja nimiä. Voit määrittää ominaisuudet tehokkaasti käyttämällä partial
luotujen luokkien esittelyä.
Esimerkiksi CreateItemPayload.cs tiedosto sisältää luokan täydentävän määritelmän CreateItemPayload
.
Tässä esimerkissä määritys lisää -ominaisuuden Item1Metadata
:
namespace Fabric_Extension_BE_Boilerplate.Contracts.FabricAPI.Workload
{
/// <summary>
/// Extend the generated class by adding item-type-specific fields.
/// In this sample every type will have a dedicated property. Alternatively, polymorphic serialization could be used.
/// </summary>
public partial class CreateItemPayload
{
[Newtonsoft.Json.JsonProperty("item1Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public Item1Metadata Item1Metadata { get; init; }
}
}
Jos kuormitus kuitenkin tukee useita kohdetyyppejä, CreateItemPayload
luokan on pystyttävä käsittelemään erityyppisiä luontikuormituksia yhdellä kohdetyypillä. Sinulla on kaksi vaihtoehtoa. Yksinkertaisempaa on määrittää useita valinnaisia ominaisuuksia, joista kukin edustaa eri kohdetyypin luomisen hyötykuormaa. Jokaisella pyynnöllä on sitten vain yksi näistä ominaisuusjoukoista luotavan kohdetyypin mukaan. Vaihtoehtoisesti voit ottaa käyttöön polymorfisen sarjoituksen, mutta tätä asetusta ei näytetä näytteessä, koska asetus ei tarjoa merkittäviä etuja.
Jos esimerkiksi haluat tukea kahta kohdetyyppiä, luokan määritystä on laajennettava seuraavan esimerkin tavoin:
namespace Fabric_Extension_BE_Boilerplate.Contracts.FabricAPI.Workload
{
public partial class CreateItemPayload
{
[Newtonsoft.Json.JsonProperty("item1Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public Item1Metadata Item1Metadata { get; init; }
[Newtonsoft.Json.JsonProperty("item2Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public Item2Metadata Item2Metadata { get; init; }
}
}
Muistiinpano
Asiakas luo kuormitukseen lähetetyn hyötykuorman. Se voi olla kohdeeditori iFrame tai Fabric Automation REST -ohjelmointirajapinta. Asiakas on vastuussa oikean hyötykuorman lähettämisestä ja kohdetyypin vastaavuudesta. Kuormitus vastaa tarkistamisesta. Fabric käsittelee tätä tietokuormaa läpinäkymättömänä objektina ja siirtää sen vain asiakkaalta työmäärään. Vastaavasti kuormituksen asiakkaalle palauttaman hyötykuorman osalta on kuormituksen vastuu ja asiakkaan vastuulla käsitellä tiedot oikein.
Esimerkiksi tämä koodi näyttää, miten Boilerplate-mallikohteen1 toteutus käsittelee tiedot:
protected override void SetDefinition(CreateItemPayload payload)
{
if (payload == null)
{
Logger.LogInformation("No payload is provided for {0}, objectId={1}", ItemType, ItemObjectId);
_metadata = Item1Metadata.Default.Clone();
return;
}
if (payload.Item1Metadata == null)
{
throw new InvalidItemPayloadException(ItemType, ItemObjectId);
}
if (payload.Item1Metadata.Lakehouse == null)
{
throw new InvalidItemPayloadException(ItemType, ItemObjectId)
.WithDetail(ErrorCodes.ItemPayload.MissingLakehouseReference, "Missing Lakehouse reference");
}
_metadata = payload.Item1Metadata.Clone();
}
Vianmääritys ja virheenkorjaus
Seuraavissa osioissa kuvataan käyttöönoton vianmääritys ja virheenkorjaus.
Tunnetut ongelmat ja ratkaisut
Hanki tietoja tunnetuista ongelmista ja niiden ratkaisemiseen liittyvistä tavoista.
Puuttuva asiakassalaisuus
Virhe:
Microsoft.Identity.Client.MsalServiceException: Määritysongelma estää todentamisen. Saat lisätietoja tarkistamalla virhesanoman palvelimelta. Voit muokata määritystä sovelluksen rekisteröintiportaalissa. Katso https://aka.ms/msal-net-invalid-client
lisätietoja kohdasta .
Alkuperäinen poikkeus: AAD STS7000215: annettiin virheellinen asiakassalaisuus. Varmista, että pyynnössä lähetettävä salasana on asiakassalaisuuden arvo eikä asiakassalaisuuden tunnus, joka lisätään sovelluksen app_guid
asetukseen.
Ratkaisu: Varmista, että appsettings.json on määritetty oikea asiakassalaisuus.
Virhe kohteen luonnin aikana järjestelmänvalvojan puuttuvan suostumuksen vuoksi
Virhe:
Microsoft.Identity.Client.MsalUiRequiredException: AAD STS65001: Käyttäjä tai järjestelmänvalvoja ei suostunut käyttämään sovellusta tunnuksella <example ID>
. Lähetä vuorovaikutteinen valtuutuspyyntö tälle käyttäjälle ja resurssille.
Ratkaisu:
Siirry kohdeeditorissa kipujen alareunaan ja valitse Siirry todennussivulle.
Kirjoita Vaikutusalueet-kohtaan .default ja valitse sitten Hanki käyttöoikeustietue.
Hyväksy tarkistus valintaikkunassa.
Kohteen luonti epäonnistuu kapasiteetin valinnan vuoksi
Virhe:
Prioriteetin paikka: Prioriteetin sijainnille ei ole ydinpalveluita. Vain name
, guid
ja workload-name
ovat käytettävissä.
Ratkaisu:
Käyttäjänä sinulla voi olla pääsy vain kokeiluversion kapasiteettiin. Varmista, että käytät kapasiteettia, johon sinulla on käyttöoikeus.
Tiedoston luontivirhe, jossa virhe on 404 (NotFound).
Virhe:
Uuden tiedoston luominen epäonnistui tiedostolle filePath: 'workspace-id'/'lakehouse-id'/Files/data.json. Vastauksen tilakoodi ei ilmaise onnistumista: 404 (NotFound).
Ratkaisu:
Varmista, että käytät Ympäristöösi sopivaa OneLake DFS -URL-osoitetta. Jos esimerkiksi käsittelet PPE-ympäristöä, muuta EnvironmentConstants.OneLakeDFSBaseUrl
Constants.cs asianmukaiseen URL-osoitteeseen.
Virheenkorjaus
Kun teet eri toimintojen vianmäärityksen, voit määrittää koodin keskeytyskohtia käyttäytymisen analysoimiseksi ja virheenkorjaukseksi. Noudata seuraavia vaiheita tehokkaan virheenkorjauksen osalta:
- Avaa koodi kehitysympäristössäsi.
- Siirry asianmukaiseen toiminnonkäsittelijän funktioon (esimerkiksi
OnCreateFabricItemAsync
CRUD-toiminnoille tai päätepisteeseen lennonjohtajassa toimintoja vartenexecute
). - Aseta keskeytyskohdat tietyille riveille, joilla haluat tarkastaa koodin.
- Suorita sovellus virheenkorjaustilassa.
- Käynnistä toiminto sen edustan alusta, jonka virheenkorjaus halutaan tehdä.
Virheenkorjaus keskeyttää suorittamisen määritetyissä keskeytyspisteissä, jotta voit tarkastella muuttujia ja suorittaa koodin läpi sekä tunnistaa ongelmia.
Työtila
Jos olet muodostamassa taustaa mallikuormitusprojektiin, kohteesi on kuuluttava kapasiteettiin liittyvään työtilaan. Oletusarvoisesti Oma työtila -työtilaa ei ole liitetty kapasiteettiin. Muussa tapauksessa saatat saada seuraavassa näyttökuvassa näkyvän virheen:
Vaihda nimettyun työtilaan. Jätä työtilan oletusnimeksi Oma työtila.
Lataa mallikuormitus oikeasta työtilasta ja jatka testeillä:
Osallistu
Suhtaudumme myönteisesti tähän projektiin osallistumiseen. Jos löydät ongelmia tai haluat lisätä uusia ominaisuuksia, toimi seuraavasti:
- Haaroja säilöön.
- Luo uusi haara ominaisuuttasi tai virheenkorjausta varten.
- Tee tarvittavat muutokset ja vahvista ne.
- Siirrä tekemäsi muutokset haarautumaan säilöön.
- Luo pull-pyyntö, joka sisältää selkeän kuvauksen muutoksistasi.