J'ai un emplacement aspx .NET 3.5 avec une méthode marquée par le [WebMethod]
attribut. J'appelle cela avec jQuery, envoyant JSON dans les deux sens. Tout cela fonctionne très bien. Ma question est, qu'est-ce que [ScriptMethod]
faire quand appliqué à une méthode? J'ai essayé cela et cela semble donner le même résultat. ScriptMethod
et WebMethod
sont-ils identiques et interchangeables, ou l'un fournit-il des fonctionnalités et/ou des frais généraux que l'autre ne fournit pas? En général, je me retrouve confus avec toutes les options disponibles pour la mise en œuvre de services Web et j'aimerais savoir quels sont les avantages et les inconvénients de chacun.
Vous utilisez l'attribut ScriptMethod dans les 2 scénarios suivants.
Si vous n'avez pas l'une des exigences ci-dessus; vous avez juste besoin d'une réponse JSON en utilisant une requête ajax, vous pouvez simplement utiliser la WebMethod.
Il y a encore un élément déroutant ici, quand utilisez-vous l'attribut ScriptService? ceci est utilisé si vous utilisez le framework de script Microsoft Ajax Client, ces attributs indiquent au serveur de générer des objets proxy sur le client afin que vous puissiez appeler des fonctions comme un objet normal. var MyRemoteObject = new RemoteObject();
MyRemoteObject.getMessage(....)
et même lorsque vous utilisez l'attribut ScriptService, vous n'avez pas besoin d'ajouter l'attribut ScriptMethod uniquement dans les scénarios ci-dessus.
Cela m'a dérouté au début parce que je pensais que les attributs ScriptService et ScriptMethod fonctionnaient ensemble, tout comme les attributs WebService et WebMethod.
L'attribut ScriptMethodAttribute est facultatif. (Cependant, les méthodes qui peuvent être appelées à partir du script client doivent avoir l'attribut System.Web.Services .. ::. WebMethodAttribute appliqué.). Si une méthode n'est pas marquée avec ScriptMethodAttribute, la méthode sera appelée à l'aide de la commande HTTP POST et la réponse sera sérialisée en JSON. Vous ne pouvez pas remplacer ce paramètre à partir du script.
de - http://msdn.Microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx
EDIT: WebMethod et ScriptMethod ne sont pas des attributs concurrents. ScriptMethod pourrait être une annotation supplémentaire, comme le dit le paragraphe ci-dessus.