0

我对 Microsoft WCF 的世界比较陌生。关于用于实现一项或多项满足我需求的服务的最佳设计模式/方法,我有几个问题。

我有一个现有的 DataLayer,我想将其推送到 1 个或多个 WCF 服务中。后端数据库是 ORACLE(我有一个与正确版本的 ODAC 通信的整个数据访问层)。

当我查看现有数据层时,我(或多或少)支持多个数据对象(类)。

  • 用户信息
  • 用户活动历史审计
  • 评价
  • 评估工作流程和审查
  • 评估报告

我有几个问题涉及在 WCF 中实现这一点的最佳方法。

  1. 最好将其实现为一项服务或多项服务(与每个数据类/功能一致的服务)?

  2. 最后,我想分享与 ORACLE ODAC 库通信的底层数据访问层。最好将它嵌入到共享库、程序集中吗?

  3. 如果我使用多个服务,将它们全部挂在同一个端点上是否更清洁?

设计时使用的最佳策略是什么?

谢谢,约翰B

4

4 回答 4

0

通常,您的业务层也将在服务器上实现。在这种情况下,您将简单地包装您的业务层。如果您在服务器端没有业务层,请根据相同的概念为您的服务建模。您正在公开一组功能以针对特定消费者(或一组消费者)。您通常会向每个消费者(或一组消费者)提供一项服务。话虽如此,您不希望一个大型的单体服务仅仅满足您所有的潜在需求。将其分解为逻辑区域。

大多数时候,包装单个数据层对象太小而无法自行包装。例外情况是,如果您只是为每个人提供通用的数据服务(在 REST 和 ODATA 服务中很常见)。

============================

  1. 根据消费需求为您的服务建模。每个消费者集一项服务。
  2. 如果您将在不同二进制文件中的多个业务层之间共享数据层,则数据层应存在于其自己的独立库中并共享。
  3. 只要您保持一致,服务的端点布局通常并不重要。在一天结束时,您的消费者将简单地复制/粘贴您提供的端点。
于 2012-08-20T20:34:16.517 回答
0

最好的方法是使用一项服务,即 WCF 数据服务 (OData),您可以在此处下载一个示例 http://code.msdn.microsoft.com/WCF-Data-Service-OData-ebb4214a

于 2012-08-20T20:36:58.817 回答
0

您是否考虑过使用工厂和存储库模式?像这样的东西。

`public interface IEmployee
{
    // define your model here (properties, for example)
    string FirstName {get; set;}
    string LastName {get; set;}
}

public interface IEmployeeBizFactory
{
    IEmployee CreateEmployee();
}

public class CustomEmployee : IEmployee
{
    // Implementation here
}

public class CustomEmployeeBizFactory : IEmployeeBizFactory
{
    public IEmployee CreateEmployee()
    {
        return new CustomEmployee();
    }
}`

于 2016-06-28T12:39:20.587 回答
-1

考虑每个数据对象的数据协定

使用数据契约

于 2012-08-20T21:19:30.770 回答