2009-10-31 2 views
4

В процессе разработки приложения мы пришли к выводу, что пользователь должен быть доступен для добавления пользовательского поведения в программу, и мы хотим разрешить это с помощью сценариев, однако ни один из них мы получили какой-либо опыт встраивания сценария в приложение и даже меньше проектирования приложения, чтобы успешно разрешить создание сценариев.Ресурсы для успешного создания приложений с возможностью сценариев

Мы полагаем, что ключ к созданию сценария для приложения - это создание большого набора событий, на которые могут реагировать скрипты, а также функции экспонирования для использования сценария. Вместо того, чтобы безрассудно рисковать в сценарии, мы предпочли бы прочитать некоторые ресурсы по этой теме.

Мы ищем ресурсы (желательно книги), которые охватывают процесс разработки приложения для сценариев. Любые советы также были бы замечательными. Более или менее любой совет по этой теме был бы приятным.

Если требуется подробная информация о проекте, просто скажите, что я добавлю абзац, поясняющий более подробные сведения.

ответ

2

Как вы хотите сделать свой сценарий техничным?

Если ваши пользователи с удовольствием используют .Net, то эта статья дает введение в создание расширяемого приложения.

http://www.developerfusion.com/article/4529/using-net-to-make-your-application-scriptable/

Когда я исследовал подобную вещь, некоторое время назад я также нашел технические примечания по применению SharpDevelop быть очень полезным.

http://www.icsharpcode.net/TechNotes/ProgramArchitecture.pdf http://damieng.com/blog/2007/11/08/dissecting-a-c-application-inside-sharpdevelop

+0

Я начал с LUA с тех пор, как уже знаком, но поскольку управляемая оболочка для него была противоречивой и не предоставляла большой информации об отладке, я решил попробовать динамически компилировать .NET-код, и я должен сказать, что Я люблю это. –

2

Встраивание возможности создания сценариев в приложение будет очень сильно зависеть от языка и технологии, которые составляют приложение. В вашем случае при разработке с C# есть несколько интересных вариантов из-за работы с динамическим языком Runtime. Вероятно, вам стоит взглянуть на проекты , так как они обеспечат наилучшую общую интеграцию с .NET-приложениями, поскольку сами они реализуют языки сценариев Ruby и Python на платформе .NET. Поскольку мой опыт сосредоточен на Ruby, я бы посмотрел информацию на hosting IronRuby in a .NET application.

Что касается общей книги, я бы, вероятно, начинал здесь: Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages. Для специфики IronPython есть этот заголовок от Manning: IronPython in Action. И для IronRuby эта книга еще находится в Бета: IronRuby in Action.

Это может быть твердый ресурс, выходящий из конференции профессионального разработчика Microsoft: Using Dynamic Languages to Build Scriptable Apps.

+0

Зачем использовать IronRube/Pything вместо C#? –

+0

Поскольку C# не предназначен для использования в сценариях, он предназначен для компиляции, а не для интерпретации. Python или Ruby может быть проще подобрать для пользователя, который не является программистом. Даже если пользователь является программистом, могут быть причины принять Ruby или Python, поскольку сценарии могут быть более краткими и содержать больше логики и меньше разговаривать с компилятором. –

+0

У вас может быть точка. У меня нет опыта ни с Ruby, ни с Python. На каком языке выполняется сценарий, он должен быть взаимозаменяемым, поскольку вы можете использовать CodeCompiler в соответствии с предпочтительным языком. –

1

Как трудно это действительно зависит от ваших требований. Это может быть довольно легко.

В моем приложении я создал небольшой набор классов, которые отображали базовую модель данных, которые я хотел бы сделать доступными для скриптов. Я создал диспетчер сценариев, который создает экземпляр движка IronPython, добавляет экземпляр корневого объекта модели данных в качестве глобального и загружает и исполняет скрипт.

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

Смежные вопросы