2009-06-10 6 views
4

Une variété d'applications, comme Firefox, Fring, Skype, fonctionnent sur une variété de plateformes. Comment gèrent-ils leur code? Ont-ils une interface utilisateur différente pour différentes plates-formes? Comme dans, Firefox doit utiliser Cocoa sur Mac, WinForms ou équivalent sur Windows, équivalent QT sous Linux. Comment est-il possible que le même code source affiche l'interface utilisateur diff simplement en compilant une cible diff?Architecture logicielle pour développer des applications qui s'exécutent sur plusieurs plates-formes

Ils vérifient qu'une correction de bogue dans une version (comme un problème de sécurité) est corrigée dans toutes les versions, ce qui signifie que le code n'est dupliqué nulle part. Alors, comment l'architecture sous-jacente est-elle conçue?

Répondre

3

Dans mon expérience ce qui m'a aidé à des problèmes multiplateformes sont:

  • Code bibliothèque dans une langue qui est portable sur les plates-formes tout que vous devez développer sur, dans mon cas C/C++.
  • Intégration continue avec les tests unitaires afin que vous puissiez détecter tout changement de code de rupture dès que possible.
  • Bibliothèques très modulaires qui essayent d'avoir le moins de dépendances possible.
  • N'ayez pas peur d'avoir des implémentations de plates-formes spécifiques de tout concept dont vous avez besoin pour la vitesse/fonctionnalités/quoi que ce soit. Il existe plusieurs façons de cacher le fait que vous utilisez du code spécifique à la plate-forme dans votre corps principal de code.
  • L'utilisation de motifs de conception peut vous aider à obtenir les résultats souhaités. Il y a aussi d'autres directeurs comme DRY et SOLID qui aident aussi. Ce sont plus de bons logiciels que d'être spécifiques à plusieurs plates-formes.

Certains problèmes de conception auxquels vous pouvez être confrontés dépendent fortement de ce que vous essayez d'obtenir. Si l'interface utilisateur n'est pas une affaire, l'utilisation d'une lib comme QT peut être le chemin à parcourir. La même chose vaut pour n'importe quel aspect de votre application. L'utilisation de bibliothèques open-source ou payantes aide à réduire le temps de développement, ce qui peut être une bonne chose. Lorsque votre application est destinée à briller, alors vous devriez vraiment coder cette partie vous-même.

Je ne peux pas parler beaucoup sur les choix de l'interface utilisateur que la plupart des plates-formes que je traite sont si différentes que vous devez re-concevoir la couche de l'interface utilisateur à chaque fois. Le fait que les bibliothèques et les couches de moteur principales soient portables entre les plates-formes facilite la tâche.

1

La solution de base consiste à concentrer les différences dans une petite partie de l'application. Par exemple, FireFox a XulRunner dans les coulisses.

Vous pouvez également utiliser des structures existantes pour cela. Si vous utilisez Qt sous Linux, vous n'irez pas sur WinForms pour Windows. Vous utiliseriez toujours Qt, et cela fonctionne aussi sur Mac. En conséquence, des choses comme les bogues de sécurité se trouvent dans la couche spécifique à la plate-forme ou dans la couche générique. Dans le premier cas, vous devez les réparer uniquement sur la plate-forme affectée. Dans le second cas, lorsque vous corrigez le bug, il est réparé partout.

Questions connexes