Мы находимся в процессе переноса существующего приложения JS на Silverlight. Вы можете представить приложение как приложение для управления документами:
1.) Документы хранятся в виде документов XML.
2.) Документы могут быть разных типов. Типы документов могут быть добавлены без изменения исходного кода (все находится в БД или ФС).
- Каждый тип документа имеет разные формы для редактирования документов.
- Каждый тип документа имеет свою форму для просмотра документов.
Редактирование и просмотр форм создаются из документа XML (и схемы XML) с использованием одного файла XSLT и CSS. Формы между типами документов могут быть очень похожими или очень разными. Некоторые могут содержать маркеры, автоматическую нумерацию (некоторых элементов), границы, отступы, разные стили шрифта, разрывы строк ... некоторые могут не содержать.
Теперь вопрос :)
Я не уверен, как перенести эту функциональность в SL. Я вижу два основных варианта:
- создать один универсальный генератор для редактирования форм и один универсальный генератор для форм просмотра
- создать генератор для редактирования форм и генератор для форм просмотра для каждого типа документа (система, которая у нас сейчас)
Что касается первого варианта, я думаю, что я должен «изобрести» некоторый файл метаданных, который расскажет, как генерировать (стилизовать) формы. Поскольку мы должны поддерживать много разных стилей, я думаю, что это все равно, что изобретать новый CSS.
Для второго варианта я не знаю, как создать этот генератор. Как я уже сказал, добавление нового типа документа (и новых генераторов) должно быть сделано без изменения или перекомпиляции исходного кода и должно быть максимально простым (типы документов меняются ежедневно). У нас был XSLT в JS, но, насколько я знаю, в SL нет поддержки XSLT.
Кроме того, я знаю, что генератор, вероятно, должен генерировать код XAML, а не HTML.
Мы создали прототип, в котором у нас есть разные генераторы для каждого типа документа. Каждый генератор хранится в отдельной сборке, которая затем динамически загружается в приложение SL. Но я боюсь, что создание этого для каждого типа документа будет кошмаром.
Что вы предлагаете? Пожалуйста, дайте мне знать, если вам нужно больше информации. Спасибо!
Ура!