Ich habe eine Client-Server-Anwendung gestartet. Zuerst habe ich natürlich zwei Projekte in Eclipse, zwei Quellcodeverwaltungs-Repositories usw. erstellt. Aber ich sehe schnell, dass zwischen den beiden ein gemeinsamer Code liegt, der wahrscheinlich von der gemeinsamen Nutzung profitieren würde (im selben Projekt oder in einer gemeinsam genutzten Bibliothek) ) anstatt zu kopieren.
Außerdem habe ich Test-getriebene Entwicklung gelernt und versucht, und es scheint mir, dass es einfacher wäre, basierend auf realen Client-Komponenten zu testen, als eine riesige Menge Code einzurichten, nur um etwas zu verspotten , wenn der Code wahrscheinlich hauptsächlich im Client ist. In diesem Fall scheinen Client und Server in einem Projekt durch Root-Pakete (org.myapp.client. * Und org.myapp.server. , vielleicht org.myapp.shared. auch)
Meine größte Sorge beim Zusammenführen von Client und Server ist jedoch die Sicherheit; Wie stelle ich sicher, dass die Serverelemente des Codes den Computer eines Benutzers nicht erreichen? Wenn Eclipse eine JAR bündelt, muss ich die Server-spezifischen Bits auswählen und hoffe, dass ich keine vermisse, oder?
Besonders, wenn Sie selbst Client-Server-Anwendungen schreiben (und insbesondere in Java, obwohl dies zu einer sprachunabhängigen Frage werden kann, wenn Sie Ihre Erfahrung in anderen Sprachen mit anderen teilen möchten), welche Art von Trennung Halten Sie zwischen Ihrem Client- und Servercode? Sind sie nur in verschiedenen Paketen / Namespaces oder ganz anderen Binaries, die Shared Libraries verwenden, oder etwas ganz anderes? Wie testen Sie den Code zusammen und werden separat geliefert?
Weder. Es sollte 3 sein. (Allgemein, Client und Server) Es müssen jedoch nicht unbedingt drei "Projekte" sein. Mit Maven erstelle ich drei Submodule in einem Masterprojekt. Sie können etwas ähnliches mit Ant tun.
Eine Menge davon hängt von Ihrer spezifischen Implementierung ab, aber ich finde normalerweise, dass Sie mindestens drei Assemblies (Binärdateien) haben, die mit einem Projekt wie diesem erstellt werden.
Bei dieser Vorgehensweise haben Sie Ihre freigegebenen Elemente, aber Sie stellen sicher, dass serverspezifische Elemente niemals in einer Verteilung enthalten sind, die an die Clientarbeitsstationen gesendet wird.
Ich habe festgestellt, dass mindestens ein Projekt pro abgeschlossener Entität (Serverbereitstellung, Clientbinär usw.) gut mit z. Hudson. Dann können Sie Code in einem Basisprojekt teilen, das für alle verfügbar ist.
Tags und Links language-agnostic java client-server