Specifiche delle funzionalità di Windows Workflow FoundationWindows Workflow Foundation Feature Specifics

.NET Framework versione 4.NET Framework version 4 aggiunge una serie di funzionalità a Windows Workflow Foundation. adds a number of features to Windows Workflow Foundation. Questo documento descrive alcune delle nuove funzionalità e fornisce informazioni dettagliate sugli scenari nei quali potrebbero essere utili.This document describes a number of the new features, and gives details about scenarios in which they may be useful.

Attività di messaggisticaMessaging Activities

Le attività di messaggistica (Receive, SendReply, Send, ReceiveReply) vengono utilizzati per inviare e ricevere messaggi WCF dal flusso di lavoro.The messaging activities (Receive, SendReply, Send, ReceiveReply) are used to send and receive WCF messages from your workflow. Receive e SendReply attività vengono utilizzate in modo da formare un'operazione del servizio Windows Communication Foundation (WCF) che viene esposta tramite WSDL esattamente come servizi web WCF standard.Receive and SendReply activities are used to form a Windows Communication Foundation (WCF) service operation that is exposed via WSDL just like standard WCF web services. Send e ReceiveReply consentono di utilizzare un servizio web simile a WCF ChannelFactory; un Aggiungi riferimento al servizio esperienza è disponibile anche per Workflow Foundation che genera attività preconfigurate.Send and ReceiveReply are used to consume a web service similar to a WCF ChannelFactory; an Add Service Reference experience also exists for Workflow Foundation that generates pre-configured activities.

Introduzione alle attività di messaggisticaGetting Started with Messaging Activities

Scenario di esempio relativo alle attività di messaggisticaMessaging Activities Example Scenario

Oggetto BestPriceFinder servizio chiama più servizi airline per individuare il prezzo del ticket migliore per una route specifica.A BestPriceFinder service calls out to multiple airline services to find the best ticket price for a particular route. Implementazione di questo scenario caso è necessario usare le attività di messaggio per ricevere la richiesta di prezzo, recuperare i prezzi dei servizi back-end e rispondere alla richiesta di prezzo con il prezzo migliore.Implementing this scenario would require you to use the message activities to receive the price request, retrieve the prices from the back-end services, and reply to the price request with the best price. È possibile utilizzare altre attività out-of-box per creare la logica di business per il calcolo del prezzo migliore anche richiederà.It would also require you to use other out-of-box activities to create the business logic for calculating the best price.

WorkflowServiceHostWorkflowServiceHost

Il WorkflowServiceHost è l'host del flusso di lavoro out-of-box che supporta più istanze, configurazione e messaggistica WCF (anche se non è necessari utilizzare la messaggistica per ospitare i flussi di lavoro).The WorkflowServiceHost is the out-of-box workflow host that supports multiple instances, configuration, and WCF messaging (although the workflows aren’t required to use messaging in order to be hosted). Inoltre si integra con la persistenza, il rilevamento e il controllo dell'istanza tramite un set di comportamenti del servizio.It also integrates with persistence, tracking, and instance control through a set of service behaviors. Come in qualsiasi WCF ServiceHost, il WorkflowServiceHost può essere indipendente in un'applicazione console/Windows Form/WPF o un servizio Windows o ospitato su web (come un file con estensione xamlx) in IIS o WAS.Just like WCF’s ServiceHost, the WorkflowServiceHost can be self-hosted in a console/WinForms/WPF application or Windows service, or web-hosted (as a .xamlx file) in IIS or WAS.

Guida introduttiva all'host del servizio del flusso di lavoroGetting Started with Workflow Service Host

Scenario relativo a WorkflowServiceHostWorkflowServiceHost Scenario

