【发布时间】:2012-03-18 22:18:34
【问题描述】:
我正在使用 WCF 构建一个全新的系统。我将对基于面向服务的概念构建的服务使用合同优先方法。我有一个返回用户银行帐户详细信息的服务操作。该帐户可以是“FixedAccount”或“SavingsAccount”类型。我将服务设计如下。
[ServiceContract]
interface IMyService
{
[OperationContract]
AccountSummary AccountsForUser(User user);
}
[DataContract]
class AccountSummary
{
[DataMember]
public string AccountNumber {get;set;}
[DataMember]
public string AccountType {get;set;}
}
这么多就好了。
现在,我需要为此服务开发业务域。我可以想到两种选择(任何新方法总是受欢迎的)
1) 方法 1:提出一个 BankAccount 基类。从它派生的专门类是“FixedAccount”和“SavingsAccount”。 BankAccount 将有一个方法作为 Transfer(string toAccount)。这成为我们熟悉且有效的 OOAD。这涉及在 AccountSummary DTO 和 FixedAccount/ SavingsAccount 域类之间进行映射的映射器。
2) 方法2:不使用映射器翻译层。
问题
1) 假设我正在使用方法 1。是否有任何文章/教程解释了如何根据 DTO 中的 AccountType 值将 AccountSummary DTO 映射到 FixedAccount/ SavingsAccount 域类(条件映射)?
2) 如何完成方法 2 中的任务?
阅读:-
【问题讨论】:
-
您在使用什么 ESB,或者您的 SOA 层是如何实现的?
-
@JamesBlack SOA 将使用 WCF 实现
-
WCF 是针对 web 服务的,但是仅仅因为你建立了一个 web 服务并不能使它成为一个 SOA 层。如果您在用户和 Web 服务之间放置一条消息总线,那么现在我们就有了更多面向服务的东西。对于您的问题,我将有两个不同的服务,但让它们转到一个公共控制器。