WCF 作为业务逻辑

Posted

技术标签:

【中文标题】WCF 作为业务逻辑【英文标题】:WCF as Business Logic 【发布时间】:2012-07-15 00:14:21 【问题描述】:

我当前的应用程序架构计划是

UI -> WCF Bal -> 通用 Dal -> 实体模型

我已经创建了通用 Dal 方法,相关实体和要执行的具体操作将从业务逻辑处理。

我正在尝试在 wcf 上创建业务逻辑,正如之前我们曾经为单独的实体做单独的类,所以从 WCF 上下文中我混淆了如何去做?

我最初想创建一个具有通用实现的接口,例如

 public interface IBalService<TEntity> where TEntity:class 

    [OperationContract]
    IDictionary<int, string> Populatelist();

    [OperationContract]
    IEnumerable<TEntity> Viewall();

    [OperationContract]
    void Insert(TEntity obj);

    [OperationContract]
    void Update(TEntity obj);

    [OperationContract]
    void Delete(TEntity obj);

现在这个接口应该对不同的实体有不同的实现,比如产品、类别、客户,但是 wcf 只能有一个服务类...

知道我现在应该做什么吗???

【问题讨论】:

【参考方案1】:

简而言之,我会做的(并在某些项目中成功完成)是这样的:

使用 WCF 作为端点创建服务层。该层可以包含静态方法,包含在仅用作“命名空间”的类中,例如“UserService”、“MessagesService”等。 世界“看到”的就是这些类。

在其背后创建您的业务逻辑,使用传统的完整 OO 类

创建您的 DAL;除了 BL 访问它之外,Service Layer 也可以访问它,用于不适合使用成熟业务逻辑的简单操作。

我不会使用泛型作为 WCF 端点,它可以做到,但如果您将服务层视为单一操作的单一方法,您将赢得最终将其变成一种公共的选项API(如果您愿意)。

【讨论】:

有了这个,WCF 将只是充当重定向媒介,或者我们有什么其他优势吗? 只是一个通信层。它的功能非常强大,但我几乎看不到任何优势......

以上是关于WCF 作为业务逻辑的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC - 服务层 - 业务层 - 数据层 (EF) - SQL DB :: 数据传输?

当使用实体框架作为数据访问层时,如何实现业务逻辑层?

CakePHP 业务逻辑层

使用redis作为我的核心BD时我的业务逻辑放在哪里

C 语言二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 抽象业务逻辑函数 )

关于SOA和AOP