Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este ejemplo se muestra cómo pasar los objetos por referencias entre el servidor y cliente. En el ejemplo se utilizan redes sociales simuladas. Una red social está compuesta de una clase Person
que contiene una lista de amigos en la que cada amigo es una instancia de la clase Person
, con su propia lista de amigos. Esto crea un gráfico de objetos. El servicio expone las operaciones en estas redes sociales.
En este ejemplo, el cliente es una aplicación de consola (.exe) e Internet Information Services (IIS) hospeda el servicio.
![]() |
---|
El procedimiento de configuración y las instrucciones de compilación de este ejemplo se encuentran al final de este tema. |
Servicio
La clase Person
tiene el atributo DataContractAttribute aplicado, con el campo IsReference establecido como true para declararlo como un tipo de referencia. Todas las propiedades tienen el atributo DataMemberAttribute aplicado.
[DataContract(IsReference=true)]
public class Person
{
string name;
string ___location;
string gender;
int age;
List<Person> friends;
[DataMember()]
public string Name
{
get { return name; }
set { name = value; }
}
[DataMember()]
public string Location
{
get { return ___location; }
set { ___location = value; }
}
[DataMember()]
public string Gender
{
get { return gender; }
set { gender = value; }
}
…
}
La operación GetPeopleInNetwork
toma un parámetro de tipo Person
y devuelve a todas las personas en la red; es decir, todas las personas de la lista friends
, los amigos de cada amigo, etc., sin duplicados.
public List<Person> GetPeopleInNetwork(Person p)
{
List<Person> people = new List<Person>();
ListPeopleInNetwork(p, people);
return people;
}
La operación GetMutualFriends
toma un parámetro de tipo Person
y devuelve a todos los amigos de la lista que también tienen a esta persona en su lista friends
.
public List<Person> GetMutualFriends(Person p)
{
List<Person> mutual = new List<Person>();
foreach (Person friend in p.Friends)
{
if (friend.Friends.Contains(p))
mutual.Add(friend);
}
return mutual;
}
La operación GetCommonFriends
toma una lista de tipo Person
. Se espera que la lista contenga dos objetos Person
. La operación devuelve una lista de los objetos Person
que están en las listas friends
de ambos objetos Person
en la lista de entrada.
public List<Person> GetCommonFriends(List<Person> people)
{
List<Person> common = new List<Person>();
foreach (Person friend in people[0].Friends)
if (people[1].Friends.Contains(friend))
common.Add(friend);
return common;
}
Cliente
El proxy de cliente se crea utilizando la característica Agregar referencia de servicio de Visual Studio.
Se crea una red social que está compuesta de cinco objetos Person
. El cliente llama a cada uno de los tres métodos del servicio.
Para configurar, compilar y ejecutar el ejemplo
Asegúrese de que ha realizado el Procedimiento de instalación única para los ejemplos de Windows Communication Foundation.
Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Compilación de los ejemplos de Windows Communication Foundation.
Para ejecutar el ejemplo en una configuración con un único equipo o con varios, siga las instrucciones de Running the Windows Communication Foundation Samples.
![]() |
---|
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.
<InstallDrive>: \WF_WCF_Samples
Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.
<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Contract\Data\ObjectReferences
|