Compartir a través de


Entidades compartidas

Las entidades pueden compartirse entre varios servicios de dominio en una aplicación de WCF RIA Services. Un cliente puede tener acceso al mismo tipo de entidad a través de cada uno de estos servicios de dominio proporcionados que están contenidos en el mismo DLL de servidor. La compatibilidad con entidades compartidas incluye la generación de código basándose en asociaciones potencialmente diferentes y métodos de actualización con nombres en cada uno de los tipos de DomainService. La posibilidad de compartir entidades facilita unas mejores refactorización y composición de aplicaciones más grandes de RIA Services mediante una asignación más simple de entidades al modelo de datos subyacente.

La existencia de escenarios que ilustran la necesidad de dicho uso compartido es muy común. Por ejemplo, considere el hecho de cómo pueden compartirse la información personal de los empleados y los datos de dichos empleados en poder del departamento de recursos humanos (RRHH). Puede exponerse una entidad de empleado mediante un elemento DomainService de información personal de empleados, donde estos pueden actualizar su información personal, como su dirección y su número de teléfono. También puede exponerse el mismo tipo de empleado mediante un elemento DomainService de recursos humanos, donde, además de la información de RRHH como fechas de vacaciones y nómina, se muestren también detalles de la entidad de empleado como nombre e identificador. Otro ejemplo es una entidad de producto utilizada tanto por un servicio de compras como por un servicio de catálogos.

Observe que el uso compartido de entidades solo se admite dentro de un DLL de servidor único. Cualquier número de servicios de dominio puede hacer referencia al mismo tipo de entidad dentro del límite de DLL. Pero no se admite el uso compartido del mismo tipo de entidad a través de varios DLLs de servidor. Para obtener instrucciones sobre cómo compartir una entidad entre servicios de dominio, vea el tema Tutorial: compartir entidades entre varios servicios de dominio.

[!NOTA] La compatibilidad con entidades compartidas se introdujo en WCF RIA Services V1.0 SP1 y no se admite en WCF RIA Services V1.0.

Dar forma a la entidad de cliente

Con la introducción del uso compartido de tipos de entidad a través de más de un servicio de dominio, cada elemento DomainService que utiliza un tipo de entidad dado contribuye a que se genere o no una propiedad de entidad de servidor en el cliente. La entidad de cliente generada será una vista combinada que contendrá propiedades de entidad utilizadas por los servicios que exponen el tipo. El resultado es que el generador de código creará un tipo de entidad en el cliente que podrá tener acceso a cada uno de los servicios de dominio en el DLL de aplicación. La forma de la entidad de cliente también puede verse afectada por el uso de los atributos IncludeAttribute y ExcludeAttribute. La propiedad de entidad de servidor con el atributo IncludeAttribute se reflejará siempre en el cliente. La propiedad de entidad de servidor con el atributo ExcludeAttribute nunca se reflejará en el cliente.

Métodos de actualización personalizados con entidades compartidas

Los métodos de actualización personalizados de un servicio de dominio a los que se ha aplicado el atributo [Update(UsingCustomMethod = true)] se reflejarán en el contexto de dominio de cliente y la entidad de cliente contendrá los métodos de actualización personalizados asociados a ella. El contexto de dominio tiene una afinidad natural con el servicio de dominio, pero como es posible que la entidad no esté compartida, los usuarios necesitan saber qué contexto de dominio han de utilizar al llamar a un método de actualización personalizado. Intellisense debe proporcionar ayuda en este caso.

Limitaciones del uso compartido

Deben tenerse en cuenta tres limitaciones relacionadas con las entidades compartidas.

  1. Sigue sin admitirse el uso compartido del mismo tipo de entidad a través de varios DLLs de servidor, como se menciona más arriba.

  2. En una jerarquía de herencia, si se comparten las bifurcaciones de una jerarquía, debe compartirse el mismo nivel de la jerarquía.

  3. Todos los objetos DomainService que comparten un tipo de entidad determinado deben estar de acuerdo en la descripción de metadatos de ese tipo. Esto significa que los objetos DomainServiceDescriptionProvider personalizados para el servicio deben especificar los mismos metadatos para el tipo.