четверг, 1 сентября 2011 г.

Идея

Практика создания простого приложения.

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

1. Проверить свои силы в разных областях программирования
2. Изучить новые технологии
3. Встрясти начинающий заплывать ленью мозг


Вот таккая мотивация. Я, собственно, и не надеюсь, что кто т обудет читать этот блог, потому буду просто кратко записывать сюда свои мысли и описывать процесс создания, чтобы потом показывать внукам :)

Итак, приступим.

Идея.

Я хочу написать очень простое приложение, но написать его "правильно". То есть используюя самые современные тенденции в разработке. Сам я уже 3 года занимаюсь разработкой под ASP.NET - поэтому приложение должно быть десктопным, чтобы не касалось моей текущей деятельности. Пробежав по книгам, что у меня накопились за время учебы, мне пришла в голову мысль - "а напишу ка я свой блокнот". А что, приложение простое дальше некуда. Итак, мой блокнот должен удовлетворять следующим требованиям:

1. Хочу модульности. То есть чтобы можно было писать плагины для блокнота.
2. Посветка синтаксиса, если контент это позволяет. Очень удобно, между прочим. Вот я пользуюсь Notepad++ - заметил в нем такую фишку - он не распознаёт текст по содержимому, он подсвечивает синтаксис только если расширение открываемого файла соответствует.
3. Хочу автоматическго обновления. Думаю, это реально сделать.
4. Хочу хорошо спроектированную систему.
5. Хочу, чтобы блокнот запоминал контент открываемых файлов, поддерживал Undo и Redo, печать документа и даже версионность. Версионность - это означает, что при изменении документа, его потом можно было бы открыть и откатить, например. Или поглядеть историю изменений.
6. Хочу синхранизацию версий между разными компьютерами сети.

Ограничения.

Так как приложение я пишу для себя, то будем считать, что:

1. На клиенте установлен последний фреймворк
2. Клиент не будет открывать файлы больше 1 мб
3. У клиента нет особых требований по размеру используемой памяти/быстродействию. Главное ,чтобы совсем не тупило.

Теперь определимся с технологиями.

1. Для интерфейса я выбрал технологию WPF (http://msdn.microsoft.com/ru-ru/library/ms754130.aspx). Очень перспективная, на мой взгляд.
2. Для модульности я хочу использовать MEF (http://archive.msdn.microsoft.com/mef).
3. Автоматическре обновление. Это я ещё не решил. Но в голове крутится "Click onceeee" :)
4. Обязательное использование паттернов проектирования там, где это оправдано
5. Печать документа.. это я полагаю сделаю средствами WPF или встроенными виндос средствами
6. Версионность. Хочу хранить разные версии файлов в базе данных. Пока что пусть это будет SQL CE.
7. Синхронизация. Для этого я постараюсь найти встроенные решения, ну или wcf на худой конец.

И напоследок. Не уверен, что этот проект закончится быстро, ввиду моей занятости. Однако я не теряю оптимизма и буду потихоньку, не спеша, развивать проект. Опыт ещё никому не повредил, а если ещё и чт то полезное получится - то будет совсем здорово.

Комментариев нет:

Отправить комментарий