Compartir a través de


Tarea 2: Habilitación de persistencia para el servicio duradero

En esta tarea, decorará el servicio que creó en la Tarea 1 con atributos que permiten conservar el estado del servicio después de cada invocación de operación correcta.

Para decorar el servicio con atributos de servicio duraderos

  1. Abra Service1.cs (o Service1.vb si creó una solución de Visual Basic).

  2. En el panel Explorador de soluciones, en el nodo de proyecto SimpleDurableService, haga clic con el botón secundario en la subcarpeta Referencias, y seleccione Agregar referencia.

  3. En el cuadro de diálogo Agregar referencia, en la ficha .NET, seleccione System.WorkflowServices y haga clic en Aceptar.

  4. Agregue la siguiente instrucción using a su archivo de origen de C#:

Si ha creado una solución deVisual Basic, h aga clic con el botón secundario en el nodo del proyecto SimpleDurableService y seleccione Propiedades. Seleccione la ficha Referencias y en Espacios de nombres importados, compruebe System.ServiceModel.Description.

  1. Para conservar su servicio, debe decorar la clase Service1 con los atributos DurableServiceAttribute y SerializableAttribute como se muestra en el ejemplo siguiente.

  2. El atributo DurableServiceAttribute especifica qué información de estado de su servicio WCF puede conservarse a un almacén de persistencia, como, por ejemplo, una base de datos o un archivo. Además, el tipo de servicio debe ser serializable de modo que pueda transmitirse al almacén de persistencia.

  3. Decore las operaciones del servicio con el atributo DurableOperationAttribute, como se muestra en el ejemplo siguiente. Este atributo especifica que el estado de la instancia del servicio se guardará una vez completada la operación.

Las propiedades CompletesInstance y CanCreateInstance especifican que la instancia del servicio durable se creará o finalizará después de que la operación representativa haya finalizado correctamente. En este tutorial, varias operaciones tienen la primera y la última operación que controlan el comportamiento de la instancia de servicio.

Las operaciones que se decoran con el atributo DurableOperationAttribute establecido en valores predeterminados sólo pueden conservar información de estado en una entrada de instancia de servicio existente en el almacén de persistencia. Sin embargo, si crea un contrato de servicios en el que System.ServiceModel.SessionMode.NotAllowed está establecido en true, todos los atributos DurableOperationAttribute deben tener la propiedad CanCreateInstance establecida en true.

Ahora que su servicio está decorado con los atributos apropiados, debe configurar su archivo de configuración y hacer referencia el almacén de persistencia que desea utilizar.

Para configurar su servicio duradero

  1. Abra App.config.

  2. Modifique los valores de la configuración del punto final para hacer referencia a un enlace de contexto, como WSHttpContextBinding.

    <endpoint address ="" binding="wsHttpContextBinding" contract="SimpleDurableService.IService1" />
    

    Deben utilizarse los enlaces de contexto porque el cliente utiliza un DurableOperationContext para identificar una instancia de servicio concreta. Una vez invocada una operación de solicitud/respuesta, y de recibir una respuesta desde el servicio, el cliente utilizará el valor InstanceId en cada invocación de operación posterior de modo que el cliente se asocie a la instancia de servicio correcta. Si no se utiliza este mecanismo de seguimiento, cuando se cierre o desconecte una instancia de servicio desde el cliente, éste no podrá restablecer una conexión con una instancia de servicio concreta.

  3. Agregue el siguiente nodo secundario a su nodo de comportamiento.

    <behaviors>
          <serviceBehaviors>
            <behavior name="SimpleDurableService.Service1Behavior">
              <!-- To avoid disclosing metadata information, 
              set the following value to false and remove the preceding metadata endpoint before deployment. -->
              <serviceMetadata httpGetEnabled="True"/>
              <!-- To receive exception details in faults for debugging purposes, 
              set the following value to true. Set the value to false before deployment 
              to avoid disclosing exception information. -->
              <serviceDebug includeExceptionDetailInFaults="False" />
              <persistenceProvider type="System.ServiceModel.Persistence.SqlPersistenceProviderFactory, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                                   connectionStringName="DurableServiceStore" 
                                   persistenceOperationTimeout = "00:00:10"
                                   lockTimeout="00:01:00"
                                   serializeAsText="true"/>
    
            </behavior>
          </serviceBehaviors>
        </behaviors>
    

    PersistenceProviderElement define el tipo de PersistenceProvider que utilizará el servicio. En este tutorial, se utiliza SqlPersistenceProviderFactory para crear una nueva instancia del tipo PersistenceProvider que conecta con una base de datos SQL. Siempre que se invoque y complete correctamente la operación de agregar, se creará una nueva instancia de servicio y su información de estado se almacenará en la base de datos SQL.

  4. Agregue la cadena de conexión con la base de datos SQL que su instancia de servicio utilizará para la persistencia.

      </system.serviceModel>
      <connectionStrings>
        <add name="DurableServiceStore" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=NetFx35Samples_DurableServiceStore;Integrated Security=SSPI"/>
      </connectionStrings>
    </configuration>
    

Nota

Este tutorial utiliza la misma base de datos que se utiliza para Durable Workflow Services Sample; por consiguiente, la cadena de conexión es la misma. Para permitir el acceso al almacén duradero, ejecute el script Createstores.cmd desde One-Time Setup Procedure for the Windows Communication Foundation Samples.

En la tarea siguiente, se crea un cliente que puede acceder a su servicio duradero.

Consulte también

Tareas

Tarea 1: Definición e implementación de un contrato de servicio duradero
Tarea 3: Creación de un cliente de servicio duradero

Otros recursos

Tutorial: Creación de un servicio duradero

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.