- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将 SOA 模式合并到我的 3 层结构中。我在 BLL 和 UI 之间创建了一个服务层(WCF 主机)。我的结构设置现在看起来像这样
UI <> WCF <> BLL <> DAL
<---[Entities] --->
问题是,我的实体位于单独的 DLL 中(并且它在除 UI 之外的所有层中都可见)现在,我需要公开它,以便我的服务的使用者可以使用它。在本例中,是 UI。我怎么可能做到这一点?
实体.DLL
namespace Entities
{
public class Account
{
public string AcctID { get; set; }
public string AcctName { get; set; }
}
}
现在,我计划在 WCF 中使用它
服务接口(interface)层
public class AccountService : IAccountService
{
public Account GetAccount(string AcctID)
{
//fetch from DAL through BLL
}
}
可以只归属我的实体吗? (注意,我还使用 DAL 和 BLL 中的实体)
using System.Runtime.Serialization;
namespace Entities
{
[DataContract]
public class Account
{
[DataMember]
public string AcctID { get; set; }
[DataMember]
public string AcctName { get; set; }
}
}
大家有什么建议吗?
最佳答案
这是适合我们的系统:
您通常应该使用反射(reflect)您期望在客户端需要的数据的数据传输对象。业务层应该定义这些 DTO 及其存储库接口(interface)。数据层应该实现存储库接口(interface),将数据层实体转换为 DTO。 WCF 层应该只是各种存储库接口(interface)方法的面向外的包装器。
这样,它看起来更像这样:
UI ---\ | BLL -- DAL WCF---/ [ DTO ] [Repositories] [Entities]
In my mind, I see the WCF layer as being a part of the UI layer, so I'd feel all right having them both be aware of objects defined in the business layer. However, you could take it one step further, and make the WCF layer be in charge of converting your business objects into DTOs:
UI -- WCF -- BLL -- DAL [ DTOs ] [ Repositories ] [ Business Objects ] [Entities]
This way, each layer is only aware of at most a single layer on each side of it. The DTOs can be annotated for serialization or whatever, because they really are only intended for that purpose. Only the Data-Access Layer is aware of your Data Entities.
In Response to your comment:
If your entities are defined in your data-access layer, then they really are not DTOs. They are modeling your data layer, which doesn't necessarily translate directly into the objects you need in the UI.
The reason I'm suggesting defining interfaces for your repositories is so that you can use dependency injection to loosen the coupling between your WCF layer and your business layer. This will also serve to make your WCF layer unit-testable, because you can create fake or mock repository implementations that simulate a particular situation.
In the first model I recommended, your WCF methods would look almost exactly like your repository methods, so a typical WCF would basically just "wrap" a repository method:
public IEnumerable<Task> GetActiveTasks() {
return _taskRepository.GetActiveTasksForUser(_sessionManager.CurrentUser);
}
关于c# - SOA问题: Exposing Entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883158/
我经常听到非技术客户或项目经理把面向服务的体系结构 (SOA) 作为一个流行词四处流传,几乎不关心或不了解它的实际含义(例如:“我可以购买 SOA 吗?”)。还有很多关于 SOA 的错误信息(例如:“
一些 SOA 基础是: 松耦合 可重用性 无状态服务 服务之间的正式契约(Contract) 粗粒度 异步 抽象底层逻辑(黑盒) 可组合(作为构建块的服务) 可发现服务 自治服务 它们中的大多数都可以
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 去年关闭。 Improve th
我是一名学生,我有一篇名为“网格计算”的学期论文和另一篇名为“SOA”的论文。 作为实验室练习的一部分,我创建了基于 SOA 的 Web 服务。但似乎网格计算处理相同的基于 WSDL 的服务。我实际上
它们有许多共同的特征。但是有什么区别呢? MOM 允许异步,而 SOA 不允许,这是唯一的区别吗? 最佳答案 SOA,即面向服务的体系结构,是一种体系结构,它定义了如何在不同应用程序之间构建对业务信息
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
所以我今天的开放式潜在主观问题是; 如果您有机会在今天的 Microsoft 技术上构建 SOA;你会从下面的选项中选择什么? WCF、WF + AppFabric BizTalk + ESB 工具包
Web 服务是一种面向服务的架构实现。 但是,我们能说 CORBA、RMI 和 Java EE 平台也是 SOA 的实现吗? 最佳答案 如果您说 SOA 意味着 WS-* 标准,那么答案是否定的。 但
我对这些 Web 服务术语 SOA、ESB 感到困惑。 任何人请解释。 最佳答案 SOA 是一种架构方法,您可以在其中以粗粒度的方式公开和封装“服务”。它没有规定任何技术机制或实现。 SOA更多地与系
关闭。这个问题需要多问focused 。目前不接受答案。 已关闭10 年前。 已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 有人可以用简单的
“服务代理”在 SOA 模型架构中的作用是什么? 最佳答案 服务代理旨在成为服务的注册表,并存储有关哪些服务可用以及谁可以使用它们的信息。例如,最初设想为 Web 服务注册中心的 UDDI 现在被视为
我在网上看过,但我对包装器服务是包装遗留应用程序还是一组复杂服务感到困惑。 更新:从我收到的答案来看,SOA 中没有公认的“包装服务”定义,经过进一步调查,我意识到“包装服务”取决于定义它的人。我的意
我对 SOA 中编排的含义感到困惑,我阅读了很多定义但没有明白这个想法,你能帮我吗? 最佳答案 有两种主要方法可以从更大的类(class)粒度服务、编排和编排中执行所有必要的细粒度服务。 对于管弦乐队
我一直在研究异步消息传递,我喜欢它优雅地处理某些领域中的一些问题的方式,以及它如何使领域概念更加明确。但对于一般的领域驱动开发(至少在服务/应用程序/ Controller 层)来说,它是一种可行的模
我创建了一个名为 QM_MQ_TEST 的队列管理器 crtmqm QM_MQ_TEST strmqm QM_MQ_TEST runmqsc QM_MQ_TEST DEFINE CHANNEL(QM
我在 Weblogic 10.3.6 中有一个包含 SOA 服务器的域。我刚刚使用 JDeveloper 部署了一个名为 soa_1 的 SOA 应用程序以及名为 HelloWorld 的 BPEL
任何机构都在他们的商店中使用 Talend SOA Suite。 如果我没记错的话,它与 Oracle SOA Suite 和 Service Bus 相比如何,因为这两个产品都实现了 EIP 模式?
我最近开始了一个副项目。它应该是一本虚拟食谱书,具有存储和检索食谱 (CRUD)、对它们进行评分和搜索的功能。这不是什么新鲜事,但我想将它构建为桌面应用程序,以了解有关数据库、单元测试、UI 等的更多
什么时候分布式事务在面向服务的架构中有意义? 最佳答案 分布式事务在 SOA 环境中经常使用。如果您有一个调用多个服务的复合服务,则底层服务调用应作为单个事务处理。业务流程应允许其步骤回滚。如果底层资
我正在阅读有关SOA原理和模式的信息,但我无法理解什么是不可知论的服务。您对此有任何直接的定义吗?概念和用法是什么? 最佳答案 可以在Agnostic/non-agnostic revisited中找
我是一名优秀的程序员,十分优秀!