IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Optimisation - Reactor, WebFLux, y a-t'il un intérêt à mettre en place HTTP2 ?


Sujet :

Spring Web Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Optimisation - Reactor, WebFLux, y a-t'il un intérêt à mettre en place HTTP2 ?
    Bonjour,
    Je suis en phase d'apprentissage sur la partie réactive de Spring 5, je mets en pratique ce que j'apprends en codant une API réactive.
    Cette API me servira pour une petite application web de commandes dans les restaurants.
    Voici ici un bout de code dont le but est de fournir des images

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    @RestController
    @RequestMapping("/images")
    @RequiredArgsConstructor
    public class ImageController {
        @Autowired
        private ImageRepository images;
    	private final ReactiveGridFsTemplate gridFsTemplate;
     
        @PostMapping(path = "/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        public Mono<ResponseEntity<Void>> upload(@RequestPart("file") Mono<FilePart> fileParts,@RequestParam("description") String description) {
            return fileParts
                .flatMap(part -> this.gridFsTemplate.store(part.content(), part.filename()))
                .flatMap(id -> this.images.save(Image.builder().description(description).gridId(id.toHexString()).build()))
     			.map( r -> ResponseEntity.ok().<Void>build());
    	}    
     
        @GetMapping("/download/{id}")
        public Flux<Void> read(@PathVariable String id, ServerWebExchange exchange) {
           return this.gridFsTemplate.findOne(query(where("_id").is(id)))
                .flatMap(gridFsTemplate::getResource)
                .flatMapMany(r -> {
    				exchange.getResponse().getHeaders().setContentType(MediaType.IMAGE_PNG);
    				exchange.getResponse().getHeaders().setCacheControl(CacheControl.maxAge(Duration.ofSeconds(3600)).cachePrivate());		
    				return exchange.getResponse().writeWith(r.getDownloadStream());
    			});
        }
     
        @GetMapping("/find/")
    	public Flux<Image> getAllAll()
    	{
    		return images.findAll();
    	}
     
    	@GetMapping("/find/{idItem}")
    	public Mono<Image> getById(@PathVariable String idItem){
    		return images.findById(idItem);
    	}
     
    	@DeleteMapping("/delete/{idItem}")
    	public Mono<ResponseEntity<Void>> delete(@PathVariable String idItem)
    	{
    		return images.deleteById(idItem)
    				.map( r -> ResponseEntity.ok().<Void>build())
                    .defaultIfEmpty(ResponseEntity.notFound().build());
    	}
     
    	@DeleteMapping("/deleteGrid/{idGrid}")
    	public Mono<ResponseEntity<Void>> deleteGrid(@PathVariable String idGrid)
    	{
    		return gridFsTemplate.delete(query(where("_id").is(idGrid)))
    				.map( r -> ResponseEntity.ok().<Void>build())
                    .defaultIfEmpty(ResponseEntity.notFound().build());
    	}
    }
    J'ai plusieurs questions dont je ne trouve pas facilement de réponse.
    • Y a-t-il un intérêt à utiliser HTTP2 et si oui comment faire ? J'ai essayé avec ceci https://armeria.dev/docs/advanced-sp...x-integration/ mais cela ne marche pas
    • Est-ce qu'il y a des aberrations dans le code?
    • Cela en vaut la peine d'utiliser une approche Réactive pour ce type d'application ?
    • Angular est-il un bon choix pour la partie Front-end, quand est-il du SEO ?
    • JWT est-il un bon choix pour la sécurité ?


    Merci de vos réponses !

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Citation Envoyé par L.Patrick Voir le message
    J'ai plusieurs questions dont je ne trouve pas facilement de réponse.
    • Y a-t-il un intérêt à utiliser HTTP2 et si oui comment faire ? J'ai essayé avec ceci https://armeria.dev/docs/advanced-sp...x-integration/ mais cela ne marche pas
    • Est-ce qu'il y a des aberrations dans le code?
    • Cela en vaut la peine d'utiliser une approche Réactive pour ce type d'application ?
    • Angular est-il un bon choix pour la partie Front-end, quand est-il du SEO ?
    • JWT est-il un bon choix pour la sécurité ?
    Bonjour,

    Celà fait beaucoup de questions dans un post :-)

    Il y à certainement un intérêt à utiliser HTTP2. Mais n'oubliez pas que "l'optimisation prématurée est la source de tous les maux" (Donald Knuth). Si votre service est surchargé ça vaut peut-être la peine d’investiguer cette piste. Mais si l'intégration avec le framework n'en est qu'à ces débuts, il est plus sage d'attendre un peu.

    Je ne vois pas d’aberrations dans votre code non.

    Nous avons juste un contrôleur qui gère des images, c'est un peu faible pour juger du "type d'application". Mais la programmation réactive et les concepts qui s'y rattachent se retrouvent partout et de plus de plus. Ça ne peux donc pas faire de tort d'utiliser cette approche.

    Angular, React, Vue, Svelte, {Autre}, ... les "grands" frameworks frontend sont tous des bons choix. La décision devrait être orientée par votre environnement et vos préférences. Mais Angular est un framework qui me semble avoir une bonne réputation auprès des développeurs Java. Concernant le SEO, tous les grands frameworks possèdent des options pour palier à ces problèmes.

    JWT à le vent en poupe, mais il est utilisé pour identifier un utilisateur. Utiliser JWT n’empêchera pas d'avoir des failles de sécurités dans votre système. C'est juste un moyen beaucoup plus sur et efficace qu'une session pour identifier un utilisateur.



    Si votre objectif est d'apprendre ces différentes choses alors dites vous que c'est le bon choix. Si vous faites celà pour décrocher un nouveau job, je suppose que c'est la stack que vous visez et, donc, que c'est le bon choix.
    Si votre objectif est de devenir le roi des commandes alors il serait peut-être plus sur de miser sur une stack que vous maîtrisez pour pouvoir faire évoluer votre produit rapidement et gagner des parts du marché. Rien ne vous empêche de réécrire plus tard avec une stack plus cohérente/récente/performante lorsque vous serez plus à l'aise dans votre domaine.

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  2. Réponses: 12
    Dernier message: 15/11/2010, 14h26
  3. [VB6] [BDD] Optimisation de l'accès aux données
    Par LadyArwen dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/01/2003, 13h27
  4. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 08h47
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo