Создание сменной архитектуры с Adobe AIR

GraphQL по сути не разрешает произвольные запросы к объектам.

Где-то в вашей схеме будет дополнительное объявление, например

type Query {
  User(id: ID!): User
}

Имена в типе Query - это запросы верхнего уровня, которые вы можете запустить, а аргументы, перечисленные в этом запросе, - это Только аргументы они принимают. (Существует соответствующий тип Mutation для мутаций верхнего уровня, который может изменить основное состояние и использовать ключевое слово mutation в запросе.)

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

userByName(name: String!): User

, но вам также придется предоставить реализацию этого запроса или обработать дополнительный параметр, который является изменением кода.

16
задан benjismith 5 December 2008 в 18:21
поделиться

4 ответа

Luca Tettamanti уже дал хорошие ответы на Ваши конкретные вопросы, таким образом, я просто предложу некоторую дополнительную информацию об общем предмете:

Я реализовал простой сменный API для приложения Flex с помощью ModuleManager класс (и другой материал в mx.modules пакет.) Суть его - то, что Вы разделяете плагины на подклассы от ModuleBase и используйте ModuleManager в приложении хоста для загрузки их. Затем у Вас есть реализация плагинов единый интерфейс (например. IMyAppPlugin) и используйте своего рода фасад, чтобы представить и реализовать интерфейс к хост-приложению, которое могут использовать плагины (например. MyAppFacade implements IMyAppFacade.) Каждый раз, когда плагины загружаются, введите эту ссылку фасада в них.

Тема "Модульный обзор приложений" в справке Flex 3 имеет некоторую хорошую информацию (подраздел "Домены модуля" обсуждает домены приложения в контексте модулей.) Вот выборка:

"По умолчанию модуль загружается в дочерний домен текущего домена приложения. Можно указать другой домен приложения при помощи applicationDomain свойства класса ModuleLoader".

Тема "Используя класс ApplicationDomain" входит в большую глубину на предмет доменов приложения, и необходимо определенно считать его, если Вы уже не имеете.

5
ответ дан 30 November 2019 в 23:09
поделиться
  1. applicationDomain больше похож на пространство имен, он группирует определения классов и поместил их в иерархию: домен может непосредственно получить доступ к символам в своем собственном домене или в родительском домене, но не в ребенке или одноуровневых доменах (или лучше: это не может сделать этого непосредственно - это должно перейти объект applicationDomain, спросив определение данного класса); при загрузке внешнего swf можно решить, куда поместить новые символы: дочерний домен (значение по умолчанию), новый домен, присоединенный к системе (использующий пустой указатель), текущий домен, домен, присоединенный где-то в другом месте (явно передающий родителя нового домена). Обратите внимание, что новые символы никогда не будут перезаписывать символы в текущем домене, но то же имя может существовать в нескольких доменах.
    К сожалению, Вы не можете перечислить классы в данном домене (хорошо, по крайней мере, я не знаю способа сделать это), но общее решение состоит в том, чтобы потребовать (как в "Сменном Интерфейсе") присутствия известной фабрики в каждом swf, который возвратит или определение (Класс) плагина или сам плагин.
  2. Вы просто имеете, идут, получают ссылку на объект так или иначе (фабрика), затем это - просто другой объект. Нет никакого маршалинга: домен это - просто логическое разделение пространства имен (это - древовидное ветвление системного домена).
  3. Нет :) Но предупредите: это может легко превратиться в ад для GC, где неиспользованные домены не могут быть разгружены из-за ссылочного распространения в другом домене. Я предлагаю смотреть на многоядерную платформу PureMVC, возможно с каналами для обеспечения строгого разделения между плагинами.

Btw, Flash player также понятие домена защиты, но я на самом деле никогда не касался его, таким образом, я не делаю известный, что возможности здесь.

6
ответ дан 30 November 2019 в 23:09
поделиться

Ответ на оператор относительно Java как возможная сменная архитектура:

Оказывается, что Java использовался для создания сменных систем архитектуры много лет. Относительно к клиентскому, Равноденствие платформы управления модулем OSGi является, вероятно, лучшим известным. Однажды Eclipse IDE осуществил рефакторинг их сменную архитектуру сверху Равноденствия OSGi. Eclipse IDE является, возможно, одной из самых успешных клиентских сменных систем архитектуры, все же созданных - с исторической точки зрения долговечности, а также ширины базы пользователей и последующего сообщества сменной разработки. Они также предлагают свою сменную архитектуру как основополагающую платформу для разработки произвольных клиентских приложений - Eclipse RCP.

Я просто должен был прервать это, потому что, хотя Java был расположен как, возможно, очень слабый выбор для этого, это на самом деле намного более успешно, чем какой-либо другой язык/среда выполнения до настоящего времени в поставке рабочих систем этого вида - особенно по сравнению с.NET C#, которая, конечно, имеет хорошее врожденное средство для модулей. Довольно нелепо, но там у Вас есть он.

Относительно Adobe AIR, я - dev управление проектом, это создается на AIR. В нашем случае наша расширяемость модуля всегда будет освобожденной от веб-сервера - не локальный каталог. Flex имеет

<mx:Module/>

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

Увы, разочарование AIR является своим отсутствием любых API класса для запуска других приложений. Можно загрузить URL для загрузки чего-то в браузере по умолчанию пользователя, но Вы не можете запустить, скажем, Excel. И Java и C# имеют API для запуска других приложений как внешние процессы.

0
ответ дан 30 November 2019 в 23:09
поделиться

Вы пытались загрузить дополнительные приложения?
Для этого в AIR есть хорошая документация, и мне удалось это сделать за несколько часов. Однако одна и та же реализация - это другая история во Flex из-за нарушения изолированной программной среды между суб-приложением и основным приложением. Я целыми неделями бился головой о стену.

0
ответ дан 30 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: