web项目中的java我们可以在不了解UI的情况下编写核心服务层吗?
我正在从事网络项目。我们使用flex作为UI层。我的问题是,我们通常将核心服务层与web/UI层分开编写,这样我们就可以为不同的UI层/技术重用相同的服务。因此,实际上,使用不同类型的UI技术/层重用相同的核心层服务是可能的,而不需要对API进行任何更改/添加。例如,支持同步请求响应(如jsp等)和非同步或事件驱动UI技术(如Ajax、Flex、GWT等)的UI技术的同一核心服务层,或支持多个设备(如计算机、手机、PDA等)。就我个人而言,在没有任何UI知识的情况下编写核心服务层是非常困难的。寻找别人的想法
# 1 楼答案
当然有可能。服务层通常是无状态的,所以它只提供使用来自UI的参数调用的方法。您可以将其想象为从UI层调用的API。重要的是而不是将任何与UI相关的内容作为参数传递。例如,不要将
HttpServletRequest
或HttpSession
作为参数传递-获取所需的值并传递它们# 2 楼答案
服务层应该与UI无关,所以这实际上非常好
从理论上讲,服务层中公开的业务操作不应该依赖于谁调用它以及哪种技术。但你似乎面临着一些常见的症状:
1。您必须问自己的问题是,您是否可以优雅地考虑这些稍微不同的操作,或者相反,如何优雅地公开相同操作的变化。在这两种情况下,都应该能够设计一个一致的服务API,并满足各种客户机的需求
两个人。您必须问自己的问题是如何将业务操作与远程处理技术分离。可以引入网桥、适配器或额外的中介层,但这不应导致过度工程化
我知道有时很难将业务操作与其实际使用完全分离。让我们考虑分页:如果业务操作是“我想要查询X的数据”,暴露的具体操作也嵌入了UI的一些知识,即分页。p>
我只能提供一个一般性的建议:当涉及到数据、格式等时,争取在UI和业务之间实现清晰的分离。如果不能,请尝试找出对所有客户端都有意义的最通用的API
我同意有时候很难,但你似乎做得对,所以继续这样说:)
# 3 楼答案
在完全不了解UI的情况下编写核心服务应该不难
核心服务只需要知道执行任务所需的数据(数据来自何处并不重要)
一旦您设计了核心服务,您就可以在它们之上构建几个不同的UI来收集必要的数据并将其传递给服务。。。然后履行他们的具体职责