Un servizio BestPriceFinder effettua una chiamata a più servizi airline per individuare il prezzo del ticket migliore per una route specifica.A BestPriceFinder service calls out to multiple airline services to find the best ticket price for a particular route. Implementazione di questo scenario è necessario ospitare il flusso di lavoro WorkflowServiceHost.Implementing this scenario would require you to host the workflow in WorkflowServiceHost. Utilizza inoltre le attività di messaggio per ricevere la richiesta di prezzo, recuperare i prezzi dei servizi back-end e rispondere alla richiesta di prezzo con il prezzo migliore.It would also use the message activities to receive the price request, retrieve the prices from the back-end services, and reply to the price request with the best price.

CorrelazioneCorrelation

Una correlazione è una delle modalità seguenti:A correlation is one of two things:

  • Una modalità di raggruppamento dei messaggi, ovvero la relazione tra un messaggio di richiesta e la sua risposta.A way of grouping messages together; that is, the relationship between a request message and its reply.

  • Una modalità di mapping di un dato a un'istanza del servizio.A way of mapping a piece of data to a service instance

IntroduzioneGetting Started

  • Per iniziare a usare la correlazione, creare un nuovo progetto in Visual Studio.To get started with correlation, create a new project in Visual Studio. Creare una variabile di tipo CorrelationHandle.Create a variable of type CorrelationHandle.

  • Un esempio di correlazione usata per raggruppare i messaggi è una correlazione Request-Reply che raggruppa i messaggi.An example of correlation used to group messages together is a Request-Reply correlation that groups messages together.

  • Un esempio di mapping di un dato a un'istanza del servizio è una correlazione basata sul contenuto che associa un dato (ad esempio un ID ordine) a una determinata istanza del flusso di lavoro.An example of mapping a piece of data to a service instance is content-based correlation which maps a piece of data (for example, an order ID) to a particular workflow instance.

    • In un'attività di messaggistica qualsiasi, fare clic sulla proprietà CorrelationInitializers e aggiungere un QueryCorrelationInitializer usando la variabile CorrelationHandle creata in precedenza.On any messaging activity, click on the CorrelationInitializers property and add a QueryCorrelationInitializer using the CorrelationHandle variable created above. Nel messaggio fare doppio clic sulla proprietà desiderata (ad es. OrderID) dal menu a discesa.Double-click on the desired property on the message (e.g. OrderID) from the drop-down menu. Impostare la proprietà CorrelatesWith sulla variabile CorrelationHandle usata in precedenza.Set the CorrelatesWith property to the CorrelationHandle variable used above.
  • Esempi:Samples:

Scenario relativo alla correlazioneCorrelation Scenario

Un flusso di lavoro di elaborazione degli ordini viene utilizzata per gestire la creazione del nuovo ordine e l'aggiornamento di ordini esistenti in corso.An order-processing workflow is used to handle new order creation and updating existing orders that are in process. Implementazione di questo scenario è necessario ospitare il flusso di lavoro WorkflowServiceHost e utilizzare le attività di messaggistica.Implementing this scenario would require you to host the workflow in WorkflowServiceHost and use the messaging activities. Richiede anche correlazione basata sul orderId per garantire che gli aggiornamenti al flusso di lavoro corretto.It would also require correlation based on the orderId to ensure that updates are made to the correct workflow.

Configurazione semplificataSimplified Configuration

