Rédaction de code .Net / SQL Server efficace

Permettez-moi de préface en disant que je ne frappe pas .Net (ça m'aide à gagner ma vie) …

J'ai récemment entendu parler d'un site où le développeur / propriétaire se vantait d'avoir un matériel minimal pour supporter son site (plentyoffish.com). Ce site est répertorié comme étant dans le top 50 en termes de trafic sur Alexa. J'ai du mal à comprendre comment ce genre de chose peut être accompli en faisant ce que le développeur / propriétaire prétend, un seul développeur écrit un site (il lui a fallu 2 semaines pour get le site intial) en utilisant un minimum de matériel hits par heure (pic). Les grandes entresockets ont d'énormes fermes Web pour gérer le trafic comme ça …

Comment écrire du code si efficace, avec des ressources matérielles limitées (il prétend qu'il n'utilise que trois servers DB)? Quelqu'un a-t-il travaillé ou développé un site aussi efficace?

La stack Microsoft est remarquablement rapide si vous évitez tous les déchets de glisser / déposer qui donnent un mauvais nom à ASP.NET.

  • IIS est un bon server web.
  • SQL Server est une bonne database.
  • C # comstack en code rapide. (qualifications probablement nécessaires ici 🙂
  • ASP.NET peut être assez léger si vous l'utilisez correctement

C'est toute la stack. C'est parfait. Vous pouvez dire ce que vous aimez chez Microsoft, ses pratiques commerciales et ses produits de consommation, mais leurs outils de développement et leurs servers sont de premier ordre.

Mon expérience personnelle avec leur web stack inclut un site qui voit ~ 500 pages vues / seconde et qui pique rarement le server au dessus de 15%. C'est assez rapide pour la plupart des opérations.

C'est plus que du code: faire quelque chose comme ça nécessite un effort de coopération de la part des développeurs, des administrateurs de bases de données et de l'informatique. Chaque membre de l'équipe doit reconnaître l'impact de son travail sur les autres parties de l'équipe.

Quand un développeur écrit une requête qui effectue une parsing de table sur un système OLTP lourd, il doit comprendre pourquoi il ne va pas évoluer. Lorsque le DBA voit un scan de table, il doit comprendre comment le réparer au niveau de la database ou au niveau du code. Lorsque sysadmin voit une forte activité de lecture sur les disques, il doit en comprendre les causes sous-jacentes (des choses comme les parsings de table) afin de décider s'il faut le réparer avec un meilleur code ou y lancer plus de disques.

Les systèmes performants sont le résultat de l'excellent travail de chacun et la bonne communication avec les autres membres de l'équipe. Si un seul membre de l'équipe est sur le sharepoint jeter tout le monde sous le bus, le système ne fonctionnera pas. Et il semble que vous le faites déjà en lançant .NET et SQL Server sous le bus. 😉

Avec les sites Web, certaines choses assez étonnantes peuvent être faites par la caching. Le langage utilisé importe beaucoup less si vous pouvez mettre les choses en cache efficacement.

Comme jle l'a dit, la caching est la key. En outre, il peut s'agir simplement de la nature de l'interaction de l'user sur le site Web. Je peux me tromper mais je pense que l'exemple, plentyoffish.com, n'est pas un site particulièrement consommateur de ressources / users. Il y a beaucoup de données dans les profils d'users, probablement, mais (dans mon expérience limitée de vérification) le but du site n'est pas de manipuler, de corréler ou de transformer des données, mais simplement de returnner des profils correspondant aux critères de l'user. – mais pas vraiment pour masser ces données en aucune façon.

Comparé aux alternatives, .Net est plutôt efficace. Quoi d'autre est là? PHP? Java? Rubis? Bien sûr, vous pouvez coder votre application web en C ++, mais cela va être une douleur majeure à implémenter et à maintenir. En outre, comme d'autres l'ont mentionné, avec une caching, un réglage de database et des algorithms appropriés, vous pouvez get de très bonnes performances. Beaucoup plus de performance que simplement choisir une langue rapide et écrire du code qui n'est pas réglé.

C'est difficile de répondre avec des détails, mais tous les choix que l'on fait dans le développement de logiciels ne sont pas égaux, même en utilisant le même langage. Plus vous couchez de frameworks, plus vous en retirerez "ce qui count vraiment", et si ce qui count "vraiment" est la performance, la personne qui peut programmer à ce "niveau inférieur" peut faire beaucoup de choses. , beaucoup plus rapide que les gens qui développent des programmes en reconstituant les controls. Parfois, la facilité de développement est plus importante que la vitesse brute, donc ce n'est pas toujours le bon choix pour aller droit à un niveau inférieur – la facilité de maintenir le code est également importante et dépasse parfois les performances brutes.

Une fois, je me suis retrouvé face à face avec un autre consultant qui essayait de décrocher un contrat à 6 numbers pour une grande firme de services financiers, nous vendions tous les deux l'idée d'un système BI / EIS. Il a utilisé la technologie boursouflée et à chaque étape, mais c'était toute la technologie «nouvelle et shinye» dont il était très fier et contenait tous les bons mots à la mode.

J'ai écrit le mien dans asp (asp classic, .net n'était pas encore sorti) et j'utilise des methods de communication SQL Server natives personnalisées écrites, avec toutes les routines codées manuellement pour générer des rapports et d'autres décisions améliorant la performance. Il a utilisé un plugin d'écriture de rapport et des controls plug-and-play pour build son système. J'ai fait toute ma démo sur une ligne commutée 28.8 contre mon server de développement dans mon bureau à 200 miles – son a été fait contre un server de développement beaucoup plus puissant dans la pièce suivante connectée via Ethernet 100Mbit et il était encore beaucoup, beaucoup plus lent.

Quand la démo a été terminée, j'ai dit à mes clients que toute ma démo était faite via une ligne d'access à distance (ils ont supposé que c'était local). Cela a scellé l'accord puisque la plupart des users du système étaient dispersés dans tout le pays et que le haut débit était rare à l'époque.