小编Mat*_*att的帖子

使用扩展方法验证域模型

我一直在研究使用服务层来验证我的域模型,然后再将它们保存到数据库中.

我找到了以下使用扩展方法来验证我的模型的例子,但是想知道这样做是否有任何特定的缺点?我没有看到提到的验证(除了数据注释).

我正在考虑实施以下内容:

public class FooService : IFooService {

    public bool Add(Foo foo) {

        if (!foo.IsValid()) {
            return false
        }

        try ... catch
    }
}
Run Code Online (Sandbox Code Playgroud)
public static class validationExtensions {

    public static bool IsValid(this Foo foo) {

        // Call my validation implementation here
    }
}
Run Code Online (Sandbox Code Playgroud)

我很紧张,因为我没有看到这个建议/实施太多.思考?

asp.net-mvc domain-driven-design

4
推荐指数
1
解决办法
922
查看次数

.htaccess应该在源代码管理中进行版本化吗?

如果您遵循应用程序应该在退出版本控制时"开箱即用"运行的原则,.htaccess则应包括在内.然而,有些东西感觉不对,因为它并不真正感觉到应用程序的一部分.我有冲突,有人可以放下心来吗?

apache version-control

4
推荐指数
1
解决办法
814
查看次数

如何使用JavaScript发送特殊的XML请求

我对XML相当陌生...

如何将以下XML发送到“ https://www.exampleserver.com ”?

<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
  <methodName>ContactService.add</methodName>
  <params>
    <param>
      <value><string>privateKey</string></value>
    </param>
    <param>
      <value><struct>
        <member><name>FirstName</name>
          <value><string>John</string></value>
        </member>
        <member><name>LastName</name>
          <value><string>Doe</string></value>
        </member>
        <member><name>Email</name>
          <value><string>there_he_go@itsjohndoe.com</string></value>
        </member>
      </struct></value>
    </param>
  </params>
  </methodCall>
Run Code Online (Sandbox Code Playgroud)

javascript xml xml-rpc

1
推荐指数
1
解决办法
9790
查看次数

在并发编辑环境中为子实体强制实施不变量

鉴于子集合不能超过x个项目的不变量,域名如何保证在并发/ Web环境中强制实施这种不变量?让我们看一个(经典)示例:

我们有一个ManagerEmployees.(假设的)不变量表明经理不能有超过七个直接报告Employee.我们可以这样(天真地)实现这样:

public class Manager {

    // Let us assume that the employee list is mapped (somehow) from a persistence layer
    public IList<Employee> employees { get; private set; }

    public Manager(...) {
        ...
    }

    public void AddEmployee(Employee employee) {

        if (employees.Count() < 7) {
            employees.Add(employee);
        } else {
            throw new OverworkedManagerException();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

直到最近,我才认为这种方法足够好.然而,似乎还有就是它使数据库来存储边缘的情况下超过七名员工,从而打破不变.考虑这一系列事件:

  1. 人员A在UI中编辑管理员
    (内存中有6名员工,数据库中有6名员工)
  2. 人员B在UI中编辑管理员
    (内存中有6名员工,数据库中有6名员工)
  3. B人员添加员工并保存更改
    (内存中有7名员工,数据库中有7名员工)
  4. 人员A添加员工并保存更改
    (内存中有7名员工,数据库中有8名员工)

当再次从数据库中提取域对象时,Manager …

c# domain-driven-design

1
推荐指数
1
解决办法
100
查看次数

域模型是否按定义不可变?

也就是说,是否存在域模型应该可以在其创建之外进行修改的情况?

domain-driven-design

0
推荐指数
1
解决办法
218
查看次数