我曾经在我的网站中创建普通的 web 服务,并从 javascript 调用这些服务来进行 ajax 调用。
现在我正在学习 Ado Data Services,我的问题是:这个 Ado Data Services 是否可以在我将创建的新站点中替换我的正常 Web 服务?
如果是,
我可以将这些 Ado 数据服务放在“同一服务器上的本地”的单独项目中,并仅从我的网站中引用吗?“为我的网站内部使用使用相同的服务,并为其他网站或服务提供相同的服务,例如 twitter 所做的”
我曾经在我的网站中创建普通的 web 服务,并从 javascript 调用这些服务来进行 ajax 调用。
现在我正在学习 Ado Data Services,我的问题是:这个 Ado Data Services 是否可以在我将创建的新站点中替换我的正常 Web 服务?
如果是,
我可以将这些 Ado 数据服务放在“同一服务器上的本地”的单独项目中,并仅从我的网站中引用吗?“为我的网站内部使用使用相同的服务,并为其他网站或服务提供相同的服务,例如 twitter 所做的”
取决于你想做什么,我建议你阅读我与 Ado.Net 数据服务架构师 Pablo Castro 的对话
这基本上是巴勃罗的话。
我同意其中一些事情非常不方便,我们正在考虑修复它们(例如,除了在输入模型中定义的类型之外使用自定义类型来生成自定义结果集)。然而,其他一些只是数据服务的本质所固有的。
数据服务框架不是通往数据库的网关,一般来说,如果您需要类似的东西,那么数据服务只会妨碍您。数据服务的目标是从输入数据模型中创建资源模型,并使用暴露统一接口的 RESTful 接口将其公开,以便底层模型(“实体”)中的每个数据单元成为可寻址资源可以用标准动词来操作。
通常 RESTful 接口的实际实现包括更复杂的行为,而不仅仅是在幕后对数据执行 CRUD,需要以不破坏统一接口的方式定义。这就是数据服务服务器运行时以查询/更改拦截器和其他形式提供业务逻辑和验证的挂钩的原因。我们还承认,将所有事物完全建模为使用标准动词操作的资源并不总是可能或实际可行的,因此我们将服务操作作为逃生舱口包含在内。
诸如连接之类的东西稀释了我们试图创建的抽象。我并不是说它们不好或任何东西(没有它们的关系数据库不会那么有用),只是如果给定应用程序场景需要的是关系数据库的完整查询表达能力服务边界,然后您可以简单地通过网络交换查询(并管理其安全隐患)。对于可以建模为关联遍历的连接,数据服务已经支持它们。
我想这是一个很长的路要走,说数据服务不是解决所有涉及将数据暴露到网络的问题的解决方案。如果您想要一个与我们的底层数据模型匹配的资源模型上的 RESTful 接口,那么它通常会运行良好,并且会为您节省大量工作。如果您需要自定义接口或直接访问数据库,那么数据服务通常不是正确的工具,而其他框架组件(例如 WCF 的 SOAP 和 REST 支持)在这方面做得很好。