想象你利用一个Web服务器、一个应用程序服务器和一个数据库设计来设计一个三层的软件系统。在思考驻留在这些容器中的高层次组件时,听到这样的对话并不罕见。
- 参与者 :“既然Web服务器和应用程序服务器都在使用日志组件,我们应该把它画在这两者之外吗?”
- 我 :“你会那样编写代码吗?日志组件会在Web服务器和应用程序服务器之外运行吗?比如说,它真的是一个单独的进程吗?”
- 参与者 :“好吧……不是,它很可能是我们会同时部署到两个服务器上的[JAR文件|DLL|其他]中的一个共享组件。”
- 我 :“好,那么让我们也这样画图。在每个服务器中都包含日志组件,用一个注释、定型或符号把它标为共享组件。”
如果你要实现部署到多个不同服务器的共享日志组件之类的东西,确保你的图反映出这一点,而不是包含一些可能被误认为是单独的中心化日志服务器的东西来误导人们。如果有疑问,问问自己你会如何编写代码。