À trois niveaux d'application de base de données (non-web) en Java - API / technologies qui sont appropriées?

StackOverflow https://stackoverflow.com/questions/3143803

  •  01-10-2019
  •  | 
  •  

Question

Je suis actuellement en phase de recherche pour une petite application de base de données (très).

Il est un organisme de bienfaisance local qui a seulement 3 ou 4 machines clientes qui exécuteront le système - mais pour passer une logique étrangère à l'écart des clients, je penche vers l'aide d'une architecture à trois niveaux (il y a les données qui sont en lecture par constamment mis à jour et, le cas échéant, que le client n'a pas besoin de savoir sur)

i.e.. Client <-> La logique du serveur <-> Base de données

Alors que je suis compétent avec Java lui-même et quelques cadres / bibliothèques, je ne suis pas particulièrement familier avec ce que les cadres pourraient me aider. Il est évident que je vais utiliser JDBC pour la moitié de la base de données, mais la communication entre le client et le serveur est la pierre d'achoppement pour le moment - je ne veux pas vraiment aller partout à proximité des prises brutes, par exemple (surpuissant, ou tout au moins, un autre solution doit exister)

J'ai demandé quelques développeurs que je connais au sujet de leurs opinions sur ce que les API à utiliser, et alors qu'ils ont été très utiles, je ne suis toujours pas sûr où aller. Jusqu'à présent, je l'ai entendu parler de choses RESTful, SOAP, COBRA et tout un tas d'autres technologies. SOAP est le principal qui a attiré mon attention (comme il y a quelques bons exemples d'utilisation avec des applications normales plutôt que juste avec le web) mais je ne suis toujours pas sûr où aller - il ne semble pas particulièrement approprie pour un général app but comme celui-ci (EJB également sauté vers le haut mais j'ai entendu beaucoup de haine visant à ce - est ce mérite)

On se sent comme si pour trouver le «meilleur outil pour le travail je vraiment besoin d'apprendre chacun dans son ensemble les « get »(ce qui est évidemment peu pratique)

Quelqu'un peut-il me donner des indications sur la façon de choisir les API comme ceux-ci (quand je ne les ai pas utilisé avant) ou me donner des informations sur quelques unes communes, ou est-ce vraiment juste un cas d'expérimenter avec beaucoup d'entre eux lequel fonctionne le mieux?

Ou peut-être que je l'ai complètement raté la marque et il y a un cadre qui vise à cette situation exacte sans contre évident?

Merci beaucoup pour toute aide.

EDIT:

Complètement oublié de mentionner ce qu'il fait: Il est terriblement complexe - l'organisme de bienfaisance gère un système de transport, il détient les détails des conducteurs, des clients, des dossiers de kilométrage du conducteur, etc. pour la visualisation et l'édition La seule réelle complexité est livré avec les lecteurs, car les pilotes peuvent être affectés à répéter (en cours) des lecteurs qui pourraient continuer vraisemblablement « pour toujours ». Mais chaque cas d'un disque en cours doit être unique car ils peuvent être annulés ou modifiés individuellement

La principale raison pour laquelle je suis pêche à la ligne pour les trois niveaux est dû au fait d'être un organisme de bienfaisance (avec de nombreux utilisateurs d'ordinateurs bénévoles plus âgés qui ne sont pas terriblement « avertis ») je peux bien être mise à jour de l'interface utilisateur assez fréquemment pour régler les bogues et les bits qui ne sont pas très claires pour les utilisateurs novices. Donc, mon plan est d'obtenir le back-end entre le serveur et DB absolument « pare-balles » d'abord tout, et puis versez tout mon accent sur l'interface utilisateur afin que je puisse continuer à se développer et itérer sans se soucier du back-end (aussi depuis que je serai le développement de pièces à distance, en se concentrant sur les mises à jour côté client est un peu plus simple)

Tous ces attributs crient probablement à « faire un système basé sur le Web » - le problème est ici qu'ils sont après toutes sortes d'intégration délicate avec des applications dont ils ont déjà exécuté, que je ne suis pas convaincu que je peux me faire (correctement ) avec une application web.

Était-ce utile?

La solution

Pour le serveur lui-même, vous aurez besoin d'une sorte de serveur JavaEE.

implémentations communes ici sont GlassFish (la mise en œuvre de référence) et Metro de Sun (qui est livré comme de Java SE 6 ) ou Apache CXF .

implémentations JAX-RS incluent Jersey et Apache CXF .

En ce qui concerne la couche de base de données, JDBC n'est pas votre seul choix. Java a également (JPA, actuellement à la version 2.0).

JPA est généralement utilisé dans les applications J2EE (applications web spécifiquement) pour simplifier la couche de base de données. implémentations communes sont EclipseLink JPA (Oracle TopLink Obsolètes) et Mise en veille prolongée 's Annotations .

Tous ces éléments sont fondés sur diverses normes qui composent JavaEE. Servlet 2.5, JAX-WS 2.0, JAX-RS 1.1 et JPA 2.0

Autres conseils

  

EJB également sauté vers le haut mais j'ai entendu beaucoup   de haine visant à ce - est-ce   mérité?

Il a été entièrement mérité avec les versions 1 et 2 de la spécification EJB. Mais v3 EJB représente une énorme simplification qui les rend carrément agréable à utiliser. Je peux en fait en toute bonne conscience vous recommandons d'utiliser des beans entité au lieu de JDBC manuelle.

En ce qui concerne le protocole de communication, exposant EJB en tant que services SOAP ou REST est simple absurdement dans le plus récent EJB 3.1 spec - il suffit d'ajouter quelques annotations et que vous êtes ensemble

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