Как работать с сервисами, зависящими от области видимости, такими как транзакции, в среде DI и IOC

Предположим, что ваш код правильно разработан для DI и IOC посредством внедрения в конструктор любых зависимостей. Тогда использование контейнера IOC или DI вручную в корне композиции не имеет большого значения для этой проблемы. Я думаю.

В любом случае, я снова и снова нахожусь в мысленной борьбе с тем, как мне лучше всего работать с сервисами, основанными на области видимости, такими как транзакции или другие очевидно временные операции. Есть ограничения, которые я хочу соблюдать:

  • Дон ' ) можно определить отношения между узлами. Мне нужно определить направленные отношения, чтобы отношения имели разные ...

    На платформах GraphDB (Neo4j, OrientDB, FlockDB, HyperGraphDB ...) можно определить отношения между узлами.

    Мне нужно определить направленные отношения, такие, что отношение имеет разные имена в зависимости от его направления.

    Например:

    Parent(A,B) := Sibling(B,A).
    

    Затем я хочу пройти или запросить график, используя как термины, так и направления.

    Конечно, я не хочу определить два отношения, но только одно.

    Иногда я даже хочу использовать ненаправленное имя, например:

    Call(A,B) := Answer(B,A);
    TalkWith(A,B) := Call(A,B) || Call(B,A)
    

    И использовать направленные или косвенные обходы / запросы

    Например, я могу захотеть просить:

    Get any X that TalkWith(A,X))
    

    ,

    Get any X that Call(A,X))
    

    или

    Get any X that Answer(A,X))
    

    Какие существующие платформы GraphDB поддерживают его?

5
задан kapex 24 February 2017 в 15:44
поделиться