Lo schema di configurazione WCF è complesso e fornisce agli utenti molte funzionalità difficilmente reperibili.The WCF configuration schema is complex and provides users with many hard to find features. In .NET Framework 4.6.1.NET Framework 4.6.1, obiettivo è consentire agli utenti WCF configurare i servizi con le funzionalità seguenti:In .NET Framework 4.6.1.NET Framework 4.6.1, we have focused on helping WCF users configure their services with the following features:

  • Eliminare la necessità della configurazione esplicita di ogni singolo servizio.Removing the need for explicit per-service configuration. Se non si configura qualsiasi <servizio > elementi per il servizio e il servizio non definisce a livello di codice a qualsiasi endpoint, quindi verrà aggiunto automaticamente un set di endpoint al servizio, uno per ogni indirizzo di base del servizio e per ogni contratto implementato dal servizio.If you do not configure any <service> elements for your service, and your service does not define programmatically any endpoint, then a set of endpoints will be automatically added to your service, one per service base address and per contract implemented by your service.

  • Consentire all'utente di definire valori predefiniti per le associazioni e i comportamenti di WCF che verranno applicati ai servizi senza configurazione esplicita.Enables the user to define default values for WCF bindings and behaviors, which will be applied to services with no explicit configuration.

  • Gli endpoint standard definiscono endpoint preconfigurati riutilizzabili, che dispongono di valori fissi per una o più delle proprietà dell'endpoint (indirizzo, associazione e contratto) e consentono la definizione di proprietà personalizzate.Standard endpoints define reusable preconfigured endpoints, which have fixed values for one or more of the endpoint properties (address, binding and contract), and allow defining custom properties.

  • Infine, il ConfigurationChannelFactory<TChannel> è possibile eseguire operazioni di gestione centrale della configurazione di client WCF, utile in scenari in cui configurazione viene selezionata o modificata dopo la fase di caricamento del dominio applicazione.Finally, the ConfigurationChannelFactory<TChannel> allows you to do central management of WCF client configuration, useful in scenarios in which configuration is selected or changed after the application domain load time.

IntroduzioneGetting Started

Scenari di configurazione semplificatiSimplified Configuration Scenarios

  • Un sviluppatore ASMX esperto desidera iniziare a usare WCF.An experienced ASMX developer wants to start using WCF. Tuttavia, WCF sembra molto complicato!However, WCF seems way too complicated! In particolare per tutte le informazioni da scrivere in un file di configurazione.What is all that information that I need to write in a configuration file? In .NET 4, è anche possibile decidere di non avere un file di configurazione.In .NET 4, you can even decide to not have a configuration file at all.

  • È molto difficile configurare e gestire un set di servizi WCF già esistente.An existing set of WCF services are very difficult to configure and maintain. Il file di configurazione è composto da migliaia di righe di codice XML ed è molto pericoloso modificarle.The configuration file has thousands of lines of XML code that are extremely dangerous to touch. È necessario aiutare gli utenti a ridurre la quantità di codice per renderlo più maneggevole.Help is needed to reduce that amount of code to something more manageable.

Resolver del contratto datiData Contract Resolver

In .NET 3.5, esistevano alcune limitazioni nella progettazione di tipi noti:In .NET 3.5, there were a few limitations in the design of known types:

  • Non era possibile aggiungere in modo dinamico tipi noti durante la serializzazione o la deserializzazione.Adding known types dynamically, during serialization or deserialization, was not possible.

  • I serializzatori non erano in grado di gestire le informazioni sconosciute su xsi:type.Serializers could not deal with unknown xsi:type information.

  • Gli utenti non potevano specificare quale xsi:type visualizzare sulla rete per ridurre, ad esempio, le dimensioni di un'istanza di serializzazione.It was not possible for users to specify what xsi:type they would like to have appear on the wire to, for instance, make the size of a serialization instance on the wire smaller.

Il DataContractResolver risolve questi problemi in .NET 4.5.The DataContractResolver solves these issues in .NET 4.5.

IntroduzioneGetting Started

Scenari relativi al resolver del contratto datiData Contract Resolver Scenarios

  • Evitare di dichiarare decine di oggetti KnownTypeAttribute in un servizio.Avoiding having to declare tens of KnownTypeAttribute objects in a service.

  • Ridurre la dimensione del blob XML.Reducing the size of the XML blob.

Diagramma di flussoFlowchart

Il diagramma di flusso è uno noto paradigma per rappresentare visivamente i problemi di un dominio.Flowchart is a well-known paradigm to visually represent domain problems. In .NET 4 è stato introdotto un nuovo stile del flusso di controllo.It is a new control flow style we’re introducing in .NET 4. Una delle caratteristiche principali del diagramma di flusso è quella di eseguire solo un'attività alla volta.A core characteristic of Flowchart is that only one activity is executed at any given time. I diagrammi di flusso possono rappresentare cicli e risultati alternativi, ma non possono rappresentare a livello nativo l'esecuzione simultanea di più nodi.Flowcharts can express loops and alternative outcomes, but cannot natively express concurrent execution of multiple nodes.

