我们有两个客户端应用程序(一个 Web 应用程序和一个代理应用程序)访问同一服务的方法,但要求略有不同。我的团队希望通过向每个方法传递一个 ApplicationType 参数来控制服务端的行为 - 这本质上是一个包含调用客户端应用程序名称的枚举 - 然后将其用作数据库查找的键来配置服务客户特定选项。
这让我感到不安,因为我认为服务实际上不必知道哪个客户端正在调用它。有人告诉我,这样做比通过方法调用动态传递大量选项更容易。
客户端应用程序告诉服务他们是谁有什么问题吗?或者传递配置键与传递一组参数化选项之间真的没有区别吗?
我看到的一个直接问题是,如果我们向第三方运行的另一个客户端开放服务,我们就必须在本地为他们维护他们的配置设置。目前我们拥有两个客户端应用程序,因此这不是什么大问题。
你会怎么做?
最佳答案
在分层解决方案中,您应该始终将层视为类似洋葱的层,并且依赖关系应始终向内,而不是向外。
所以你的GUI/App层应该依赖于业务逻辑层,业务逻辑层应该依赖于数据访问层,等等。
除非您对客户端进行分类(web、win、wpf、cli),或者使用客户端配置文件(客户端应用程序可以配置)进行概括,否则我永远不会传递调用应用程序的名称,因为这会使业务逻辑层了解并依赖于外部层。
我们正在讨论什么样的差异取决于应用程序的类型?如果您详细说明此处的差异,也许有人可以就解决此问题的其他方法提出一些有用的建议。
但在走你所描述的道路之前,我肯定会寻找其他方法。
关于soa - 在服务层切换客户端逻辑是不是有问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/336973/