Quel est le modèle de conception hexagonale
J'ai regardé ceci https://plus.google.com/events/ci2g23mk0lh9too9bgbp3rbut0k
Ils mentionnent un terme que je ne connais pas
Quel est le modèle de conception hexagonale ?
5 réponses
Depuis http://alistair.cockburn.us/Hexagonal + architecture et https://github.com/jschairb/sandbox/wiki/HexagonalArchitecture
L'Architecture hexagonale est une architecture définie en établissant un périmètre autour du domaine de votre application et établissement adaptateurs pour les interactions d'entrée/sortie. En établissant cet isolement couche, l'application devient pas au courant de la nature des choses il interagit avec.
Créez votre application à travailler sans interface utilisateur ou une base de données donc vous pouvez exécuter des tests de régression automatisés contre l'application, travailler lorsque la base de données devient indisponible, et lier les applications ensemble sans aucune intervention de l'utilisateur. - Alistair Cockburn
Faites-vous référence au modèle de conception hexagonale?
Intention du modèle de conception Hexagonale
Permet à une application d'être également pilotée par des utilisateurs, des programmes, des tests automatisés ou des scripts batch, et d'être développée et testée indépendamment de ses éventuels périphériques d'exécution et bases de données.
Lorsque des événements arrivent du monde extérieur sur un port, un adaptateur spécifique à la technologie le convertit en un appel ou un message de procédure utilisable et le transmet à l'application. L'application est parfaitement ignorant de la nature du périphérique d'entrée. Lorsque l'application a quelque chose à envoyer, elle l'envoie via un port à un adaptateur, ce qui crée les signaux appropriés nécessaires à la technologie de réception (humaine ou automatisée). L'application a une interaction sémantiquement saine avec les adaptateurs de tous les côtés de celui-ci, sans connaître réellement la nature des choses de l'autre côté des adaptateurs.
Version de sauvegarde de l'article ici : https://staging.cockburn.us/hexagonal-architecture/
Cela ressemble plus à une conception globale du système. Vous voulez essentiellement que votre code soit également amical pour tous les arrivants.
Pour prendre en charge que, par exemple, les services web sont conformes aux normes et généralement, universellement, prennent en charge JSON. Pourquoi? Webclients viennent sous toutes les formes afin de suivre les normes permet à vos clients d'intégrer facilement. JSON va plus loin: il rend la suppression d'une interface utilisateur sur le dessus indolore.
D'un point de vue technologique, vous ne pouvez pas créer totalement un service à l'épreuve du futur. Juste assurez-vous que l'Objectif du service est clair/propre et fidèle à son but. Si cette fin ne fait plus suite, vous avez besoin de(un) nouveau (s) service (s)
C'est plus facile à dire qu'à faire. Lorsque vous commencez à vous appuyer sur votre patron pour compromettre ces principes pour des raisons d'opportunité, vous faites ce que vous devez pour le retirer de votre dos. Mais, le hack est fait et généralement le résultat est que le service prend une logique sans rapport qu'il finit par posséder en permanence.
Si vous pouvez conduire un principe dans la conception de votre système c'est ceci: ouvert pour extension. Fermé pour modification
D'après ce que je comprends, c'est un peu un mot à la mode pour la pratique générale du génie logiciel de la séparation des préoccupations. Il indique essentiellement que votre logique d'e/s doit être cachée de votre logique de domaine. Ainsi, vous core business logic peut être adapté à différents "utilisateurs". C'est très étroitement lié au modèle MVC.
Je pense que le nom "Architecture hexagonale" vient d'être inventé par le présentateur. Et certaines personnes le ramassent.
Forme Octogonale
for (int i = 1; i <= 17; i++) {
for (int j = 1; j <= 17; j++) {
if (i == 1) {
if (j > 6 && j < 12)
mtextView.append("* ");
else
mtextView.append(" ");
} else if (i > 1 && i < 7) {
if (j == 9 - (i + 1) || j == 9 + (i + 1))
mtextView.append("*");
else
mtextView.append(" ");
} else if (i >= 7 && i <= 11) {
if (j == 1 || j == 17)
mtextView.append("*");
else
mtextView.append(" ");
} else if (i >= 12 && i <= 16) {
if (j == i - 10 || j == 18 - (i - 10))
mtextView.append("*");
else
mtextView.append(" ");
} else if (i == 17) {
if (j > 6 && j < 12)
mtextView.append("* ");
else
mtextView.append(" ");
}
}
mtextView.append(Html.fromHtml("<br>"));
}