ADO.NET 数据服务是应用程序中的下一代数据访问层。我已经看到很多直接从 UI 层(例如 Silverlight 或 Ajax)使用它来获取数据的示例。这几乎就像拥有一个两层系统,业务层完全移除。DAL 是否应该由业务层访问,而不是直接从 UI 访问?
3 回答
ADO.NET 数据服务是应用程序中的下一代数据访问层
我不知道你从哪里得到的!也许您将 ADO.NET 数据服务与 ADO.NET 实体框架混淆了?
不应假设 Microsoft 生产的所有东西对每个开发人员都有价值。在我看来,ADO.NET 数据服务是一种快速创建 CRUD 服务的方法,它可能在实体上定义了一些其他操作,但这些操作都是存储过程。如果您只需要一个面向数据库的服务,那么这可能就是您想要的。当然,除了在数据库中之外,没有必要为这样的服务进行任何编码。
但这并不意味着 ADO.NET 数据服务“在每个项目的整体设计中都占有一席之地”。它满足了对足够客户的需求,微软认为值得花钱开发和维护它。
就此而言,他们还认为 ASP.NET MVC 是个好主意……
:-)
ADO.NET 数据服务是另一种为了移动数据而需要评估的工具。
.NET RIA 服务是另一种。我会说好多了。
我将 ADO.NET 数据服务视为供某些高级框架使用的低级服务。我不会让我的 UI 直接与它对话。
我看到的 ADO.NET 数据服务的主要问题与安全性有关,而不是其他任何问题。
对于简单/快速的任务,在 Intranet 中,如果你对你的设计不太挑剔,它会很有用。(IMO) 当您需要从现有数据库中快速公开数据时,它会非常方便。
我说得心应手,但这不是我的第一选择,因为我尽可能避免“快速而肮脏”的解决方案。那些解决方案就像鬼魂,总是回来困扰你。
在我看来,其他答案低估了 ADO.Net 数据服务的重要性。尽管在您的应用程序中直接使用它会带来与两层系统的一些相似性,但其他 Microsoft 产品,如基于它的 .Net RIA Services、Windows Asure Storage Services。与答案之一中的短语“对于简单/快速的任务,在 Intranet 中,如果您对自己的设计不太挑剔,它可能很有用”相反,它可能对公共网站有用,包括 ASP 中的网站。网络 MVC。
Dino Esposito 在他的博客中描述了 Ado.Net 数据服务的驱动力
“ADO.NET 数据服务(又名 Astoria)
驱动力:构建富交互性 Web 系统的需求。抽象地说:用于构建中间层的新工具集,或者更好的是,在任何类型的应用程序(包括企业级应用程序)的中间层之上的服务层。具体是什么:为您提供从超链接调用的 URL,以将数据传送到客户端。更适合客户端需要对数据进行直接|部分过滤访问的场景。不适合从 IE 查询数据,但适合构建具有 AJAX 气息的新一代 Web 控件。仅此而已。”