Java 配置存储选择
Java config storage choice
首先,我是新来的作家,但不是 reader。我多年来一直使用 Whosebug 找到了很多有用的信息,但现在我决定加入社区。
现在我的问题是 Java 配置存储选择。
应用程序
目前我正在为自己做一个 Java (FX) 项目。 Java 应用程序将在一些台式机上使用。该应用程序的目标是通过 SSH(例如服务器)为 on/off Linux 设备供电。
我想让用户添加 5/10 设备,其中包含设备信息(名称和 IP)、开机命令的 SSH 凭据和关机命令的 SSH 凭据(用户、主机) 、密钥、端口、超时、命令)。
会有一个 JavaFX GUI,这个 GUI 会有一个菜单栏,其中有一个名为 Devices 到 select 的菜单,添加、编辑或删除设备。在 GUI 的中心会有 2 个按钮,它们将用于电源 on/off 命令(或开关)。
设计
- 编程语言是Java。
- GUI 基于 JavaFX。
- 对于强大的 on/off 命令,我使用命令设计模式。
存储空间
我尝试了不同的存储选项(SQLite、Properties 和 XML)来存储设备信息。但是我没有找到哪个选项最适合这种情况。
感觉 SQLite 存储空间太大了。
如果我选择单独的 properties/XML 存储,那么将有大约 5/10 个不同的 properties/XML 文件。此外,应用程序必须在这些文件之间切换。
如果我决定使用多个属性文件,文件的结构将如下所示:
device.name = Server
device.host = host.com
power_on.key = /path/to/rsa
power_on.user = user
power_on.host = host.com
power_on.port = 22
power_on.timeout = 10000
power_on.command = execute power on command
power_off.key = /path/to/rsa
power_off.user = user
power_off.host = host.com
power_off.port = 22
power_off.timeout = 10000
power_off.command = execute power off command
如果我决定使用多个 XML 文件,文件的结构将如下所示:
<device>
<name>Server</name>
<host>host.com</host>
<commands>
<powerOn>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power on command</command>
</powerOn>
<powerOff>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power off command</command>
</powerOff>
</commands>
</device>
如果我决定使用一个属性文件,该文件的结构将如下所示:
# Device 1
server.device.name = Server
server.device.host = host.com
server.power_on.key = /path/to/rsa
server.power_on.user = user
server.power_on.host = host.com
server.power_on.port = 22
server.power_on.timeout = 10000
server.power_on.command = execute power on command
server.power_off.key = /path/to/rsa
server.power_off.user = user
server.power_off.host = host.com
server.power_off.port = 22
server.power_off.timeout = 10000
server.power_off.command = execute power off command
# Device 2
pc.device.name = PC
pc.device.host = host.com
pc.power_on.key = /path/to/rsa
pc.power_on.user = user
pc.power_on.host = host.com
pc.power_on.port = 22
pc.power_on.timeout = 10000
pc.power_on.command = execute power on command
pc.power_off.key = /path/to/rsa
pc.power_off.user = user
pc.power_off.host = host.com
pc.power_off.port = 22
pc.power_off.timeout = 10000
pc.power_off.command = execute power off command
如果我决定使用一个 XML 文件,文件的结构将如下所示:
<devices>
<device>
<name>Server</name>
<host>host.com</host>
<commands>
<powerOn>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power on command</command>
</powerOn>
<powerOff>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power off command</command>
</powerOff>
</commands>
</device>
<device>
<name>PC</name>
<host>host.com</host>
<commands>
<powerOn>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power on command</command>
</powerOn>
<powerOff>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power off command</command>
</powerOff>
</commands>
</device>
</devices>
问题
我的问题是;哪种存储选择(and/or 设计模式)最适合这种情况?这让我真的很困惑,因为我尝试了不同的东西,但还没有任何好的解决方案。
我希望你们能帮我解决这个问题。欢迎所有反馈、建议等。提前致谢!
您有多种选择。正如您提到的,属性文件将是最简单的方法。不需要额外的库,一切都已经在 JDK.
另一方面,如果您想要更多,可以使用
- YAML
- JSON
- XML
- 完全定制的东西
如果您的配置经常被手动编辑,我会反对 XML。我个人的偏好是将配置存储在单个 json 文件中,每个设备都有自己的字典。 JSON 也有很好的编辑器和工具支持。
首先,我是新来的作家,但不是 reader。我多年来一直使用 Whosebug 找到了很多有用的信息,但现在我决定加入社区。
现在我的问题是 Java 配置存储选择。
应用程序
目前我正在为自己做一个 Java (FX) 项目。 Java 应用程序将在一些台式机上使用。该应用程序的目标是通过 SSH(例如服务器)为 on/off Linux 设备供电。
我想让用户添加 5/10 设备,其中包含设备信息(名称和 IP)、开机命令的 SSH 凭据和关机命令的 SSH 凭据(用户、主机) 、密钥、端口、超时、命令)。
会有一个 JavaFX GUI,这个 GUI 会有一个菜单栏,其中有一个名为 Devices 到 select 的菜单,添加、编辑或删除设备。在 GUI 的中心会有 2 个按钮,它们将用于电源 on/off 命令(或开关)。
设计
- 编程语言是Java。
- GUI 基于 JavaFX。
- 对于强大的 on/off 命令,我使用命令设计模式。
存储空间
我尝试了不同的存储选项(SQLite、Properties 和 XML)来存储设备信息。但是我没有找到哪个选项最适合这种情况。
感觉 SQLite 存储空间太大了。
如果我选择单独的 properties/XML 存储,那么将有大约 5/10 个不同的 properties/XML 文件。此外,应用程序必须在这些文件之间切换。
如果我决定使用多个属性文件,文件的结构将如下所示:
device.name = Server
device.host = host.com
power_on.key = /path/to/rsa
power_on.user = user
power_on.host = host.com
power_on.port = 22
power_on.timeout = 10000
power_on.command = execute power on command
power_off.key = /path/to/rsa
power_off.user = user
power_off.host = host.com
power_off.port = 22
power_off.timeout = 10000
power_off.command = execute power off command
如果我决定使用多个 XML 文件,文件的结构将如下所示:
<device>
<name>Server</name>
<host>host.com</host>
<commands>
<powerOn>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power on command</command>
</powerOn>
<powerOff>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power off command</command>
</powerOff>
</commands>
</device>
如果我决定使用一个属性文件,该文件的结构将如下所示:
# Device 1
server.device.name = Server
server.device.host = host.com
server.power_on.key = /path/to/rsa
server.power_on.user = user
server.power_on.host = host.com
server.power_on.port = 22
server.power_on.timeout = 10000
server.power_on.command = execute power on command
server.power_off.key = /path/to/rsa
server.power_off.user = user
server.power_off.host = host.com
server.power_off.port = 22
server.power_off.timeout = 10000
server.power_off.command = execute power off command
# Device 2
pc.device.name = PC
pc.device.host = host.com
pc.power_on.key = /path/to/rsa
pc.power_on.user = user
pc.power_on.host = host.com
pc.power_on.port = 22
pc.power_on.timeout = 10000
pc.power_on.command = execute power on command
pc.power_off.key = /path/to/rsa
pc.power_off.user = user
pc.power_off.host = host.com
pc.power_off.port = 22
pc.power_off.timeout = 10000
pc.power_off.command = execute power off command
如果我决定使用一个 XML 文件,文件的结构将如下所示:
<devices>
<device>
<name>Server</name>
<host>host.com</host>
<commands>
<powerOn>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power on command</command>
</powerOn>
<powerOff>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power off command</command>
</powerOff>
</commands>
</device>
<device>
<name>PC</name>
<host>host.com</host>
<commands>
<powerOn>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power on command</command>
</powerOn>
<powerOff>
<key>/path/to/rsa</key>
<user>user</user>
<host>host.com</host>
<port>22</port>
<timeout>10000</timeout>
<command>execute power off command</command>
</powerOff>
</commands>
</device>
</devices>
问题
我的问题是;哪种存储选择(and/or 设计模式)最适合这种情况?这让我真的很困惑,因为我尝试了不同的东西,但还没有任何好的解决方案。
我希望你们能帮我解决这个问题。欢迎所有反馈、建议等。提前致谢!
您有多种选择。正如您提到的,属性文件将是最简单的方法。不需要额外的库,一切都已经在 JDK.
另一方面,如果您想要更多,可以使用
- YAML
- JSON
- XML
- 完全定制的东西
如果您的配置经常被手动编辑,我会反对 XML。我个人的偏好是将配置存储在单个 json 文件中,每个设备都有自己的字典。 JSON 也有很好的编辑器和工具支持。