J'ai un service WCF que j'ai créé et qui fonctionne. Il est un service très basique pour l'instant et a le code suivant:Classes de proxy JavaScript pour les objets composés dans WCF
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Activation;
[ServiceContract(Namespace = "TestServiceNameSpace")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyTestService
{
[OperationContract]
public MyNamespace.MyCompoundType ReturnMyCompoundType()
{
return new MyNamespace.MyCompoundType { DateVal = DateTime.Now, IntegerVal = 256, StringVal = "Pedro's test" };
}
}
est inférieure à la classe MyCompoundType
using System.Runtime.Serialization;
using System;
using System.ComponentModel;
namespace MyNamespace
{
[DataContract]
public class MyCompoundType : IMyCompoundType
{
[DataMember]
public int IntegerVal { get; set; }
[DataMember]
public string StringVal { get; set; }
[DataMember]
public DateTime DateVal { get; set; }
}
}
Maintenant, quand je regarde le fichier JS pour ce service en allant http://localhost/MyTestService.svc/jsdebug (que j'utilise ensuite pour effectuer mes appels Ajax) J'ai remarqué qu'il n'y a pas de proxy créé pour MyCompoundType. donc, quand j'inclus ce fichier JS, tout fonctionne bien et je peux faire un appel au service, mais je ne peux pas déclarer une variable javascript de type MyCompoundType (un type de proxy qui est). Est-ce seulement possible? Une grande partie de cela est que nous utiliserions la fonctionnalité IntelliSense dans le javascript afin d'éviter des bugs comme quelqu'un tapant:
var mycompundTypeReturn = returnValueFromWCFCall;
alert(mycompoundTypeReturn.StrVal); //this will give us an error because mycompoundTypeReturn.StrVal does not exist, only mycompoundTypeReturn.StringVal exists
Est-il possible de générer le fichier proxy JS en utilisant svcutil.exe et en spécifiant plus détail? Y a-t-il des attributs que j'ai manqués? Est-ce seulement possible? Est-ce que cela a même du sens en utilisant WCF?
Toute aide sera grandement appréciée, ou même un "Vous perdez votre temps avec ceci, c'est impossible et vous avez manqué le point de WCF" réponse sera appréciée.
Merci