Question

Je suis nouveau dans ce concept, donc je me trompe pour l'appeler un "projet multi-module". Dans le logiciel que je fais, il y a une unité distincte avec des entrées et des sorties distinctes. J'ai décidé de le retirer et de l'exécuter en tant que service (Web) distinct car il a d'autres valeurs dans ce mode autonome.

Mais le fait est que maintenant l'application qui était auparavant mélangée avec cette unité doit également s'exécuter autonome. Et cela signifie qu'il devrait y avoir une nouvelle façon de communiquer avec cette unité en appelant ses points de terminaison de service qui ajoutent de nouvelles couches de complexité (sérialisation et désérialisation des données pas si simples dans XML et JSON). Existe-t-il une pratique courante pour cela dans le génie logiciel? Puis-je transmettre les données d'une autre manière?

Le logiciel est écrit dans Scala qui fonctionne sur JVM et peut ou non affecter cette histoire.

Était-ce utile?

La solution

Si vous ne pouvez pas que votre client AP d'origine se connecte à un serveur, je recommanderais la ventilation du module suivant:

  • Module de service avec API Java / Scala
  • Module de service Web qui enveloppe le module de service avec REST / XML / JSON
  • Module client qui appelle directement le module API Java / Scala

Autres conseils

J'ai peur de ne pas pouvoir offrir quoi que ce soit sur le front de Scala, mais en ce qui concerne Java, vous devriez penser que votre nouveau service est dans la couche de service de votre application, tandis que le reste / savon / quelle que soit l'interface à votre service défini dans la couche Web / servlet.

Alors, disons que vous avez un service comme celui qui suit dans votre package com.myco.services:

public interface PersonService {
    public Person createPerson(PersonIdentifier id, PersonType type);
    public Person retrievePerson(PersonIdentifier id);
    public void updatePerson(Person existingPerson);
    public void deletePerson(Person existingPerson);
    public boolean authenticatePerson(String personName, String password);
}

Nous considérerons comme indiqué que vous avez une implémentation PersonServiceIMP de celle-ci qui met à jour votre base de données ou autre chose. Dans votre application sur le même JVM, vous pouvez injecter le PersonServiceImpl dans votre code et appeler directement les méthodes, sans avoir à rassembler ou à désarracher les paramètres.

Dans la couche Web, vous pouvez avoir un PersonServiceController séparé qui est mappé aux URL de votre servlet. Lorsqu'une URL comme "http://myco.com/person/update" est frappée, le corps de la demande peut être transmis au contrôleur comme ça:

public class PersonServiceController {
    private final PersonService personService; // Inject PersonServiceImpl in constructor
    ...

    public void updatePerson(String requestBody) {
        Person updatedPerson = unmarshalPerson(requestBody);
        this.personService.updatePerson(updatedPerson);
    }

    ...
}

Eh bien, c'est à peu près ce que les gens font avec XML et JSON, quel est l'objectif de SOA, pour quoi SOAP a été créé, ainsi que des choses comme JMS, etc.

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