2010-12-08 20 views
0

Je veux développer un site Web interactif dans ASP.Net et ce que je veux dire par interactive, c'est qu'il a une application back-end pour fournir une logique en temps réel (qui ne suit pas le modèle HTTP de Request/Response) fourni avec des pages dynamiques * .aspx avec une base de données SQL Server.Comment un site Web et une application Web communiquent-ils?

Et comment les composants iraient-ils ensemble (en tant que mécanisme de conception et de communication) pour avoir une application évolutive?

EDIT: Ok, l'histoire est comme vous le savez, nous avons tous ont tendance à obtenir quelque chose de plus vital que le modèle HTTP, je veux que mon application principale de travailler persistante en temps réel, par exemple, aurait quelques intervalles de temps pour faire des requêtes sur la base de données. Le design comme je l'imagine est un serveur (tenant un site web ASP.Net, l'application dorsale et la base de données), le design peut devenir plus hybride avec le temps. Le site web est l'interface interactive pour les utilisateurs, le site nécessite des calculs (parfois) intensifs et des requêtes qui sont mieux traitées par l'application back-end, puis l'application livre les informations à encapsuler et les met en format HTML à retourner l'utilisateur finalement.

Des suggestions sur le design? Quelles idées clés pouvez-vous partager pour aller avec une application robuste qui peut être développée itérativement pour faciliter les changements/améliorations futures? Cela peut concerner les niveaux de l'ensemble du projet ou bien préférez-vous utiliser WCF plutôt que des services Web réguliers entre le site Web et l'application dorsale?

+1

Cette question est trop vague actuellement pour obtenir des réponses vraiment significatives. –

Répondre

1

Intéressant. Pouvez-vous élaborer plus sur le flux de la logique dans cette application? Que fait l'application non-web (je suppose qu'elle fonctionne sur le même serveur)? Basé sur la description jusqu'ici, j'imagine un site Web conduit par une base de données SQL et un service de Windows s'exécutant sur cette même machine (pour l'application de logique en temps réel) faisant tout ce qu'il doit faire avec cette base de données. Mais on dirait que vous cherchez une interaction plus directe que cela.

Edit:

Je veux que mon application back-end pour être travail persistant en temps réel, pour exemple, il aurait des intervalles constants pour faire des requêtes sur la base de données.

Cela pourrait (devrait, probablement) être un service Windows ou un autre toujours sur l'application qui interagit simplement avec la base de données. Il et le site n'ont pas besoin de connaître l'existence de l'autre. Le site Web ne sert que les données qui sont placées/manipulées dans la base de données par ce processus.

les besoins du site (parfois) calculs et des requêtes intensives qui mieux être pris en charge par l' application back-end

traitement asynchrone comme celui-ci est souvent très utile pour un site Web, car pas tout peut être fait pendant qu'un navigateur attend patiemment.La conception varie fortement sur la nature intuitive de ce que vous faites, mais pour commencer, je suggère quelque chose comme ceci:

  1. L'utilisateur "initie" un "calcul" sur le site Web. Que ce soit la mise en place de certaines valeurs, le téléchargement d'un lot de choses à traiter, etc. dépend entièrement de ce que vous faites. Le point principal est que l'utilisateur le démarre.
  2. Les informations nécessaires au processus pour faire sa magie sont conservées dans la base de données et l'utilisateur est informé que le processus a été mis en attente de traitement. L'utilisateur peut maintenant faire d'autres choses.
  3. L'application dorsale (ou plusieurs applications) interroge périodiquement la base de données (toutes les minutes, toutes les 5 minutes, etc.) ou, dans le cas d'un fichier "batch" téléchargé, peut utiliser quelque chose comme FileSystemWatcher de nouvelles choses à faire et les fait. Utilisez le multithreading ou tout ce dont vous avez besoin pour y arriver, mais le point principal est que c'est un processus "hors ligne" que le site n'attend pas.
  4. Lorsque le processus est terminé, un indicateur est défini dans la base de données (sur l'enregistrement en cours de traitement ou un enregistrement "message" dans la "boîte de réception" de l'utilisateur) indiquant que le processus est terminé.
  5. L'interface utilisateur du site Web comporte un indicateur qui, chaque fois qu'il est chargé, vérifie si les indicateurs susmentionnés indiquent à l'utilisateur qu'un processus en attente a été terminé et qu'il est prêt à être visualisé.

Le processus back-end pourrait en outre envoyer un e-mail à l'utilisateur au moment où un processus est terminé, etc.

Est-ce que l'essentiel de ce que vous pensez? Ou l'interaction doit-elle être plus directe pour une raison quelconque?

+0

J'ai édité mon post, pouvez-vous expliquer plus? –

+0

@LordCover: réponse mise à jour en conséquence. – David