|
06.04.2010, 09:09 | #1 |
Moderator
|
|
|
06.04.2010, 09:54 | #2 |
Участник
|
Цитата:
Для начала определимся с терминологией. Объект приложения - уникальная сущность, характеризующаяся рядом обязательных атрибутов: тип, имя, идентификатор объекта, идентификатор родительского объекта. Слой является объединением различных объектов приложения и единицей его развертывания. При этом на одном слое могут находиться лишь объекты приложения, которые в рамках слоя уникально идентифицируются комбинациями значений атрибутов [тип, идентификатор родительского объекта, идентификатор объекта] и [тип, идентификатор родительского объекта, имя] (см. AX models - Part 3 - Multiple models per layer). Объекты с одинаковыми комбинациями значений этих атрибутов могут находиться на разных слоях. Объект приложения верхнего уровня - такой объект, который не относится к другому, родительскому объекту (идентификатор родительского объекта у него пустой), но сам может быть родительским для других объектов, причем эти дочерние объекты могут находиться на разных слоях. Все типы объектов приложения четко разделены на типы, объекты которых являются объектами верхнего уровня, и типы, объекты которых являются дочерними по отношению к другим объектам, более того, для каждого типа объектов верхнего уровня есть четко определенное подмножество возможных типов дочерних объектов. Мощностью такого подмножества типов определяется гранулярность, с которой можно модифицировать объекты верхнего уровня; собственно, на данный момент такая гранулярность характерна для объектов бизнес-логики, но не презентационной логики. С учетом взаимосвязей между различными типами объектов приложения, определяющих гранулярность модифицируемости объектов, и их распределения по слоям, можно из нескольких слоев с учетом их очередности ("приоритетов") собрать объекты приложения верхнего уровня (таблицы, классы, формы, отчеты, etc). На слоях более высокого уровня можно как создавать новые объекты приложения (в т.ч. дочерние по отношению к другим объектам - новые поля таблиц или методы классов), так и создавать копии объектов приложения из нижележащих слоев и модифицировать эти копии - в результате при сборке объектов приложения верхнего уровня будут использованы новые или модифицированные объекты-"гранулы" из слоев более высокого уровня. После сборки объекта верхнего уровня в памяти создается его некое представление, как в CLR создается экземпляр объекта-типа (класса), на который ссылаются все создаваемые экземпляры соответствующего класса (хотя применительно к Аксапте это лишь моя теортия, но я несколько раз был свидетелем того, как "представление" одного класса на клиенте и сервере "разъезжалось"). Сейчас все это делается на базе БД собственного формата, с 6-й версии приложение перенесут в БД Ms SQL Server, суть от этого не меняется. Так вот, что мешает после получения из нескольких слоев целостного представления объекта "верхнего уровня" создать на лету соотв. .NET-сборку и использовать ее для создания экземпляров того или иного класса (в широком смысле)? Насколько я понимаю, схожим образом уже работает NAV 2009: Цитата:
Что такое Service Tier?
Очень кратко - это промежуточный уровень в Microsoft Dynamics NAV 2009. Именно на этом уровне [теперь?] выполняется весь доступ к БД и вся бизнес-логика, что также означает, что именно на этом уровне выполняется код приложения. ... А этот Service Tier занимается интерпретацией кода C/AL? Как вы, вероятно, уже знаете, ответ на этот вопрос - нет. В NAV 2009 большая часть этого самого Service Tier написана на C# и выполняется в виде управляемого кода, кроме того, приложение тоже конвертируется в C# и во время работы также выполняется в виде скомпилированного управляемого кода. Это происходит за счет того, что каждый раз, когда вы компилируете объект в C/SIDE, этот объект "за кулисами" транслируется в C#, и этот исходный код C# сохраняется в таблице Object Metadata в BLOB-поле с названием User Code. Кроме того, в таблице Object Tracking обновляется поле Object Timestamp, что позволяет Service Tier'у увидеть и подхватить эти изменения. Когда ему нужно выполнить код объекта, соответствующий объекту исходный код C# записывается на диск и посредством неких манипуляций компилируется в модуль, который может быть загружен динамически, что позволяет Service Tier на лету заменять отдельные code unit'ы, страницы, etc. Цитата:
Это вы же сами и писали, причем с чужих слов Если же самостоятельно поковырять эту тему с применением инструментов, которые согласно лицензии вроде как применять запрещено, то увидим обычный RPC-интерфейс с парой десятков функций. Цитата:
Цитата:
Цитата:
Today the speed is back. Navigating the AOT is suddently a pleasure again. Meta data heavy operations, like searching, completes an order of magnitude faster. For example; searching all methods on forms for any text completes in 2 seconds.
Цитата:
Цитата:
Сообщение от glibs
Полезные функции все от новых версий ждут. Только не нужно подменять функции технологиями и другим интерфейсом. Это интересно не очень широкому кругу фанатиков, а также неконсервативным разработчикам (которые не являются в данном случае пользователями). А пользователям-практикам нужны не технологии, а результат.
Цитата:
|
|
|
За это сообщение автора поблагодарили: EVGL (2), alex55 (1). |
06.04.2010, 10:21 | #3 |
Участник
|
Цитата:
Сообщение от gl00mie
А что сейчас мешает реализовать технологию слоев на .NET? В принципе, что она из себя представляет?
... Так вот, что мешает после получения из нескольких слоев целостного представления объекта "верхнего уровня" создать на лету соотв. .NET-сборку и использовать ее для создания экземпляров того или иного класса (в широком смысле)? Насколько я понимаю, схожим образом уже работает NAV 2009 Но речь идет скорее не о реализации и технологии, а о поддержке технологии средой разработки. Сравнение слоев, фиксированный интерфейс методов из нижележащих слоев (тип возвращаемого результата, список переменных с типами), автоматический подъем в новый слой при изменении объекта. и т.п. сборками - это правильно. Но уж очень трудоемко по сравнению со слоями в Аксапте. Хотя согласен, что на порядки более гибко, чем слои в Аксапте. |
|
Теги |
.net, ssrs, visual studio, workflow, как правильно, права доступа, производительность, ax2012 |
|
|