小编Rom*_*kin的帖子

类型约束开放泛型不适用于RegistrationBuilder

使用时,下面的代码不起作用RegistrationBuilder.如果RegistrationBuilder未将其添加到AssemblyCatalog构造函数中,请键入约束泛型工作.

[TestClass]
public class TypeConstraints
{
    [TestMethod]
    public void TypeConstraintTest()
    {
        var rb = new RegistrationBuilder();
        var a = new AssemblyCatalog(Assembly.GetExecutingAssembly(), rb);
        //var a = new AssemblyCatalog(Assembly.GetExecutingAssembly()); //Works!
        var aggr = new AggregateCatalog(a);
        var c = new CompositionContainer(aggr);
        var item = c.GetExportedValue<IConstrained<Item>>();
        Assert.IsNotNull(item);
    }
}

public interface IConstrained<T> where T : IItem
{}

[Export(typeof (IConstrained<>))]
public class Constrained<T> : IConstrained<T> where T : IItem
{}

public class Item : IItem
{}

public interface IItem
{}
Run Code Online (Sandbox Code Playgroud)

.net convention mef open-generics .net-4.5

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

主键列是否包含在辅助索引的末尾

鉴于这些表

Foo
 id (PK)
 name
 updated
Run Code Online (Sandbox Code Playgroud)
Bar
 foo_id (FK)
 name
 updated
Run Code Online (Sandbox Code Playgroud)

这个查询:

SELECT * 
FROM Foo as f
JOIN Bar as b
ON f.id=b.foo_id
WHERE b.name = 'Baz' AND f.name = 'Baz'
ORDER BY f.updated ASC, f.id ASC
LIMIT 10
OFFSET 10
Run Code Online (Sandbox Code Playgroud)

这些索引是否适合添加 - 在 MySql InnoDB 中,主键列会自动添加到辅助索引的末尾。Postgres 的情况如何?

CREATE INDEX foo_name_id_idx ON foo(name, id)
CREATE INDEX bar_name_id_idx ON bar(name, id)
Run Code Online (Sandbox Code Playgroud)

postgresql indexing

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

域驱动设计和跨领域关注接口定义

我公司正在尝试采用DDD。似乎DDD的指导是要求域程序集定义其所有服务接口,并允许实现者对域程序集进行引用并实现服务接口。然后使用DI,该域将获得实现。但是,出于交叉考虑,要求域程序集重新定义接口(例如日志记录等)不是接口程序集的核心业务领域,这是不负责任的。我注意到,诸如Quartz.NET之类的许多商业组件都在使用一组标准的,广泛接受的接口,例如Apache Commons,以一种框架友好的方式解决了跨领域的问题。这是否与DDD方式一致,还是真的像AOP这样跳了起来,

以供参考:

来自http://www.infoq.com/articles/ddd-in-practice

“这些是可重用的非域相关问题,通常会在包括域层在内的所有代码中分散和重复。将这种逻辑嵌入域对象中会导致域层与非域相关代码纠结和混乱。”

来自http://cyrille.martraire.com/2009/12/your-crosscuttingconcerns-are-someone-else-core-domai/

“您的跨领域问题是其他人的核心领域”

.net c# domain-driven-design cross-cutting-concerns

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

解组具有更改的嵌入类型的消息时出现未知字段错误

给定一个这样的原型:

message Request {
    uint64 account_id = 1;
    message Foo{
        uint64 foo_id = 1;
    }
    repeated Foo foos = 2;

Run Code Online (Sandbox Code Playgroud)

当我添加一个名为的字段时bar_id

message Request {
    uint64 account_id = 1;
    message Foo{
        uint64 foo_id = 1;
        uint64 bar_id = 2;
    }
    repeated Foo foos = 2;
Run Code Online (Sandbox Code Playgroud)

client使用旧的via反序列化时出现错误proto.UnmarshalText(msg, request)。错误是unknown field name "bar_id" in serviceA.Request_Foo

我知道 proto-3 中的处理方式发生了很多变化unknown field,但这不是预期的,因为它似乎违反了前向兼容性(新服务器向旧客户端发送请求)。这与使用嵌入类型有关吗?在不强制客户端更新的情况下更新服务器的最佳方法是什么?

go protocol-buffers proto3

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