IntroduzioneGetting Started

Scenari relativi al diagramma di flussoFlowchart Scenarios

Un'attività del diagramma di flusso può essere usata per implementare un gioco per indovinare un numero.A flowchart activity can be used to implement a guessing game. Il gioco è molto semplice: il computer seleziona un numero casuale e il giocatore deve indovinare il numero.The guessing game is very simple: the computer selects a random number and the player has to guess that number. Quando il giocatore invia ogni ipotesi, il computer mostra un suggerimento, (ad esempio "provare un numero inferiore").When the player submits each guess, the computer shows him a hint (i.e. "try a lower number"). Se il giocatore indovina il numero in meno di 7 tentativi, viene visualizzato un messaggio di congratulazioni speciali.If the player finds the number in less than 7 attempts, he receives a special congratulation from the computer. È possibile implementare questo gioco con una combinazione delle attività procedurali seguenti:This game can be implemented with a combination of the following procedural activities:

Attività procedurali (Sequence, If, ForEach, Switch, Assign, DoWhile, While)Procedural activities (Sequence, If, ForEach, Switch, Assign, DoWhile, While)

Le attività procedurali forniscono un meccanismo per modellare il flusso di controllo sequenziale usando concetti noti ai programmatori.Procedural activities provide a mechanism to model sequential control flow using concepts that are familiar to programmers. Queste attività abilitano i costrutti del linguaggio di programmazione strutturati in modo tradizionale e, se opportuno, forniscono la parità di linguaggio con linguaggi procedurali comuni, ad esempio C#/VB.These activities enable traditionally structured programming language constructs and, when appropriate, provide language parity with common procedural languages such as C#/VB.

IntroduzioneGetting Started

Scenari relativi alle attività proceduraliProcedural Activity Scenarios

  • Parallel: Un sistema di gestione intranet documento dispone di un flusso di lavoro di approvazione di documento.Parallel: An intranet document management system has a document approval workflow. Prima di poter essere pubblicati nella rete Intranet, i documenti devono essere approvati dai responsabili dei diversi reparti.Documents need to be approved by people in several departments before they can be published to the intranet. Non è un ordine prestabilito per le approvazioni; possono verificarsi in qualsiasi momento mentre il documento è nella fase di "approvazione in sospeso".There isn’t an established order for the approvals; they can occur at any time while the document is in the "approval pending" phase. Quando un utente manda in revisione un documento, deve essere approvato dal suo responsabile diretto, dall'amministratore della rete Intranet e dal responsabile delle comunicazioni interne.When a user submits a document for review it must be approved by her direct manager, the intranet administrator, and the internal communications manager.

  • ParallelForEach<T>: Un'applicazione WF gestisce gli acquisti di una grande società.ParallelForEach<T>: A WF application manages corporate buys within a large company. In base a quanto definito nei regolamenti aziendali, prima di pianificare qualsiasi operazione di acquisto è necessario valutare tre fornitori diversi.The corporate rules dictate that before planning any purchase operation, the valuations of three different vendors is required. Un dipendente dell'ufficio acquisti seleziona tre fornitori dall'elenco fornitori della società.An employee from the buying department selects three vendors from the company’s vendor list. Una volta selezionati e informati i fornitori, la società attenderà le proposte economiche.After these vendors have been selected and notified, the company will wait for their economic proposals. Le proposte possono pervenire in qualsiasi ordine.The proposals can come in any order. Per implementare questo scenario in WF, viene usato ParallelForEach<T> per scorrere l'elenco dei fornitori e richiedere le proposte economiche.To implement this scenario in WF, we use a ParallelForEach<T> that will iterate through our collection of vendors and ask for their economic proposals. Una volta raccolte tutte le offerte, viene scelta e visualizzata la migliore.After all offers are gathered, the best one is selected and displayed.

InvokeMethodInvokeMethod

L'attività InvokeMethod consente di richiamare metodi pubblici in oggetti o tipi nell'ambito.The InvokeMethod activity allows invoking public methods in objects or types in scope. Supporta il richiamo di metodi di istanza e statici con o senza parametri (incluse le matrici di parametri) e metodi generici.It supports invoking instance and static methods with or without parameters (including parameter arrays), and generic methods. Consente inoltre l'esecuzione del metodo in modo sincrono e asincrono.It also allows executing method synchronously and asynchronously.

IntroduzioneGetting Started

  • In Visual Studio 2012Visual Studio 2012, creare un'applicazione console flusso di lavoro.In Visual Studio 2012Visual Studio 2012, create a workflow console application. Aggiungere un'attività InvokeMethod nella finestra di progettazione del flusso di lavoro e configurare i metodi di istanza e statici.Add an InvokeMethod activity in the workflow designer, and configure static and instance methods on it.

  • Esempi:Samples:

  • Documentazione di progettazione: ActivityDesigner InvokeMethodDesigner Documentation: InvokeMethod Activity Designer

Scenari relativi a InvokeMethodInvokeMethod Scenarios

  • È necessario richiamare un metodo in un oggetto nell'ambito.A method in an object in scope needs to be invoked. Ad esempio, è necessario aggiungere un valore a un dizionario.For example, a value needs to be added to a dictionary. Viene richiamato il metodo Add dell'istanza del dizionario e vengono forniti la chiave e il valore.The Add method of the instance of the dictionary is invoked, and the key and value are provided.

  • È necessario richiamare un metodo su un oggetto CLR legacy.A method needs to be invoked on a legacy CLR object. Anziché creare un'attività personalizzata per eseguire il wrapping della chiamata a quella classe legacy, è possibile usare InvokeMethod, se rientra nell'ambito durante l'esecuzione del flusso di lavoro.Instead of creating a custom activity to wrap the call to that legacy class, if it is in scope during the workflow execution, InvokeMethod can be used.

Attività di gestione degli erroriError handling activities

