Wcf 这是粗制滥造的反模式吗?

Wcf 这是粗制滥造的反模式吗?,wcf,soa,Wcf,Soa,目前,我正在创建一个WCF服务,该服务必须连接到DAL,DAL使用ADO.net和存储过程连接到数据库 DAl将其来自数据库的响应写入datacontract,datacontract通过网络通过服务传递给客户端 我读到这可能是反模式的“CRudy接口”,但我不确定,因为我正在共享datacontract 如果我使用的是反模式,有人能为我所需要的行为推荐一种更好的模式吗?好吧,关于粗糙模式及其利弊似乎存在一些争议。至少,我会调用一个服务接口,让您编写此类代码,将其用作反模式(如注释所示): 暴露

目前,我正在创建一个WCF服务,该服务必须连接到DAL,DAL使用ADO.net和存储过程连接到数据库

DAl将其来自数据库的响应写入datacontract,datacontract通过网络通过服务传递给客户端

我读到这可能是反模式的“CRudy接口”,但我不确定,因为我正在共享datacontract


如果我使用的是反模式,有人能为我所需要的行为推荐一种更好的模式吗?

好吧,关于粗糙模式及其利弊似乎存在一些争议。至少,我会调用一个服务接口,让您编写此类代码,将其用作反模式(如注释所示):

暴露CRUDy接口本身就不好吗?我不会这么说。重要的是提供一个能够

  • 封装有关底层流程的知识
  • 不要太健谈

  • 这看起来确实像是CRUD接口反模式,但最好能看到一些接口示例进行确认

    这对设计更好的服务接口进行了很好的讨论


    它包括对CRUD反模式的批评和替代方案。

    如果您要实现一个粗糙的用例,您将得到一个粗糙的界面,不要担心。反模式是当你以一种粗俗的方式实现非粗俗的东西时。

    CRUD接口的问题是,它通常会导致违反第二条规则,因为要做任何远程复杂的事情都必须进行多次调用-这将是“闲聊”。CRUD接口的危险在于它会鼓励多次调用。例如,对于处理订单,可以同时使用InsertOrder和InsertOrderLine方法—两个接口调用。这与使用一个定义良好的接口方法来处理整个事务形成对比。我想这两个方法将共享逻辑。你会展示什么样的界面来支持“下订单”用例?首先,我只有一种处理订单的方法,我引用的论文中的“面向服务的四个原则”是一个很好的检查表。嗯……我认为术语“CRUDy”的模糊性使它成为一个有争议的话题。我(可能错误地)认为insertOrder()是一个粗糙的概念,即使我要实现它,它也会处理订单行插入,以及下新订单时发生的所有其他事情。无论如何,我已经将你链接到的论文添加到书签中,以便更详细地阅读。:)
    service.CreateCustomer(c);
    
    foreach(Group group in c.Groups)
    
      service.AddCustomerToGroup(c.CustomerId, group.GroupId);
    
    foreach(Person person in c.Contacts)
    
      service.AddCustomerContact(c.CustomerId, person);