Szkolenie
Ścieżka szkoleniowa
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przepływ pracy może być wykonywany na trzy sposoby:
Hostowane w WorkflowServiceHost
Wykonane jako WorkflowApplication
Wykonywane bezpośrednio przy użyciu polecenia WorkflowInvoker
W zależności od opcji hostingu przepływu pracy można dodać uczestnika śledzącego za pośrednictwem kodu lub pliku konfiguracji. W tym temacie opisano sposób konfigurowania śledzenia przez dodanie uczestnika śledzenia do elementu WorkflowApplication i WorkflowServiceHost, oraz sposób włączania śledzenia podczas korzystania z WorkflowInvoker.
Przepływ pracy może być uruchamiany przy użyciu WorkflowApplication klasy . W tym temacie przedstawiono, jak skonfigurować śledzenie dla aplikacji przepływu pracy programu .NET Framework 4.6.1 przez dodanie uczestnika śledzenia do hosta przepływu pracy WorkflowApplication. W takim przypadku przepływ pracy jest uruchamiany jako aplikacja przepływu pracy. Aplikację przepływu pracy można skonfigurować za pomocą kodu (zamiast przy użyciu pliku konfiguracyjnego), który jest samohostowanym plikiem .exe przy użyciu klasy WorkflowApplication. Uczestnik śledzenia zostaje dodany jako rozszerzenie do wystąpienia WorkflowApplication. W tym celu należy dodać element TrackingParticipant do kolekcji rozszerzeń dla wystąpienia WorkflowApplication.
W przypadku aplikacji przepływu pracy można dodać rozszerzenie zachowania EtwTrackingParticipant, jak pokazano w poniższym kodzie.
LogActivity activity = new LogActivity();
WorkflowApplication instance = new WorkflowApplication(activity);
EtwTrackingParticipant trackingParticipant =
new EtwTrackingParticipant
{
TrackingProfile = new TrackingProfile
{
Name = "SampleTrackingProfile",
ActivityDefinitionId = "ProcessOrder",
Queries = new WorkflowInstanceQuery
{
States = { "*" }
}
}
};
instance.Extensions.Add(trackingParticipant);
Przepływ pracy można uwidocznić jako usługę WCF, gdy jest hostowany na WorkflowServiceHost hoście usługi. WorkflowServiceHost to wyspecjalizowana implementacja .NET ServiceHost dla usługi opartej na przepływie pracy. W tej sekcji wyjaśniono, jak skonfigurować śledzenie dla usługi przepływu pracy programu .NET Framework 4.6.1 uruchomionej w programie WorkflowServiceHost. Jest on konfigurowany za pomocą pliku Web.config (dla usługi hostowanej w sieci Web) lub pliku App.config (dla usługi hostowanej w aplikacji autonomicznej, takiej jak aplikacja konsolowa), określając zachowanie usługi lub za pomocą kodu przez dodanie zachowania specyficznego dla śledzenia do Behaviors kolekcji hosta usługi.
W przypadku usługi przepływu pracy hostowanej w WorkflowServiceHost, można dodać EtwTrackingParticipant za pomocą elementu <behavior
> w pliku konfiguracji, co ilustruje poniższy przykład.
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="Sample Tracking Profile" />
</behavior>
</serviceBehaviors>
</behaviors>
Alternatywnie, w przypadku usługi przepływu pracy hostowanej w WorkflowServiceHost, można dodać rozszerzenie EtwTrackingParticipant dotyczące zachowania za pomocą kodu. Aby dodać niestandardowego uczestnika śledzenia, utwórz nowe rozszerzenie zachowania i dodaj je do ServiceHost, jak pokazano w poniższym przykładowym kodzie.
Uwaga
Jeśli chcesz wyświetlić przykładowy kod pokazujący sposób tworzenia niestandardowego elementu zachowania, który dodaje niestandardowego uczestnika śledzenia, zapoznaj się z przykładami śledzenia .
ServiceHost svcHost = new ServiceHost(typeof(WorkflowService), new
Uri("http://localhost:8001/Sample"));
EtwTrackingBehavior trackingBehavior =
new EtwTrackingBehavior
{
ProfileName = "Sample Tracking Profile"
};
svcHost.Description.Behaviors.Add(trackingBehavior);
svcHost.Open();
Uczestnik śledzenia jest dodawany do hosta usługi przepływu pracy jako rozszerzenie zachowania.
Poniższy przykładowy kod pokazuje, jak odczytać profil śledzenia z pliku konfiguracji.
TrackingProfile GetProfile(string profileName, string displayName)
{
TrackingProfile trackingProfile = null;
TrackingSection trackingSection = (TrackingSection)WebConfigurationManager.GetSection("system.serviceModel/tracking");
if (trackingSection == null)
{
return null;
}
profileName ??= "";
//Find the profile with the specified profile name in the list of profile found in config
var match = from p in new List<TrackingProfile>(trackingSection.TrackingProfiles)
where (p.Name == profileName) && ((p.ActivityDefinitionId == displayName) || (p.ActivityDefinitionId == "*"))
select p;
if (match.Count() == 0)
{
//return an empty profile
trackingProfile = new TrackingProfile()
{
ActivityDefinitionId = displayName
};
}
else
{
trackingProfile = match.First();
}
return trackingProfile;
Ten przykładowy kod pokazuje, jak dodać profil śledzenia do hosta przepływu pracy.
WorkflowServiceHost workflowServiceHost = serviceHostBase as WorkflowServiceHost;
if (null != workflowServiceHost)
{
string workflowDisplayName = workflowServiceHost.Activity.DisplayName;
TrackingProfile trackingProfile = GetProfile(this.profileName, workflowDisplayName);
workflowServiceHost.WorkflowExtensions.Add(() => new EtwTrackingParticipant {
TrackingProfile = trackingProfile
});
}
Uwaga
Aby uzyskać więcej informacji na temat profilów śledzenia, zobacz Profile śledzenia.
Aby skonfigurować śledzenie dla przepływu pracy wykonywanego przy użyciu WorkflowInvoker, dodaj dostawcę śledzenia jako rozszerzenie do instancji WorkflowInvoker. Poniższy przykład kodu pochodzi z przykładu Custom Tracking .
WorkflowInvoker invoker = new WorkflowInvoker(BuildSampleWorkflow());
invoker.Extensions.Add(customTrackingParticipant);
invoker.Invoke();
Istnieją dwa dzienniki podglądu zdarzeń o szczególnym znaczeniu do wyświetlenia podczas śledzenia wykonywania programu WF — dziennik analityczny i dziennik debugowania. Obie znajdują się pod węzłem aplikacji Microsoft|Windows|Server-Applications. Dzienniki w tej sekcji zawierają zdarzenia z jednej aplikacji, a nie zdarzenia, które mają wpływ na cały system.
Zdarzenia śledzenia debugowania są zapisywane w dzienniku debugowania. Aby zebrać zdarzenia śledzenia debugowania WF w Podglądzie zdarzeń, włącz dziennik debugowania.
Aby otworzyć Podgląd zdarzeń, kliknij przycisk Start, a następnie kliknij przycisk Uruchom. W oknie dialogowym Uruchamianie wpisz eventvwr
.
W oknie dialogowym Podgląd zdarzeń rozwiń węzeł Dzienniki aplikacji i usług .
Rozwiń węzły Microsoft, Windows i Application Server-Applications .
Kliknij prawym przyciskiem myszy węzeł Debuguj w węźle Application Server-Applications i wybierz pozycję Włącz dziennik.
Wykonaj aplikację z obsługą śledzenia, aby wygenerować zdarzenia śledzenia.
Kliknij prawym przyciskiem myszy węzeł Debuguj i wybierz polecenie Odśwież. Zdarzenia śledzenia powinny być widoczne w środkowym okienku.
Program WF 4 udostępnia uczestnika śledzenia, który zapisuje rekordy śledzenia w sesji ETW (śledzenie zdarzeń dla systemu Windows). Uczestnik śledzenia ETW jest skonfigurowany z profilem śledzenia w celu subskrybowania rekordów śledzenia. Po włączeniu śledzenia rekordy śledzenia błędów są emitowane do funkcji ETW. Zdarzenia śledzenia ETW (z zakresu od 100 do 113), odpowiadające zdarzeniom śledzenia emitowanym przez uczestnika śledzenia ETW, są zapisywane w dzienniku analitycznym.
Aby wyświetlić rekordy śledzenia, wykonaj następujące kroki.
Aby otworzyć Podgląd zdarzeń, kliknij przycisk Start, a następnie kliknij przycisk Uruchom. W oknie dialogowym Uruchamianie wpisz eventvwr
.
W oknie dialogowym Podgląd zdarzeń rozwiń węzeł Dzienniki aplikacji i usług .
Rozwiń węzły Microsoft, Windows i Application Server-Applications .
Kliknij prawym przyciskiem myszy węzeł analityczny w węźle Application Server-Applications i wybierz pozycję Włącz dziennik.
Wykonaj aplikację z obsługą śledzenia, aby wygenerować rekordy śledzenia.
Kliknij prawym przyciskiem myszy węzeł analityczny i wybierz polecenie Odśwież. Rekordy śledzenia powinny być widoczne w środkowym okienku.
Na poniższej ilustracji przedstawiono śledzenie zdarzeń w podglądzie zdarzeń:
Jeśli zdarzenia muszą być zapisywane w określonym dzienniku aplikacji, wykonaj następujące kroki, aby zarejestrować nowy manifest dostawcy.
Zadeklaruj identyfikator dostawcy w pliku konfiguracji aplikacji.
<system.serviceModel>
<diagnostics etwProviderId="2720e974-9fe9-477a-bb60-81fe3bf91eec"/>
</system.serviceModel>
Skopiuj plik manifestu z %windir%\Microsoft.NET\Framework\<najnowszej wersji .NET Framework 4.6.1>\Microsoft.Windows.ApplicationServer.Applications.man do lokacji tymczasowej i zmień jego nazwę na Microsoft.Windows.ApplicationServer.Applications_Provider1.man
Zmień identyfikator GUID w pliku manifestu na nowy identyfikator GUID.
<provider name="Microsoft-Windows-Application Server-Applications" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" />
Zmień nazwę dostawcy, jeśli nie chcesz odinstalować domyślnego dostawcy.
<provider name="Microsoft-Windows-Application Server-Applications" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" />
Jeśli nazwa dostawcy została zmieniona w poprzednim kroku, zmień nazwy kanałów w pliku manifestu na nową nazwę dostawcy.
<channel name="Microsoft-Windows-Application Server-Applications_Provider1/Admin" chid="ADMIN_CHANNEL" symbol="ADMIN_CHANNEL" type="Admin" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.ADMIN_CHANNEL.message)" />
<channel name="Microsoft-Windows-Application Server-Applications_Provider1/Operational" chid="OPERATIONAL_CHANNEL" symbol="OPERATIONAL_CHANNEL" type="Operational" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.OPERATIONAL_CHANNEL.message)" />
<channel name="Microsoft-Windows-Application Server-Applications_Provider1/Analytic" chid="ANALYTIC_CHANNEL" symbol="ANALYTIC_CHANNEL" type="Analytic" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.ANALYTIC_CHANNEL.message)" />
<channel name="Microsoft-Windows-Application Server-Applications_Provider1/Debug" chid="DEBUG_CHANNEL" symbol="DEBUG_CHANNEL" type="Debug" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.DEBUG_CHANNEL.message)" />
<channel name="Microsoft-Windows-Application Server-Applications_Provider1/Perf" chid="PERF_CHANNEL" symbol="PERF_CHANNEL" type="Analytic" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.PERF_CHANNEL.message)" />
Wygeneruj zasobową bibliotekę DLL, wykonując następujące kroki.
Zainstaluj zestaw Windows SDK. Zestaw Windows SDK zawiera kompilator komunikatów (mc.exe) i kompilator zasobów (rc.exe).
W wierszu polecenia zestawu Windows SDK uruchom mc.exe w nowym pliku manifestu.
mc.exe Microsoft.Windows.ApplicationServer.Applications_Provider1.man
Uruchom rc.exe w pliku zasobu wygenerowanym w poprzednim kroku.
rc.exe Microsoft.Windows.ApplicationServer.Applications_Provider1.rc
Utwórz pusty plik cs o nazwie NewProviderReg.cs.
Utwórz bibliotekę DLL zasobu przy użyciu kompilatora języka C#.
csc /target:library /win32res:Microsoft.Windows.ApplicationServer.Applications_Provider1.res NewProviderReg.cs /out:Microsoft.Windows.ApplicationServer.Applications_Provider1.dll
Zmień nazwę zasobu i biblioteki dll komunikatów w pliku manifestu z Microsoft.Windows.ApplicationServer.Applications.Provider1.man
na nową nazwę biblioteki DLL.
<provider name="Microsoft-Windows-Application Server-Applications_Provider1" guid="{2720e974-9fe9-477a-bb60-81fe3bf91eec}" symbol="Microsoft_Windows_ApplicationServer_ApplicationEvents" resourceFileName="<dll directory>\Microsoft.Windows.ApplicationServer.Applications_Provider1.dll" messageFileName="<dll directory>\Microsoft.Windows.ApplicationServer.Applications_Provider1.dll" />
Użyj wevtutil, aby zarejestrować manifest.
wevtutil im Microsoft.Windows.ApplicationServer.Applications_Provider1.man
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię:
Szkolenie
Ścieżka szkoleniowa
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization