2010-08-02 3 views
0

Récemment, j'ai travaillé sur un projet qui repose fortement sur les appels AJAX. Dans le passé, la plupart de ces appels utilisaient leur propre page aspx pour poster par exemple. AJAXgetResults.aspx. Après avoir fait quelques recherches, j'ai vu quelques exemples en utilisant la fonction .ajax de jquery et webmethods dans le codebehind. Je suppose que ma question se résume à. Y a-t-il un gain ou une perte de performance en utilisant la méthode webmethod? Je suppose qu'il serait toujours aussi sécurisé que la page sur laquelle il est, non? Toutes les autres suggestions sont plus que bienvenues! Merci!Quelles sont les meilleures pratiques lors de l'utilisation de jquery pour les appels AJAX dans ASP.NET?

Répondre

1

Si votre application repose en grande partie sur AJAX (requêtes XHR plus généralement) Je regarderais dans WCF Le repos et le retour résultats dans JSON. Vous allez réduire la bande passante consommée et généralement obtenir une amélioration des performances, je trouve la sérialisation WCF et l'authentification largement supérieure à l'utilisation d'une page en tant que service, également. En général, vos performances devraient s'améliorer en changeant ces pages en services.

1

Je suppose que cela dépend du niveau de contrôle que vous voulez avoir sur ce qui se passe pendant l'appel AJAX. Webmethods fonctionnera certainement, mais ce que j'ai utilisé dans un projet récent est la création d'un gestionnaire .ASHX par fonctionnalité distincte que vous souhaitez exposer à vos appels AJAX. Vous avez toujours accès à toutes les variables de contexte telles que request, response, querystring, session, etc. et la logique est bien encapsulée loin de toutes les pages et vous n'obtenez pas non plus un traitement de page et un cycle de vie "normaux". améliorer les performances. Veillez simplement à définir vos niveaux de mise en cache, car les gestionnaires ASHX semblent très «susceptibles d'être mis en cache» par défaut.

Exemple, ashx pour récupérer tous les employés pour une certaine position et retourner les résultats au format JSON:

public class GetEmployeesForPosition : IHttpHandler 
    { 

     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.ContentType = "application/json"; 
      context.Response.Clear(); 
      context.Response.AddHeader("Pragma", "no-cache"); 
      context.Response.AddHeader("Expires", "-1"); 

      var position = new Entity.Model.Position { Code = context.Request.QueryString["code"] }; 
      var language = new Language { Key = context.Request.QueryString["language"] }; 

      var list = new EmployeeManager().GetForPosition(position, language); 
      var employeeMenuList = new List<KeyValuePair<string, string>>(); 
      foreach (var emp in list) 
      { 
       var item = new KeyValuePair<string, string>(emp.Person.Number, emp.Person.DisplayName); 
       employeeMenuList.Add(item); 
      } 

      var json = JsonSerializer.ToJson(employeeMenuList); 
      context.Response.Write(json); 
     } 

     public bool IsReusable 
     { 
      get 
      { 
       return true; 
      } 
     } 
    } 
+0

Edité avec un exemple. – Sam

Questions connexes