L'attività TryCatch fornisce un meccanismo per il rilevamento delle eccezioni che si verificano durante l'esecuzione di un set di attività contenute (simile al costrutto Try/Catch in C#/VB).The TryCatch activity provides a mechanism for catching exceptions that occur during the execution of a set of contained activities (similar to the Try/Catch construct in C#/VB). TryCatch fornisce la gestione delle eccezioni a livello di flusso di lavoro.TryCatch provides exception handling at the workflow level. Quando viene generata un'eccezione non gestita, il flusso di lavoro viene interrotto e non viene eseguito il blocco Finally.When an unhandled exception is thrown, the workflow is aborted and the Finally block won’t be executed. Questo comportamento è coerente con C#.This behavior is consistent with C#.

IntroduzioneGetting Started

Scenari relativi alla gestione degli erroriError handling scenarios

È necessario eseguire un set di attività e, quando si verifica un errore, è necessario eseguire una logica specifica.A set of activities needs to be executed, and specific logic needs to be executed when an error occurs. Se durante l'esecuzione della logica di gestione degli errori si scopre che l'errore non è risolvibile, viene rigenerata l'eccezione e il problema viene gestito dall'attività padre (o dall'host).If during that error handling logic it is found that the error is not recoverable, the exception will be rethrown, and the parent activity (or the host) will deal with the problem.

Attività PickPick activity

L'attività Pick fornisce il modello di flusso di controllo basato sugli eventi in WF.The Pick Activity provides event-based control flow modeling in WF. L'attività Pick contiene molti branch, la cui esecuzione è condizionata dal verificarsi di un particolare evento.Pick contains many branches where each branch waits for a particular event to occur before running. In questa impostazione, Pick si comporta in modo analogo a Switch<T>, ovvero l'attività esegue solo uno dei set di eventi in ascolto.In this setup, a Pick behaves similar to a Switch<T> to which the Activity will execute only one of the set of events it is listening. Ogni ramo è basato sugli eventi e l'evento che si verifica per primo determina l'esecuzione del ramo corrispondente.Each branch is event driven and the event that occurs runs the corresponding branch first. Tutti gli altri rami vengono annullati e interrompono l'ascolto di altri eventi.All other branches cancel and stop listening for events.

IntroduzioneGetting Started

Scenario relativo all'attività PickPick Scenario

È necessario richiedere l'input di un utente.A user needs to be prompted for input. In circostanze normali, lo sviluppatore utilizzerebbe una chiamata al metodo come ReadLine per richiedere l'input di un utente.Under normal circumstances, the developer would use a method call like ReadLine to prompt for a user’s input. Il problema di questa impostazione è che il programma attende fino a quando l'utente non immette un valore.The problem with this setup is that the program waits until the user enters something. In questo scenario, è necessario un timeout per sbloccare un'attività di blocco.In this scenario, a time-out is needed to unblock a blocking activity. Un scenario comune è quello in cui è necessario completare un'attività entro un periodo di tempo specificato.A common scenario is one that requires a task to be completed within a given time duration. Il timeout di un'attività di blocco è uno scenario in cui l'attività Pick rappresenta un valore aggiunto.Timing out a blocking activity is a scenario where Pick adds a lot of value.

Servizio di routing di WCFWCF Routing Service

Il servizio di Routing è progettato per essere un software generico Router che consente di controllare il flusso del WCFmessages tra client e servizi.The Routing Service is designed to be a generic software Router that allows you to control how WCFmessages flow in between your clients and services. Il servizio di Routing consente di separare i client dai servizi, che consente una maggiore libertà in termini delle configurazioni che è possibile supportare e la flessibilità necessaria quando si considera come ospitare i servizi.The Routing Service allows you to decouple your clients from your services, which gives you much more freedom in terms of the configurations that you can support and the flexibility you have when considering how to host your services. In .NET 3.5, client e servizi sono strettamente; un client deve conoscere tutti i servizi necessarie per comunicare con e in cui si trovavano.In .NET 3.5, clients and services were tightly coupled; a client had to know about all of the services it needed to talk to and where they were located. WCF in .NET Framework 3.5 aveva inoltre le limitazioni seguenti:In addition, WCF in .Net Framework 3.5 had the following limitations:

  • La gestione degli errori era complessa, in quanto la logica doveva essere impostata come hardcoded nel client.Error handling was complex, as this logic had to be hard-coded into the client.

  • I client e i servizi dovevano usare sempre le stesse associazioni.Clients and services had to always use the same bindings.

  • I servizi venivano adeguatamente diversificati molto raramente: è più facile far comunicare il client con un servizio che implementa tutto piuttosto che dover scegliere tra più servizi.Services were rarely well factored: it is easier to have the client talk to one service which implements everything, rather than needing to choose between multiple services.

Il servizio di routing in .NET 4 è progettato per semplificare la risoluzione di questi problemi.The routing service in .Net 4 is designed to make these problems easier to solve. Il nuovo servizio di routing offre le funzionalità seguenti:The new routing service has the following features:

  1. Routing basato sul contenuto (gli oggettiMessageFilter esaminano un messaggio per stabilire dove deve essere inviato).Content based routing (MessageFilter objects examine a message to determine where it should be sent.)

  2. Bridging del protocollo (trasporto e messaggio)Protocol bridging (transport & message)

  3. Gestione degli errori (il router intercetta le eccezioni di comunicazione ed esegue il failover sugli endpoint di backup)Error handling (the router catches communication exceptions and fails over to backup endpoints)

  4. Aggiornamento dinamico (in memoria) di MessageFilterTable<TFilterData> e configurazione del routing.Dynamic (in memory) update of MessageFilterTable<TFilterData> and Routing Configuration.

IntroduzioneGetting Started

  1. Documentazione: RoutingDocumentation: Routing

  2. Esempi: servizi di Routing [esempi WCF]Samples: Routing Services [WCF Samples]

  3. Blog: regole di Routing.Blog: Routing Rules!

Scenari di routingRouting Scenarios

Il servizio di routing è utile negli scenari seguenti:The routing service is useful in the following scenarios:

  • I client possono comunicare con più servizi senza doverli indirizzare tutti direttamente.Clients can talk to multiple services without having to address them all directly.

  • I client possono eseguire una logica aggiuntiva su una richiesta del client per determinare dove indirizzarlo.Clients can perform additional logic on a client request to determine where to route it

  • È possibile decomporre le operazioni eseguite da un client in più implementazioni del servizio senza eseguire il refactoring del client.Decompose the operations a client performs into multiple service implementations without refactoring the client.

  • I client e i servizi possono supportare associazioni diverse con impostazioni di sicurezza diverse.Clients and services can speak different bindings with different security settings.

  • È possibile rendere i client più affidabili in caso di guasto o indisponibilità dei servizi.Clients can be enabled to be more robust against failure or the unavailability of services.

WCF DiscoveryWCF Discovery

WCF Discovery è una tecnologia di framework che consente di incorporare un meccanismo di individuazione nell'infrastruttura dell'applicazione.WCF Discovery is a framework technology that allows you to incorporate a discovery mechanism to your application infrastructure. È possibile usarlo per rendere individuabile il servizio e configura i client per la ricerca dei servizi.You can use this to make your service discoverable, and configure your clients to search for services. Non è più necessario impostare i clienti come hardcoded con gli endpoint, pertanto l'applicazione è più affidabile e garantisce una maggiore tolleranza agli errori.Clients no longer need to be hard coded with endpoint, making your application more robust and fault tolerant. Discovery è la piattaforma ideale per integrare funzionalità di configurazione automatica nell'applicazione.Discovery is the perfect platform to build auto-configuration capabilities into your application.

Il prodotto si basa sullo standard WS-DiscoveryThe product is built on top of the WS-Discovery standard. ed è progettato per essere interoperativo, estendibile e generico.It’s designed to be interoperable, extensible, and generic. Il prodotto supporta due modalità di funzionamento:The product supports two modes of operation:

  1. Gestito: se sulla rete esiste un'entità informata sui servizi esistenti, i client eseguono direttamente una query per ottenere le informazioni.Managed: where there is an entity on the network knowledgeable about existing services, clients query it directly for information. È analogo ad Active Directory.This is analogous to Active Directory.

  2. Ad hoc: in questa modalità i client usano messaggi multicast per individuare i servizi.Ad-hoc: where clients use multicast messages to locate services.

Inoltre, i messaggi di individuazione non riconoscono il protocollo di rete; è possibile usarli in aggiunta a qualsiasi protocollo che supporta i requisiti della modalità.Furthermore, discovery messages are network protocol agnostic; you can use them on top any protocol that supports the mode requirements. Ad esempio, l'individuazione dei messaggi multicast possono essere inviati tramite il canale UDP o qualsiasi altra rete che supporta la messaggistica multicast.For example, discovery multicast messages can be sent over the UDP channel or any other network that supports multicast messaging. Questi punti, combinati con la flessibilità di funzionalità, consentono di adattare il processo di individuazione in modo specifico per la soluzione di progettazione.These design points, combined with feature flexibility, allow you to adapt the discovery specifically to your solution.

IntroduzioneGetting Started

Scenari relativi all'individuazioneDiscovery Scenarios

Un sviluppatore non desidera impostare gli endpoint come hardcoded, in quanto non è possibile sapere quando sarà disponibile il servizio.A developer doesn't want to hard code endpoints, since it is unknown when my service will be available. Al contrario, lo sviluppatore desidera scegliere un servizio in fase di runtime.Instead, the developer wants to choose a service at runtime. I componenti dell'applicazione devono essere più separabili, più affidabili e autoconfigurabili.More decoupling, robustness, and auto-configuration is needed between the components in the application.

RilevamentoTracking

Flusso di lavoro di rilevamento consente di comprendere l'esecuzione di un'istanza del flusso di lavoro.Workflow tracking provides insight into the execution of a workflow instance. Gli eventi di rilevamento vengono generati da un flusso di lavoro a livello di istanza del flusso di lavoro e quando eseguono le attività all'interno del flusso di lavoro.The tracking events are emitted from a workflow at the workflow instance level and when activities within the workflow execute. Per sottoscrivere i record di rilevamento, è necessario aggiungere all'host del flusso di lavoro un partecipante del rilevamento del flusso di lavoro.A workflow tracking participant needs to be added to the workflow host to subscribe to tracking records. I record di rilevamento vengono filtrati usando un profilo di rilevamento.The tracking records are filtered using a tracking profile. .NET Framework fornisce un partecipante del rilevamento ETW (Event Tracing for Windows) e nel file machine.config. viene installato un profilo di base.The .Net Framework provides an ETW (Event Tracing for Windows) tracking participant, and a basic profile is installed in the machine.config file.

IntroduzioneGetting Started

  1. In Visual Studio 2010Visual Studio 2010, creare un progetto Applicazione di servizi flusso di lavoro WCF.In Visual Studio 2010Visual Studio 2010, create a WCF Workflow Service Application project. Inizialmente, nel canvas verrà posizionata la coppia Receive e SendReply.A Receive and SendReply pair will be placed on your canvas to start.

  2. Aprire web.config e aggiungere un comportamento di rilevamento ETW senza profilo.Open the web.config and add an ETW tracking behavior with no profile.

    1. Viene usato il profilo predefinito.The default profile is used.

    2. Aprire il Visualizzatore eventi e abilitare il canale analitico nel nodo seguente: Visualizzatore eventi, registri applicazioni e servizi, Microsoft, Windows , Server applicazioni-applicazioni.Open event viewer and enable the analytic channel in the following node: Event Viewer, Applications and Services Logs, Microsoft, Windows, Application Server-Applications. Fare doppio clic su analitico e selezionare Attiva registro.Right-click Analytic and select Enable Log.

    3. Eseguire il servizio del flusso di lavoro.Run the workflow service.

    4. Osservare gli eventi di rilevamento del flusso di lavoro nel visualizzatore eventi.Observe the workflow tracking events in event viewer.

  3. Esempi: rilevamentoSamples: Tracking

  4. Documentazione concettuale: flusso di lavoro rilevamento e tracciaConceptual documentation: Workflow Tracking and Tracing

Archivio di istanze del flusso di lavoro SQLSQL Workflow Instance Store

SqlWorkflowInstanceStore è un'implementazione basata su server SQL di un archivio di istanze.The SqlWorkflowInstanceStore is a SQL Server-based implementation of an instance store. In un archivio di istanze è memorizzato lo stato di un'istanza in esecuzione nonché tutti i dati necessari per caricare e riprendere l'esecuzione di quell'istanza.An instance store stores the state of a running instance together with all data necessary to load and resume that instance. L'host del servizio indica all'archivio di istanze di salvare lo stato dell'istanza se il flusso di lavoro è persistente e di caricare lo stato dell'istanza all'arrivo di un messaggio per quell'istanza o alla scadenza di un'attività di ritardo.The service host instructs the instance store to save the instance state if the workflow persists, and it instructs the instance store to load the instance state when a message arrives for that instance or a delay activity expires.

IntroduzioneGetting Started

  1. In Visual Studio 2012Visual Studio 2012, creare un flusso di lavoro che contiene un'attività Persist implicita o esplicita.In Visual Studio 2012Visual Studio 2012, create a Workflow that contains an implicit or explicit Persist activity. Aggiungere il comportamento SqlWorkflowInstanceStore all'host del servizio del flusso di lavoro.Add the SqlWorkflowInstanceStore behavior to your workflow service host. Questa operazione può essere eseguita nel codice o nel file di configurazione dell'applicazione.This can be done in code or in the application configuration file.

  2. Esempi: persistenzaSamples: Persistence

  3. Documentazione concettuale: archivio di istanze del flusso di lavoro SQL.Conceptual documentation: SQL Workflow Instance Store.