Более простым решением для управления только лямбдами является использование AWS Chalice . Он может создавать триггеры Lambdas, API Gateway, CloudWatch. Он также может создавать триггеры для SQS и SNS для ваших функций Lambda, но не может , а не создавать очереди SQS или темы SNS.
Таким образом, вы можете развертывать Lambdas постепенно. Инструменты CD также могут быть настроены для автоматического развертывания.
Граф объектов - это не отдельный объект, а скорее набор связанных объектов. В качестве простого примера рассмотрим:
public class Node {
public string Name {...}
public Node Parent {...}
public List<Node> Children {...}
}
где каждый дочерний элемент знает о родителе (а родитель знает о дочернем элементе).
Проблема в том, что xml - это дерево, основанное на свойствах объекта ... и он хочет просто пройтись по ним - то есть с простым родителем / потомком:
, который будет сериализован как:
<Node>
<Name>A</Name>
<!-- no Parent as A is the top node, so null -->
<Children>
<Node>
<Name>B</Name>
<Parent>
<Node>
<Name>A</Name>
*** boom ***
Вы можете видеть, что мы вернулись к A, так что теперь мы находимся в бесконечном цикле.
XmlSerializer
может сериализовать деревья данных, но не полные графы. Вы можете пометить свойства, которые следует игнорировать, например:
[XmlIgnore]
public Node Parent {...}
И теперь это будет работать, но позже нам придется исправить Родитель
.
Напротив, некоторые другие сериализаторы могут обрабатывать графики ( DataContractSerializer
может по запросу). Он делает это, отслеживая объекты по уникальному ключу, но тогда результат будет не таким, как вы ожидаете от обычного XML.
Граф объектов - это набор объектов, которые ссылаются друг на друга.
Сериализация графа объектов является сложной задачей. Сериализатору придется присвоить уникальный идентификатор каждому объекту, а затем заменить ссылки уникальными идентификаторами.
Если бы он выполнял сериализацию в формате XML и обрабатывал графы объектов, ему пришлось бы добавить атрибут «OBJECT_ID» (или другой именованный) к каждому элементу. Это было бы очень легко сломать: что произойдет, если вы добавите свойство с тем же именем в класс, который вы сериализуете?
Самое простое решение - не поддерживать его.
.NET предоставляет двоичную сериализацию, которая имеет дело с этот выпуск, а также выпуск циркулярных ссылок.
Общий объект граф состоит из набора объектов, содержащих ссылки друг на друга. Если у вас есть дерево объектов, в котором нет обратных ссылок, сериализация и десериализация просты. В случае общего графа процесс (де) сериализации должен отслеживать идентичность каждого объекта и использовать некоторую форму алгоритма mark-and-sweep, чтобы гарантировать, что объекты не (де) сериализованы дважды.