我的问题可能是一个微妙的问题:
Web服务 - 它们是演示文稿/ Web层的扩展吗? ..或者它们是商业/数据层的扩展吗?
这似乎是一个愚蠢的问题。 Web 服务是 web 层的扩展。我不太确定。我正在构建一个具有一些AJAX-y功能的非常标准的webform,在我看来,我可以通过以下两种方式之一构建Web服务:
GetUserData(userEmail)
RenderUserProfileControl(userEmail)
我可以看到它适用于任何一种情况,但我对不同的观点感兴趣......思考?
答案 0 :(得分:2)
在我看来,Web服务有两个特征:
所有这些都说,如果你真正关注的是一个帮助类,它像web服务一样响应而你只打算在这个用例中使用它,那么你可以做任何你喜欢的事情和你的情况#2将工作。但是,从我的角度来看,它打破了责任分离;您将数据访问和渲染功能组合在同一个类中。我怀疑,即使你不关心MVC模式,选项#2也会让你的课程更难维护,你肯定会限制他们对你未来的用处;如果你想访问相同的数据但是以不同的方式呈现它,你需要重构。
答案 1 :(得分:0)
我绝对不会说#2,但#1是有效的。
我也认为(这是意见)作为数据访问层的Web服务并不理想。该服务必须具有更多的价值(一般来说 - 我相信这有明显的例外)。
答案 2 :(得分:0)
即使在方案1中,此服务也会呈现数据层中可用的数据,而不是数据层本身的一部分,只是它以不同于UI格式的格式呈现数据(即JSON)。 ,xml等。)
关于我将使用哪种场景,我会选择场景#1,因为该服务可以在其他Web表单和其他场景中重复使用。
答案 3 :(得分:0)
虽然#1(def。不是#2)通常是正确的方法(只公开视图层所需的数据并在那里处理所有标记),但要小心 web 部分您的设计中的服务。
如果要远程使用数据,那么数据应仅作为 Web服务(SOAP / WSDL,REST)公开(某些SOA架构师可能会认为这一点,但我认为这超出了范围对于这个问题),否则你可能会做太多,并且过度设计你的请求和响应格式。使用对您的应用程序有意义的东西 - 一个促进客户端/服务器通信的Ajax框架,并提取底层的通信格式可能是一个很大的帮助。重要的是要很好地封装检索所需数据的代码(您可以将其称为服务,但它可能只是一个编写得很好的辅助类),因此可以重复使用,然后将这些数据暴露在任何地方方式对于给定的应用程序最有意义。