Нововведение - система сериализации моделей-представлений
Не думал, что напишу сегодня пост. Но всё-таки напишу. Потому как сегодня сделал небольшое нововведение. Или же модификацию, что принесёт улучшение в программу. В том числе и её архитектуру. Ну, в первую половину дня я создавал в проекте новые-старые классы. Начал с классов основных настроек программы. Тут всё как всегда. Определил опции класса и их свойства с дефолтными параметрами. Ну и там, конечно же, как же без этого, внёс некоторые поправки, изменения. Ну а ради чего ещё вся эта беготня затеивалась. И особенно там я внес изменения в раздел опций лицензии. Оставил только самое необходимое. Все данные по аккаунту, которые должны храниться на удаленном сервере, убрал. Пусть они потом там и хранятся. Ну и теперь у меня более простая и наглядная система лицензирования. Не буду реализовывать больше вход в программу с авторизацией через удаленный сервер.
Зачем мне все эти крендели с авторизацией и удаленной проверкой лицензии на ПО нужны были? Да ради понтов, зачем ещё! Ведь всё можно было сделать гораздо лаконичнее. Так что лицензионные ключи для использования программы будут генерироваться только на удаленном сервере. Там, где мой сайт находится. Активация ключей будет проходить тоже через удаленный сервер. И после активации уже на локальном компьютере пользователя будет создаваться файл ключа с данными о лицензии на программу. В этих данных будут храниться дата окончания срока действия лицензии.
Вообще теперь у меня задумка такая. Программа будет условно-бесплатная. Но, разумеется, при этом сильно ограниченная в функционале. Для снятия ограничений нужно будет приобрести лицензию. Лицензия будет иметь срок действия на один год. По истечении года программа продолжит работать в полном объёме своего функционала. Однако обновлять программу уже будет нельзя. Для продолжения получения обновлений пользователю необходимо будет продлить лицензию. Так что вот такой замысел.
Ну и ещё одно новшество сегодня. Я сделал новый механизм сериализации моделей-представлений с сохранением их состояния в файл кэша локального компьютера. Эти данные будут храниться отдельно от файла общего кэша программы. Присваиваться или восстанавливаться сохраненные данные будут сразу при создании экземпляров классов моделей-представлений при передачи в параметр при создании окна. А сохраняться состояние модели-представления будут при закрытии окон. А при закрытии окон состояние, временно сохраненное в память уже будет записываться на диск компьютера. И всё это будет происходить без непосредственной работы внутри пользовательских окон, О! Всё просто, прозрачно, не запутано! Как раньше. Да и это избавляет от неприятного косяка, когда в коде пользовательского окна происходила инициализация сохраненной модели-представления, когда модель текущего окна уже была инициализирована и присвоена окну. То есть не будет лишнего создания экземпляра класса. Вот так.
Да уж, ну и почему же я года три назад до этого не додумался? Наверное потому что мне не попалась на глаза одна статья в интернете, где была описана схема сохранения и восстановления состояния программы с использованием .NET сериализации. Вот сначала сегодня-то я и попытался эту схему реализовать. Получилось лишь частично. Схема в моём случае мне не подходила. Ну и как всегда, пришлось запилить свою. Ну и запилил, в чем проблема. Теперь, надеюсь, проблем и сложностей с сохранением состояния программы на диск компьютера с последующим его восстановлением при повторном запуске программы, не будет.
Ну вот это и всё на сегодня. Дальше будем продолжать добавлять в новый проект старые классы из старого проекта. Разумеется, не без изменений. Очень надеюсь, что к лучшему. Так что пока у меня на этом всё. Ну и до новых постов, до новых свершений.

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.