WebMethod vs ScriptMethod

J’ai un emplacement .NET 3.5 aspx avec une méthode marquée avec l’atsortingbut [WebMethod] . J’appelle cela avec jQuery, en envoyant JSON dans les deux sens. Tout fonctionne très bien. Ma question est la suivante: que fait [ScriptMethod] lorsqu’il est appliqué à une méthode? J’ai essayé ceci et cela semble donner le même résultat. ScriptMethod et WebMethod identiques et interchangeables, ou l’un fournit-il des fonctionnalités et / ou des fonctionnalités supplémentaires que l’autre n’a pas? En général, je suis confus avec toutes les options disponibles pour la mise en œuvre des services Web et j’aimerais savoir quels sont les avantages et les inconvénients pour chacun.

Vous utilisez l’atsortingbut ScriptMethod dans les 2 scénarios suivants.

  1. Vous utilisez jquery ou tout autre mécanisme de requête ajax, mais vous souhaitez que la requête soit un GET et non un POST.
  2. Vous souhaitez recevoir une réponse XML dans javaScript.

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 alors vous pouvez simplement utiliser la méthode WebMethod.

Il y a encore un élément de confusion ici, quand utilisez-vous l’atsortingbut ScriptService? Ceci est utilisé si vous utilisez la structure de script Microsoft Ajax Client, ces atsortingbuts indiquent au serveur de générer des objects proxy sur le client afin que vous puissiez appeler des fonctions comme un object normal. var MyRemoteObject = new RemoteObject(); MyRemoteObject.getMessage(....) et même lorsque vous utilisez l’atsortingbut ScriptService, vous n’avez pas besoin d’append l’atsortingbut ScriptMethod uniquement dans les scénarios ci-dessus.

Au début, cela me déroutait car je pensais que les atsortingbuts ScriptService et ScriptMethod fonctionnaient de la même manière que les atsortingbuts WebService et WebMethod.

L’atsortingbut ScriptMethodAtsortingbute est facultatif. (Toutefois, les méthodes pouvant être appelées à partir du script client doivent avoir l’atsortingbut System.Web.Services.. ::. WebMethodAtsortingbute appliqué.) Si une méthode n’est pas marquée avec ScriptMethodAtsortingbute, 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.

à partir de – http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodatsortingbute.aspx

EDIT: WebMethod et ScriptMethod ne sont pas des atsortingbuts concurrents. ScriptMethod pourrait être une annotation supplémentaire, comme le dit le paragraphe ci-dessus.