书评:使用 LINQ-to-Entities 进行 WCF 4.0 多层服务开发





4.00/5 (2投票s)
对《使用 LINQ-to-Entities 进行 WCF 4.0 多层服务开发》一书的评述
引言
《使用 LINQ-to-Entities 进行 WCF 4.0 多层服务开发》一书主要讲述如何在 WCF Web 服务中使用 LINQ 和 Entity Framework 来创建数据层。本书从初级开发者的角度出发,即便是对 Visual Studio 不熟悉的读者也能理解。本书通常采用从最基础到最高级的演进方式讲解内容,从如何从头开始创建一个 WCF 服务,到使用 Visual Studio 内置模板创建 WCF 服务。本书遵循 Web 服务重要的“契约优先”设计模式。
我喜欢本书在分层方面的处理方式,它清晰地解耦了各层,而不是简单地将实体类从数据层推送到接口层——每一层都有自己对所用领域实体的概念。这对于 Web 服务来说非常重要,因为 Web 服务能实现的功能是 .NET 能实现功能的子集;并且在一定程度上,数据库和数据访问层能建模的内容也是 .NET 能实现功能的子集。因此,业务逻辑层能够自由地按照需要实现领域实体,而不受限于 Web 服务消息或特定数据库无法实现的功能。也就是说,在示例中,Entity Framework 创建的实体仅限于数据访问层,而不在 Web 服务的请求和响应中使用。
本书通常通过一个从单层到多层的、持续演进的示例来展示,从服务层开始。这种描述方式对于不熟悉分层的读者很有帮助。这也与测试驱动设计(TDD)的流程类似。
本书详细介绍了 C# 4 新语法的许多用法,包括 LINQ(实际上是 LINQ 语法,以及 LINQ 在新的 C# 语法中依赖的任何部分;这占据了大部分内容)。其中有两章专门介绍这种新的 C# 语法。本书还详细介绍了如何使用或不使用 Visual Studio 内置模板来创建 WCF 服务。对于高级开发人员来说,本书的许多内容可能显得有些基础——如果你已经熟悉 Visual Studio、分层、C# 4 以及在 Visual Studio 中调试,你可能会发现本书一半的内容是你已知的信息。如果你已经熟悉 WCF 和 Entity Framework,那么这本书可能对你来说收获不大——正如预期的那样。
有一些观点我认为在准确性上略有偏差;但都没有涉及到 LINQ to Entities 或 WCF。不幸的是,“多层”并没有得到详细的阐述。示例严格来说是多层(multi-layer),而不是多层(multi-tier)(假设 Web 服务的客户端必须始终被视为一个独立的层——即,我从“多层服务”中推断出不止两层)。Web 服务(接口层、业务逻辑层和数据访问层)的实现,在所有示例中都只占一层。本书的概念很容易扩展到业务逻辑层和数据访问层,并将它们包装在 WCF Web 服务中,以真正实现多层服务。书中提供了几种执行自动化测试(编码测试)的示例。我有些失望的是,这些测试没有被视为单元测试,也没有使用 Visual Studio 测试框架或 NUnit 等其他常用单元测试框架来实现。
本书在其实现中运用了一些广为人知的模式;但除了实现之外,并没有深入探讨。例如,它使用了数据访问对象(DAO)模式,但并没有使用“数据访问对象”这个术语。这并不意外,因为本书并非关于模式。如果你是本书的目标读者,我建议你后续阅读一些关于模式的书籍。本书总体上正确地实现了其使用的模式,但我认为某些模式的选择有些过于学术化。例如,作者选择了典型的微软三层架构:接口层(服务层)、业务逻辑层和数据访问层。在业务逻辑实体内部和外部混合业务逻辑的典型问题会发生。我将留给读者自行研究如何解决这个问题(提示,请查看我的博客存档并继续阅读我的博客)。
本书也没有详细介绍 WCF 的配置,即使是关于 Web 服务。在切换绑定,例如从 HTTP 切换到 HTTPS、TCP 等方面,都没有细节。也没有提及 SvcConfigEditor——这是每个 WCF 开发人员工具箱中的必备工具。
如果还没有明确的话,我建议这本书适合需要快速掌握 WCF 和 Entity Framework 并能在短时间内高效工作的初级开发人员。
可以在这里找到示例章节:https://www.packtpub.com/sites/default/files/1148-chapter-4-implementing-a-wcf-service.pdf,本书的出版商着陆页可以在这里找到:https://www.packtpub.com/wcf-4-0-multi-tier-services-development-with-linq-to-entities/book。