Domanda

Sto parlando di applicazioni aziendali classiche. Tipicamente ospitato in un certo tipo di applicazione-server o contenitore. Niente di speciale, solo le entità, i servizi, Presentazione / UI e lo stoccaggio relazionale.

Ogni volta che vedo la parola synchronized (sia sui metodi o per blocchi) in una tale applicazione ottengo molto sospetto. A mio parere questo è sia un segno per non aver capito i concetti architetturali di base (ad esempio, che un modello di dominio non è condivisa tra diversi client) o peggio ancora un segno che l'architettura è in realtà molto pasticciato.

Lei condivide la mia mentalità qui? O sto completamente fuori strada? Avete casi d'uso in cui è realmente necessario, la sincronizzazione in un'applicazione enterprise classico?

È stato utile?

Soluzione

Sono d'accordo con te per il codice della logica di business, ma in un'applicazione enterprise hai anche sigla tecnica ed a volte avete bisogno di qualche sincronizzazione per stato condiviso 'tecnica'. La parola chiave sincronizzato può essere utilizzato per questo. (È anche possibile trasmettere sulla variabile atomica, o utilizzare qualcosa al di fuori l'applicazione come una sequenza di DB per condividere lo stato tecnico ...)

Se si desidera creare disegno di legge numero sequenziale - senza buchi nella sequenza - è necessario un modo per condividere qualche stato, e un modo per sincronizzare ...

Altri suggerimenti

Sono d'accordo con te.

Credo che la sincronizzazione è importante quando si progettano componenti thread-safe, ma non è normalmente necessario in codice "business logic".

Con l'introduzione di stato condiviso è possibile aumentare le prestazioni, ma si stanno diminuendo la scalabilità dell'applicazione per il futuro.

Se una progettazione simultanea è necessario può essere gestito in modo trasparente allo sviluppatore di applicazioni, per esempio utilizzando un application server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top