2009-08-19 8 views
0

Contexte: Je suis un développeur d'applications Web intermédiaire travaillant sur la plate-forme .Net. La plupart de mon travail a été défini assez bien pour moi par mes pairs ou supérieurs et je n'ai aucun problème à suivre les instructions et à faire le travail.Questions d'architecture Web App

La tâche à accomplir: Récemment, un vieil ami m'a demandé de refaire son application Web à partir de zéro. Son application est extrêmement archaïque et il est submergé par la rupture tout le temps. L'application en question est une application d'inventaire/CRM et actuellement chaque client nécessite une nouvelle installation de l'application (généralement réalisée en le déployant sur un domaine différent sur le même serveur et en pointant vers une nouvelle base de données).

Actuellement, si un client veut des modifications aux formulaires tels que des champs supplémentaires, de nouvelles fonctionnalités, etc., mon ami entre et ajoute manuellement ces champs aux formulaires, scripts, bases de données, etc .. En conséquence toutes les installations de cette application sont unique. Il n'y a aucun référentiel source unique et aucune version unique de cette application. Généralement, de nouvelles fonctionnalités sont ajoutées aux autres sites, mais cela se fait sur une base individuelle par site.

Je vais aborder cela de façon très modulaire. Au départ, je vais coder un module qui va interroger un service web externe pour certaines données, les afficher et les stocker, et les mettre à jour périodiquement automatiquement. Le prochain module sera probablement pour stocker et afficher des données d'inventaire. De cette façon, je veux dupliquer au fil du temps l'ensemble des fonctionnalités actuelles de son application 100% mais le faire de façon incrémentielle.

Les millions de Questions Dollar

  1. Je veux faire l'application utilisateur ont champs de formulaire configurables. L'utilisateur devrait être en mesure d'aller à une page admin , créer une nouvelle page de formulaires d'une certaine catégorie , puis spécifier quels champs il veut là-bas. Il pourrait dire « créer un nouveau champ texte appelé Item # et en faire une exigence » et qui se stockés quelque part. Tous les formulaires seront rendus dynamiquement à l'écran en fonction sur ce que l'utilisateur a configuré. Est- ce un bon moyen de faire le problème de ne pas avoir une idée de ce que les utilisateurs veulent voudraient dans un formulaire? et ainsi être en mesure de stocker et afficher formes de données de toute sorte? Quel sorte de modèle de design dois-je suivre ici? Je suis familier avec asp.net et le .net framewor Je suis familier avec asp.net et je suis familier avec asp.net et le k en général et avoir une connaissance décente de javascript, html, silverlight, jquery, C#, etc etc. Je peux me frayer un chemin autour de web applications dans le bon sens, mais je ne suis pas sûr de ce genre de cadre ou technologie Je devrais utiliser pour accomplir cette tâche . Est-ce que ASP.net 3.5 webforms serait le chemin à parcourir? ou devrais-je regarder dans ASP.NET MVC? Dois-je utiliser jquery et ajax pour découplage complet de frontend et backend? ou sera une page asp.net normale avec quelques éclaboussures d'ajax jeté dans le travail avec un codebehind être l'ordre du jour?

Juste à la recherche de conseils généraux avant de commencer.

Je pense actuellement à utiliser des formulaires web ASP.NET 3.5, jquery pour l'animation client, l'interface utilisateur, la manipulation et la validation des données, et sqlserver + un serveur web .net ou wcf pour backend.

Votre conseil est très apprécié, comme toujours.

Répondre

2

J'ai récemment mis en place un système de commerce électronique en marque blanche pour une compagnie d'assurance qui permettait à chaque partenaire de choisir ses propres champs de saisie, écrans et d'ordonner le flux de l'application en fonction de ses besoins.

Bien que ce ne fût pas une science de fusée, cela ajoutait de la complexité et augmentait le temps de développement.

Considérer l'aspect de la configuration de l'utilisateur très attentivement Avec le recul, mon client et ses clients à leur tour, aurait été heureux avec un système plus rigide. En ce qui concerne le côté technique de votre question, j'ai développé mon projet dans VS2005, en utilisant des webforms et webservices asp.net avec un backend SQL Server, donc la pile que vous regardez est certainement capable de fournir un produit fonctionnel . ASP.net MVC va presque certainement aider dans la mesure où la testabilité va. La plus grande chose que je changerais maintenant si je devais recommencer serait de remplacer les webservices intermédiaires par des services basés sur des messages en utilisant nServiceBus, MassTransit ou similaire. Bien que les services Web fonctionnent bien, la communication basée sur les messages devrait être plus rapide et plus fiable. Enfin, avant de commencer à coder, assurez-vous de comprendre la fonctionnalité du système actuel à l'intérieur et à l'extérieur. Si le nouveau système ne fait pas quelque chose que l'ancien système a fait, il sera tout de suite évident pour les utilisateurs finaux.

+0

Comment avez-vous géré le "permet à chaque partenaire de choisir son propre ensemble de champs de saisie, d'écrans, et de commander le flux de l'application en fonction de ses besoins individuels"? –

+2

J'avais des tables dans la base de données pour les flux, les formulaires, les contrôles et les éléments de contrôle qui étaient organisés en ensembles pouvant être affectés à chaque client final. Chaque formulaire Web a hérité d'une classe qui contenait le code pour extraire la configuration de la base de données et créer le contenu dans le bon ordre et le charger dans un contrôle de répéteur. Ensuite, lorsque l'utilisation appuyée continue, une autre méthode a traversé la collection de contrôles en sauvegardant les valeurs à la base de données. Enfin, il vérifie la configuration du flux dans la base de données, charge le formulaire suivant et recommence la construction du contenu. – JustABitOfCode