В ответ на мысли Джеймса Кларка о М:
Я также вижу некоторые вещи, отсутствующие в М и Осло, но не совсем то же самое.
Было бы неплохо иметь некоторую гарантию того, что M сохранит порядок сохранения сущностей в коллекциях. Однако то, как вы хотите заказать элементы, является деталью реализации. Если у вас есть заказанная коллекция в M, и вы сохраняете это в базе данных, как вы поддерживаете их там? Единственный способ - сделать некоторые предположения о форме данных, добавить какой-то столбец в таблицу, которую вы не указали, и в этом случае имеет больше смысла полностью контролировать форму вашей структуры данных.
То же самое касается личности. Причина, по которой у нас есть идентификатор объекта в памяти, заключается в том, что каждый объект выделяет в памяти свое место и имеет этот адрес в памяти, чтобы однозначно идентифицировать его. Однако при сохранении в базе данных эта информация больше не актуальна, и вам необходим некоторый столбец или комбинация столбцов, чтобы однозначно идентифицировать эту запись, чтобы служить ее первичным ключом. Если вы не укажете это, то M должен придумать для вас столбец, и у вас не будет ссылки на него, за исключением, возможно, какого-то трюка, который может быть трудно обнаружить. Другими словами, нет «внутренней идентичности»; всегда есть данные, которые явно его идентифицируют.
Документы и данные - это не две разные вещи. XML не обрабатывает документы как таковые; это просто представляет иерархические данные, и документы составлены из этого. Пока данные структурированы, они могут быть представлены в M так же, как вы можете писать классы для различных частей иерархии и ссылаться на один тип из другого, чтобы объединить их в произвольно сложные деревья. По общему признанию, это легче объединить в XML, потому что это текст в свободной форме и нет реальной проверки, если вы не пишете схему XSD, но в этих случаях вы выполняете ту же работу, что и определение типов и отношений в классах кода .
Таким образом, в конечном итоге M обрабатывает документы, для которых вы определяете структуру, и эта структура на самом деле не имеет никаких ограничений. Вопрос в том, насколько легко это сделать. Идея создания инструмента для разборки XML-документа и генерации M-схемы довольно хороша. Я полагаю, что было бы не сложно написать его, или чтобы Microsoft включила его в свою цепочку инструментов, как только она станет более зрелой. Что касается структуры, которая становится «уродливой», то если ваша структура данных действительно настолько сложна, то она и есть. Схематизация его имеет большие преимущества, то же самое в классах XSD или M или C #, но если ваша цель - сохранить его в базе данных SQL Server (или, в частности, в репозитории Oslo), то это необходимо и целесообразно.
Я совершенно уверен, что M и цепочка вспомогательных инструментов превратятся в нечто удивительное и полезное. Очевидно, что сейчас многое отсутствует. Лично меня больше беспокоит тот факт, что M в настоящее время нацелен на моделирование на уровне реляционной, физической базы данных, а не на концептуальном уровне (например, Entity Framework), где для разработчика наиболее естественно начать моделирование. В конце концов, при написании классов для создания экземпляров объектов из MGraphs (цель и выходные данные для DSL), ваши классы могут быть определены совершенно иначе, чем они сохраняются. Особенно если вы используете наследование в своих моделях.
Я согласен с вами по стандартизации. Это было бы чудесно. Тем не менее, я думаю, что это менее важно из-за того, что цель состоит в том, чтобы сохранить эти данные в хранилище Осло. Особенно когда службы данных SQL станут достаточно зрелыми для размещения репозитория, у нас будут разные протоколы и форматы для запросов и манипулирования этими данными. Клиенты смогут запрашивать и обновлять через службы данных ADO.NET, форматируя сообщения с помощью JSON, POX, SOAP, MGraph и так далее. Все данные MGraph нужны для подключения к базе данных MGraph, из которой можно получить доступ любым доступным способом.
Вы можете найти больше информации об Осло в моей статье здесь:
http://dvanderboom.wordpress.com/2009/01/17/why-oslo-is-important/