将 WCF 服务与 Entity Framework 4 和...DTO 结合使用?

2024-01-11

如上所述,我正在实现一个多层架构来与 WCF 和 Entity Framework 4(使用 poco)配合使用。由于我已经对 POCO 持久性一无所知,所以我确实需要实现 DTO 或者我可以以其纯粹的方式使用 WCF?

主要引用是 - 我确实需要 DTO 在网络上传递轻量级对象,或者我可以使用我的 POCO 实体。

大家推荐什么?


除非你定义什么是“净道”,否则很难回答。我们是在谈论纯粹的 SOA 还是纯粹的 WCF?

WCF 代理在某种程度上已经是 DTO,因为它们不会在您的服务契约中带来任何业务逻辑。在 WCF 生成的代理类之上创建另一层 DTO 似乎是多余的。

您想要回答的最大问题是“这个解决方案是如何实现 SOA 的?”。如果您希望符合 SOA,则无法跨服务边界共享 POCO 实体。 SOA 完全是关于不同的合同。

如果您完全基于 SOA,那么您会失去很多功能,因为您的 Web 层大多数时间使用的类将是愚蠢的代理。您必须重复大量逻辑,并且丢失了 MVC 2 提供的大量“元数据、约定优于配置”功能。

如果您将 SOA 流行语扔进粉碎机,那么您应该这样做(http://soafacts.com/ http://soafacts.com/),那么您将可以更轻松地跨层共享业务逻辑和元数据信息。如果您的网络服务的唯一消费者是您自己,那么此方法可能是您的最佳选择。

您可以在此处使用 DTO 而不是 POCO 实体通过线路发送。唯一的缺点还是重复逻辑,以及大量毫无作用的样板仪式代码。实际上取决于您的项目的大小。如果规模很小,请忘记 DTO,但如果您有 20 名开发人员使用 200,000 LoC,则 DTO 可能值得创建。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 WCF 服务与 Entity Framework 4 和...DTO 结合使用? 的相关文章

随机推荐

  • 如何获取谷歌地图标记上的双击事件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在我的应用程序中 我显示具有多个标记的谷歌地图 因为我有点击事件和获取信息窗口 但是我需要的是 当我双击标记时 应该显示包含有关该标记
  • 尝试连接到 .onion 站点时 Python 请求失败

    我正在尝试获取托管在 tor 网络中的网页 我正在使用以下代码 import requests def get tor session session requests session session proxies http socks5
  • CSS,自动调整div大小?

    我正在尝试用 css 设计一种布局 我有一个主容器 div 和两个内部容器 div upper 和 div lower 假设我想调整 div upper 和 div lower 的大小 它们会自动调整自身大小 并且两个 div 仍然适合主容
  • Azure Linux 应用服务:从 DevOps 管道部署后安装包

    我目前正在 Azure Devops 中设置 CI CD 管道 以在 Linux 托管应用程序服务 而不是 VM 上部署 NodeJS 应用程序 我的构建和部署都很顺利 但我需要确保在部署应用程序后在环境中安装一些软件包 问题是 无论如何a
  • 为什么人们使用 #ifdef 进行功能标志测试?

    People 推荐 ifdef条件编译大幅提高 https stackoverflow com q 21256252 103167 A 搜索 ifdef https stackoverflow com search q 23ifdef证实其
  • 以编程方式安装 Windows 服务

    如何在不使用 installutil exe 的情况下以编程方式安装 Windows 服务 您可以通过添加此代码 在程序文件 Program cs 中 来安装该服务 以便在使用指定参数从命令行运行时自行安装
  • 具有 openid 连接重定向的反向代理

    在我的应用程序中我集成了Identity server 3 with openid connect 在我们的生产服务器上 我们的网站位于反向代理后面 这会导致问题 当用户登录并被身份服务器重定向回来时 我们的应用程序希望将用户重定向到他的原
  • 如何在 JavaScript 中获取 css3 翻译后元素的位置?

    我在 stackoverflow 上看到了以两种不同形式发布的内容 但这些解决方案对我不起作用 本质上 我有一个要翻译的项目 当我执行 obj style left 或 obj offsetLeft 时 在元素被翻译后 我得到 0 无论如何
  • Docker:容器与本地安装

    在周末第一次使用 Docker 并看到 irssi mutt 浏览器等所有内容的小图像之后 我想知道本地安装的软件包是否正在为数十个容器让路 我可以看到保持基本系统非常干净以及拥有所有这些容器都是独立的并且可以轻松地重新定位到不同桌面 甚至
  • 将 pandas join 中的列后缀转换为 MultiIndex

    我有两个 pandas DataFrame 它们具有 不一定 相同的索引和列名称 gt gt gt df L pd DataFrame X 1 3 Y 5 7 gt gt gt df R pd DataFrame X 2 4 Y 6 8 我
  • 如果未安装应用程序,如何从深层链接重定向到应用程序商店?

    我希望用户能够通过 Facebook 等共享链接 例如 app com SKFLA 这主要是因为深层链接本身不可点击 单击时 会重定向到深层链接应用程序 SKFLA 如果安装了该应用程序 则会打开该应用程序 到目前为止一切正常 但如果该应用
  • Javascript / CSS:设置(firefox)iframe 的缩放级别?

    我想创建一个包含多个显示不同页面的 iframe 的页面 一种 并排浏览多个页面 类型的东西 问题是这样做时 视口非常小 我只能看到每个页面的左上角 有没有办法设置 iframe 来有效地执行 Firefox 的缩小 ctrl 减号 几次
  • 如何在Java中向文件写入换行符

    我有一个包含新行的字符串 我将此字符串发送到一个函数 以将字符串写入文本文件 如下所示 public static void writeResult String writeFileName String text try FileWrit
  • 按等级排列的 FindBugs 2.0 错误列表?

    我知道有list http findbugs sourceforge net bugDescriptions html错误 但我想要一个包含有关排名 版本 2 0 中为 1 到 20 或至少有关排名组 令人担忧 令人不安 可怕 最可怕 的附
  • 在SecurityManager下创建对象时出现NoClassDefFoundError

    我试图通过在非常严格的 SecurityManager 下运行处理用户提供的内容的代码来保护我的应用程序 它是 AccessController doPrivileged 的本质 通常这用于提供具有额外权限的代码块 但我使用它来将代码块限制
  • Spring Boot 日志中缺少应用程序名称

    例如 人们通常会得到这样的内容 my service id 是应用程序名称 2016 02 11 17 12 45 404 INFO my service id 85184 nio 8080 exec 1 com example MySim
  • SQL Server 2014 合并重叠的日期范围

    我在 SQL Server 2014 数据库中有一个包含 200 000 行的表 如下所示 CREATE TABLE DateRanges Contract VARCHAR 8 Sector VARCHAR 8 StartDate DATE
  • JNDI 没有可用于处理的 EJB 接收器

    我的 EJBTest 有问题 我已经安装了WildFly并配置了用户管理和应用程序管理 我编写了一个 EJB 3 0 并部署了它 Stateless Remote NewSessionBeanRemote class public clas
  • 如何在 1 个 Windows 服务中托管 2 个 WCF 服务?

    我有一个 WCF 应用程序 它有两个服务 我尝试使用 net tcp 将它们托管在单个 Windows 服务中 我可以很好地运行其中一个服务 但是当我尝试将它们都放入 Windows 服务时 只有第一个服务会加载 我已确定正在调用第二个服务
  • 将 WCF 服务与 Entity Framework 4 和...DTO 结合使用?

    如上所述 我正在实现一个多层架构来与 WCF 和 Entity Framework 4 使用 poco 配合使用 由于我已经对 POCO 持久性一无所知 所以我确实需要实现 DTO 或者我可以以其纯粹的方式使用 WCF 主要引用是 我确实需