En utilisant MVC (Modèle-Vue-Contrôleur) dans une architecture Client-Serveur
Je suis en train de choisir un modèle de conception pour une application que je suis en développement. L'application est principalement basé sur une architecture Client-Serveur où le Client fondamentalement, lit et écrit des données sur le Serveur; ce n'est pas une Web-application toutefois, Le client devra installer le logiciel exécutable, puis d'interagir avec une interface graphique afin de communiquer avec le Serveur (qui sort sur une autre machine) via un protocole internet.
Depuis l'application est basée sur la forte interaction avec une interface graphique, je pensais à l'aide du modèle de conception MVC, le truc c'est que je vais avoir du mal à décider quelle partie doit exister sur le Serveur et côté Client. En d'autres termes, est-il normal d'avoir de la Vue (j'.e de la Limite GUI de classes et d'objets) et de la Contrôleur sur le côté Client, tout en laissant la Modèle (j'.e les objets de l'Entité) sur le côté Serveur, est-ce viable ou valide manière d'appliquer le modèle MVC ? Je vais dans la bonne direction ?
Est-ce même possible ? Je veux dire est-ce que ceux de Limite et de Contrôle des classes d'exploiter et de les exécuter sans avoir ou d'accéder à des classes de modèles sur la même machine ou un processus ?
Devrais-je avoir l'ensemble de la chose (Le Modèle, la Vue et le Contrôleur de classes) sur le côté Client et ensuite il suffit de communiquer avec le Serveur de base de données via le protocole ?
Des suggestions ou des commentaires seraient les bienvenus.
OriginalL'auteur hesperus | 2011-10-30
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de façons de mettre en œuvre MVC dans un contexte client-serveur de configuration. En général, le plus de choses que vous mettez dans le client le plus "riche" ou "gros" de votre application devient. Donc, si vous décidez sur l'utilisation de MVC, la vraie question devient alors: comment les riches ne je veux que mon application?
Aussi, vous pouvez avoir plusieurs instances de la MVC de travailler ensemble dans une application distribuée sur le client et le serveur.
Certaines des choses que je regarde:
réseau: la quantité de données qui doit faire la navette entre le client et le serveur? Combien de demandes une demande généralement à envoyer? (trop peut saturer le réseau ou causer d'autres problèmes)
réactivité: la réactivité peut vous obliger à le mettre plus dans le client
de sécurité: tout ce qui va sur le fil peut être moins sûr
performance: si vous avez besoin de haute performance, vous pouvez avoir besoin de composants sur le serveur
des charges: vous pouvez décider de mettre plus de composants côté client afin de décharger le serveur, au lieu de clustering votre backend par exemple
etc.
OriginalL'auteur eljenso
Vos pensées sur l'utilisation de MVC est tout à fait juste. Cela vous aidera de-couple de choses et vous donner plus de contrôle sur les classes.
Je dirais tout en conservant la vue sur le côté client. Je voudrais garder le contrôleur et le modèle de classes sur le serveur. Le contrôleur est le composant qui est difficile. On peut facilement être tenté de le garder sur le client, les raisons de la mettre sur le serveur: les interactions avec les DAOs, les interactions avec les classes de Modèle de gestion d'erreur et le contrôle de flux (d'écrans/actions).
Une manette sur le côté client peut s'avérer facile à développer, mais en fin de compte vous avez besoin pour passer des changements (comme on appuie sur un bouton, clics, etc etc) pour le serveur. En outre, un contrôleur sur le côté client serait alors lentement commencer à vous pousser vers plus de et plus de classes sur le côté client.
OriginalL'auteur Ravi Bhatt
Après beaucoup de R&D, j'ai trouvé de meilleures performances avec la majorité du contrôleur et la vue sur le client, et aussi une petite partie de contrôleur et le modèle sur le serveur. Vous pourriez alors dire que le contrôleur a été divisé entre le client et le serveur - l'avantage étant que si le contrôleur besoins des actifs qui sont déjà dans le cache du client, en effet, il évite le trafic réseau, ce qui est important de faire les choses vite. Voici un exemple: http://www.youtube.com/watch?v=g73GcQqrDeA
Fondamentalement, j'ai trouvé que la performance était mauvais, si l'utilisation de serveur-côté moteurs de template ou tout ce qui peut pour le cache du navigateur, de sorte que tout le code html doit être de 100% de l'électricité statique. À l'aide de jQuery uniquement, hors de la boîte, il fournit vraiment utile en cas de liaison des installations que vous pouvez déléguer à une Classe de Contrôleur qui est également mis en cache par le navigateur. En fin de compte, les seules données va-et-vient est JSON - il suffit de prendre soin dans la fabrication de votre serveur sécurisé, encodage/de crypter tous important les identificateurs, assurez-vous qu'ils ne sont pas les mêmes pour le même utilisateur, entre les sessions, etc...
OriginalL'auteur Julain
Vous ne pouvez pas vraiment s'appliquer traditionnel MVC client-serveur de l'architecture. Raisons:
Il ya beaucoup plus de raisons, mais je pense que le ci-dessus illustre le point.
Il existe différentes façons de lutter contre ce, de recevoir quelque chose de très proche de MVC peut impliquer un modèle de procuration sur le côté client. Pour le plus abstrait/flexible de commande basé agent-comme l'architecture.
OriginalL'auteur Izhaki