Question

Je parle des applications d'entreprise classiques. Généralement accueilli dans une sorte de serveur d'application ou d'un conteneur. Rien d'extraordinaire, juste des entités, des services, Présentation / interface utilisateur et le stockage relationnel.

Chaque fois que je vois le mot-clé synchronized (soit sur des méthodes ou des blocs) dans une telle application, je suis très méfiant. À mon avis, c'est soit un signe pour ne pas comprendre les concepts architecturaux de base (par exemple qu'un modèle de domaine ne sont pas partagées entre plusieurs clients) ou pire encore un signe que l'architecture est en fait très bâclée.

Partagez-vous mon état d'esprit ici? Ou suis-je complètement hors piste? Avez-vous des cas d'utilisation où la synchronisation est réellement nécessaire dans une application classique de l'entreprise?

Était-ce utile?

La solution

Je suis d'accord avec vous pour le code de logique métier, mais dans une application d'entreprise vous avez également le code technique et parfois vous besoin d'une synchronisation pour l'état « technique » partagée. Le mot-clé synchronisé peut être utilisé pour cela. (Vous pouvez également relayer sur la variable atomique, ou utiliser quelque chose en dehors de votre application comme une séquence de DB pour partager l'état technique ...)

Si vous voulez créer le numéro de facture séquentielle - sans trous dans la séquence - vous avez besoin d'un moyen de partager un état, et une façon de synchroniser ...

Autres conseils

Je suis d'accord avec vous.

Je pense que la synchronisation est important lors de la conception des composants thread-safe, mais il est normalement nécessaire dans le code « logique métier ».

En introduisant l'état partagé, vous pouvez augmenter les performances, mais vous diminuez l'évolutivité de votre application pour l'avenir.

Si une conception simultanée est nécessaire, il peut être géré de manière transparente pour le développeur d'applications, par exemple en utilisant un serveur d'application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top