繁体   English   中英

在.Net WCF服务框架中公开多个DataObjects / Methods的最佳设计策略是什么?

[英]What is the best design strategy for exposing multiple DataObjects/Methods within the .Net WCF service framework?

我是Microsoft WCF的新世界。 我有一些关于最佳的设计模式/方法的问题,这些最佳的设计模式/方法可用于实施一项或多项能够满足我的需求的服务。

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

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

  • 用户信息
  • UserActivityHistoryAudit
  • 评价
  • 评估工作流程和审查
  • 评估报告

我有几个问题涉及在WCF中实现此目标的最佳方法。

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

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

  3. 如果我使用多种服务,将它们挂在同一个端点上是否更干净?

设计此方案时,最佳策略是什么?

谢谢,JohnB

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

大多数情况下,包装单个数据层对象太小而无法单独包装。 例外是,如果您只是简单地为所有人提供数据服务(在REST和ODATA服务中很常见)。

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

  1. 根据消费需求对服务进行建模。 每个消费者集一项服务。
  2. 如果要在不同二进制文件的多个业务层之间共享数据层,则数据层应存在于其自己的独立库中并共享。
  3. 只要您保持一致,服务的端点布局通常并不重要。 最终,您的消费者将只复制/粘贴您提供的端点。

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

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

 `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(); } }` 

为您的每个数据对象考虑数据合同

使用数据合约

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM