Как расположить форму и изменить ее размер (Windows Forms .NET)
При создании формы размер и расположение изначально задаются как значения по умолчанию. Размер формы по умолчанию обычно имеет ширину и высоту 800 x 500 пикселей. Начальное расположение, отображаемое при отображении формы, зависит от нескольких различных параметров.
Изменить размер формы можно во время разработки с помощью Visual Studio, а также во время выполнения с помощью кода.
Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.
Изменение размера с помощью конструктора
После добавления новой формы в проект размер формы задается двумя разными способами. Во-первых, для него можно задать маркеры изменения размера в конструкторе. Перетаскивая правый край, нижний край или угол, можно изменить размер формы.

Второй способ изменения размера формы — в конструкторе на панели «Свойства». Выберите форму, а затем найдите панель Свойства в Visual Studio. Прокрутите вниз до раздела Размер и разверните его. Можно вручную задать параметры Ширина и Высота.

Изменение размера в коде
Несмотря на то, что начальный размер формы задается в конструкторе, его можно изменить с помощью кода. Использование кода для изменения размера формы полезно, когда в каком-либо приложении размера формы по умолчанию недостаточно.
Чтобы изменить размер формы, измените свойство Size, которое представляет ширину и высоту формы.
Изменение размера текущей формы
Размер текущей формы можно изменить, пока код выполняется в контексте формы. Например, если имеется Form1 с кнопкой, то при нажатии на нее вызывается обработчик событий Click для изменения размера формы:
private void button1_Click(object sender, EventArgs e) => Size = new Size(250, 200);
Private Sub Button1_Click(sender As Object, e As EventArgs) Size = New Drawing.Size(250, 200) End Sub
Изменение размера другой формы
Размер другой формы можно изменить после ее создания с помощью переменной, ссылающейся на форму. Например, предположим, что у вас есть две формы: Form1 (начальная форма в этом примере) и Form2 . В Form1 имеется кнопка, которая при нажатии вызывает событие Click . Обработчик этого события создает новый экземпляр формы Form2 , задает размер, а затем отображает его:
private void button1_Click(object sender, EventArgs e)
Private Sub Button1_Click(sender As Object, e As EventArgs) Dim form = New Form2 With < .Size = New Drawing.Size(250, 200) >form.Show() End Sub
Если свойство Size не задано вручную, размер формы по умолчанию — это размер, заданный во время разработки.
Расположение с помощью конструктора
При создании и отображении экземпляра формы начальное расположение формы определяется свойством StartPosition. Свойство Location содержит текущее положение в форме. Оба свойства можно задать с помощью конструктора.

| Перечисление FormStartPosition | Description |
|---|---|
| CenterParent | Форма находится в пределах родительской формы. |
| CenterScreen | Форма располагается по центру текущего экрана. |
| Вручную | Положение формы определяется свойством Расположение. |
| WindowsDefaultBounds | Форма размещается в расположении Windows по умолчанию и ее размер подгоняется под размер по умолчанию, который определен Windows. |
| WindowsDefaultLocation | Форма размещается в расположении Windows по умолчанию и не изменяется. |
Значение CenterParent работает только с формами, которые являются либо дочерними формами многодокументного интерфейса (MDI), либо обычными формами, отображаемыми с помощью метода ShowDialog. CenterParent не влияет на обычную форму, которая отображается с помощью метода Show. Чтобы разместить форму по центру (переменная form ) другой формы (переменная parentForm ), используйте следующий код:
form.StartPosition = FormStartPosition.Manual; form.Location = new Point(parentForm.Width / 2 - form.Width / 2 + parentForm.Location.X, parentForm.Height / 2 - form.Height / 2 + parentForm.Location.Y); form.Show();
form.StartPosition = Windows.Forms.FormStartPosition.CenterParent.Manual form.Location = New Drawing.Point(parentForm.Width / 2 - form.Width / 2 + parentForm.Location.X, parentForm.Height / 2 - form.Height / 2 + parentForm.Location.Y) form.Show()
Расположение с помощью кода
Несмотря на то, что для задания начального расположения формы можно использовать конструктор, изменить режим начальной позиции или задать расположение вручную можно с помощью кода. Использование кода для расположения формы полезно, если необходимо вручную разместить форму и изменить ее размер относительно экрана или других форм.
Перемещение текущей формы
Переместить текущую форму можно, пока код выполняется в контексте формы. Например, если имеется Form1 с кнопкой, то при нажатии на нее вызывается обработчик событий Click . Обработчик в этом примере изменяет расположение формы на верхнюю левую часть экрана путем задания свойства Location:
private void button1_Click(object sender, EventArgs e) => Location = new Point(0, 0);
Private Sub Button1_Click(sender As Object, e As EventArgs) Location = New Drawing.Point(0, 0) End Sub
Расположение другой формы
Расположение другой формы можно изменить после ее создания с помощью переменной, ссылающейся на форму. Например, предположим, что у вас есть две формы: Form1 (начальная форма в этом примере) и Form2 . В Form1 имеется кнопка, которая при нажатии вызывает событие Click . Обработчик этого события создает новый экземпляр Form2 формы и задает расположение:
private void button1_Click(object sender, EventArgs e)
Private Sub Button1_Click(sender As Object, e As EventArgs) Dim form = New Form2 With < .Location = New Drawing.Point(0, 0) >form.Show() End Sub
Если значение Location не задано, позиция формы по умолчанию основана на том, что StartPosition свойство было задано во время разработки.
См. также
- Как добавить форму в проект (Windows Forms .NET)
- Общие сведения о событиях (Windows Forms .NET)
- Размещение и компоновка элементов управления (Windows Forms .NET)
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Локализация дефектов и оформление баг-репортов
Дефект (или баг) — изъян в компоненте или системе, который может привести компонент или систему к невозможности выполнить требуемую функцию. Дефект, обнаруженный во время выполнения, может привести к отказам компонента или системы. Например: невозможно сохранить данные после заполнения анкеты.
Ошибка — действие человека, которое может привести к неправильному результату. Например: ввод букв в поле для ввода даты (должны приниматься только цифры) с последующим сохранением данных.
Отказ (failure) — отклонение компонента или системы от ожидаемого результата, выполнения, эксплуатации. Например: при переходе на следующую страницу анкеты данные предыдущей страницы затираются.
Классификация багов
- Функциональные дефекты — в этом случае приложение функционально работает не так, как задумано. Например:
— не сохраняются изменения данных в профиле;
— не работает добавление комментария;
— не работает удаление товара из корзины;
— не работает поиск.
- Визуальные дефекты — в этом случае приложение выглядит не так, как задумано.
— текст вылезает за границы поля;
— элемент управления сайтом наслаивается на нижестоящий элемент;
— не отображается картинка.
- Логические дефекты — в этом случае приложение работает неправильно с точки зрения логики.
— можно поставить дату рождения «из будущего», а также несуществующие даты — 31 февраля, 32 декабря и т.п.;
— можно сделать заказ, не указав адрес доставки;
— логика поиска работает неправильно.
— орфографические и пунктуационные ошибки;
— картинка товара не соответствует карточке товара;
— конвертация валют идет по неправильному курсу (калькулятор считает правильно, но при программировании указан неверный курс).
- Дефекты удобства использования — в этом случае приложение неудобно в использовании.
— отсутствие подсветки или уведомления об ошибке при некорректно заполненных полях формы;
— сброс всех данных при ошибке заполнения регистрационной формы;
— перегруженный интерфейс.
- Дефекты безопасности — в этом случае могут быть затронуты пользовательские данные, есть риск падения системы и т.п.
— можно получить логин, пароль в результате использования SQL-инъекций;
— неограниченное время жизни сессии после авторизации.
Итак, мы рассмотрели типы и виды дефектов. Теперь расскажем о том, как их документировать.

Документирование ошибок
Отчет об ошибке (Bug Report) — это документ, описывающий ситуацию или последовательность действий, приведшую к некорректной работе объекта тестирования, с указанием причин и ожидаемого результата.
«Следующий этап заключается в документировании ошибок», — могли бы подумать вы, но оказались бы неправы.
Нельзя просто взять и задокументировать найденный дефект. Прежде всего, важно выполнить локализацию.
Например, если дефект может затрагивать другие части системы, то это обязательно нужно отобразить в баг-репорте, предварительно проверив эту гипотезу. Также необходимо очень подробно описать все условия и шаги, чтобы разработчик смог этот баг проверить и в него поверить .
Как же искать ошибки в системе таким образом, чтобы разработчикам было предельно понятно, откуда эти дефекты взялись и как их исправлять? Следует придерживаться определенного плана действий, который мы опишем далее.
Перепроверка дефекта
Нужно проверить себя еще раз: воспроизвести баг снова при тех же условиях. Если ошибка не повторилась при очередном тестировании, то нужно разобраться, точно ли были соблюдены все действия и шаги воспроизведения, приведшие к этому результату. Возможно, дефект появляется только при первоначальной загрузке системы (при первом использовании). Для того, чтобы более точно определить условия воспроизведения ошибки, необходимо эту ошибку локализовать.
Локализация дефекта
Чтобы локализовать баг, необходимо собрать максимальное количество информации о его воспроизведении:
- Выявить причины возникновения дефекта
Например, не проходит восстановление пароля. Необходимо выявить, откуда приходит запрос на сервер в неверном формате — от backend либо frontend.
- Проанализировать возможность влияния найденного дефекта на другие области
Например, в одной из форм, которую редко используют, возникает ошибка при нажатии на кнопку «Редактировать». Если в качестве временного варианта решения проблемы скрыть кнопку, это может повлиять на аналогичную форму в другом окне/вкладке, к которой пользователи обращаются чаще. Для качественного анализа необходимо знать, как работает приложение и какие зависимости могут быть между его частями.
- Отклонение от ожидаемого результата
Нужно проверить, соответствует ли результат тестирования ожидаемому результату. Справиться с этой задачей помогает техническое задание (в частности, требования к продукту), где должна быть задокументирована информация о тестируемом ПО и его функционировании. Пропускать этот шаг при тестировании не следует: если специалист недостаточно опытен, не зная требований, он может ошибаться и неправильно понимать, что относится к багам, а что нет. Внимательное изучение документации позволяет избежать таких ошибок.
Необходимо воспроизвести баг в разных операционных системах (iOS, Android, Windows и т.д.) и браузерах (Google Chrome, Mozilla, Internet Explorer и др.). При этом нужно проверить требования к продукту, чтобы выяснить, какие системы должны поддерживаться. Некоторые приложения работают только в определенных ОС или браузерах, поэтому проверять другие варианты не нужно.
- Проверить на разных устройствах
Например, desktop-приложение предназначено для использования на компьютерах, поэтому зачастую нет необходимости тестировать его на мобильных устройствах. Для смартфонов в идеале должна быть разработана отдельная мобильная версия, которую, в свою очередь, нет смысла тестировать на компьютерах. Кроме того, есть web-приложения, которые могут работать и на компьютерах, и на мобильных устройствах, а тестировать их нужно на всех типах устройств. Для тестирования можно использовать эмулятор той или иной среды, но в рамках статьи мы не будем затрагивать этот вопрос.
Мобильную версию приложения нужно тестировать на нескольких устройствах с разной диагональю экрана. При этом можно руководствоваться требованиями к ПО, в которых должно быть указано, с какими устройствами это ПО совместимо.
- Проверить в разных версиях ПО
Для того, чтобы не запутаться в реализованных задачах, в разработке используют версионность ПО. Иногда тот или иной баг воспроизводится в одной версии продукта, но не воспроизводится в другой. Этот атрибут обязательно необходимо указывать в баг-репорте, чтобы программист понимал, в какой ветке нужно искать проблему.
- Проанализировать ресурсы системы
Возможно, дефект был найден при нехватке внутренней или оперативной памяти устройства. В таком случае баг может воспроизводиться на идентичных устройствах по-разному.
Для того, чтобы оптимизировать сроки тестирования, мы рекомендуем использовать техники тест-дизайна.
Фиксирование доказательств
Доказательства воспроизведения бага нужно фиксировать при помощи логов, скринов или записи экрана.
- Логи (лог-файлы или журнал) — это файлы, содержащие системную информацию работы сервера или компьютера, в них хранят информацию об определенных действиях пользователя или программы. Опытному разработчику бывает достаточно посмотреть в логи, чтобы понять, в чем заключается ошибка. Обычно логи прикрепляют к баг-репорту в виде .txt-файла.
Live-логирование – это снятие системных логов в режиме реального времени. Для этого можно использовать следующие программы: Fiddler, Visual Studio для Windows, iTools, Xcode для iOS, Android Debug Monitor, Android Studio для Android и др.
- Скрин (снимок) экрана. При ошибках в интерфейсе снимок помогает быстрее разобраться в проблеме. Программ для снятия скриншотов очень много, каждый QA-специалист может использовать те, которые ему наиболее удобны: Jing, ShareX, Lightshot и др.
- Скринкаст (англ. screen – экран, broadcasting – трансляция) – это запись видеоизображения с экрана компьютера или другого цифрового устройства. Это один из самых эффективных способов поделиться тем, что происходит на экране монитора. Таким способом QA-специалисту легко наглядно показать ошибки в работе любого программного продукта. Сделать запись с экрана помогут незаменимые инструменты любого QA-специалиста: Snagit, Monosnap, Movavi Screen Capture, Jing, Reflector, ADB Shell Screenrecord, AZ Screen Recorder и др.
- Рекордер действий. Программные средства дают возможность воспроизвести все записанные движения мышки и действия, производимые на клавиатуре компьютера. Примеры программ – Advanced Key and Mouse Recorder для desktop-платформ.
Оформление баг-репорта
Все найденные дефекты обязательно нужно документировать, чтобы каждый задействованный на проекте специалист мог получить инструкции по воспроизведению обнаруженного дефекта и понять, насколько это критично. Если в команде принято устно передавать разработчику информацию о найденных дефектах, есть риск упустить что-то из вида.
Дефект, который не задокументирован – не найден!
Когда вся необходимая информация собрана, а баг локализован, можно приступать к оформлению баг-репорта в таск-трекере. Чем точнее описание бага, тем меньше времени нужно для его исправления. Список атрибутов для каждого проекта индивидуален, но некоторые из них – например, шаги воспроизведения, ожидаемый результат, фактический результат – присутствуют практически всегда.
Атрибуты баг-репорта:
1. Название
Баг должен быть описан кратко и ёмко, иметь понятное название. Это поможет разработчику разобраться в сути ошибки и в том, может ли он взять этот случай в работу, если занимается соответствующим разделом системы. Также это позволяет упростить подключение новых специалистов на проект, особенно если разработка ведется много лет подряд, а запоминать баги и отслеживать их в таск-трекере становится все сложнее. Название проекта можно составлять по принципу «Где? Что? Когда?» или «Что? Где? Когда?», в зависимости от внутренних правил команды.
Например:
Где происходит? — В карточке клиента (в каком разделе системы).
Что именно происходит? — Не сохраняются данные.
Когда происходит? — При сохранении изменений.
2. Проект (название проекта)
3. Компонент приложения
В какой части функциональности тестируемого продукта найден баг.
4. Номер версии
Версия продукта, ветка разработки, в которой воспроизводится ошибка.
5. Критичность
Этот атрибут показывает влияние дефекта на функциональность системы, например:
· Blocker — дефект, блокирующий использование системы.
· Critical — ошибка, которая нарушает основную бизнес-логику работы системы.
· Major — ошибка, которая нарушает работу определенной функции, но не всей системы.
· Minor — незначительная ошибка, не нарушающая бизнес-логику приложения, например, ошибка пользовательского интерфейса.
· Trivial — малозаметная, неочевидная ошибка. Это может быть опечатка, неправильная иконка и т.п.
Приоритет определяет, насколько срочно нужно исправить ошибку. Обычно выделяют следующие виды приоритетов:
High — ошибка должна быть исправлена как можно скорее, является критичной для проекта.
Medium — ошибка должна быть исправлена, но её наличие не является критичным для проекта.
Low — ошибка должна быть исправлена, но не требует срочного решения.
Статус указывает стадию жизненного цикла бага, взят он в работу или уже решен. Примеры: to do, in progress, in testing (on QA), done. В зависимости от особенностей проекта возможны дополнительные статусы (например, аналитика).
8. Автор баг-репорта
9. На кого назначен
Баг-репорт отправляют тимлиду проекта или разработчику, который будет заниматься исправлением дефекта, в зависимости от принятых в команде договоренностей.
Где найден баг: операционная система, наименование и версия браузера.
11. Предусловие (если необходимо)
Необходимо для описания действий, которые предшествовали воспроизведению бага. Например, клиент авторизован в системе, создана заявка с параметрами ABC и т.д. Баг-репорт может не содержать предусловие, но иногда оно бывает необходимо для того, чтобы проще описать шаги воспроизведения.
12. Шаги воспроизведения
Один из самых важных атрибутов — описание шагов, которые привели к нахождению бага. Оптимально использовать 5-7 понятных и кратких шагов для описания бага, например:
1. Открыть (. )
2. Кликнуть (…)
3. Ввести в поле А значение N1
4. Ввести в поле B значение N2
5. Кликнуть кнопку «Calculate»
13. Фактический результат
Что произошло после воспроизведения указанных выше шагов.
14. Ожидаемый результат
Что должно произойти после воспроизведения шагов тестирования, согласно требованиям.
15. Прикрепленный файл
Логи, скриншоты, видеозапись экрана — всё, что поможет разработчику понять суть ошибки и исправить ее.
После составления баг-репорта обязательно нужно проверить его, чтобы избежать ошибок или опечаток.
Локализация и оформление багов — необходимые составляющие работы QA-специалиста с программным продуктом. Приглашаем подробнее ознакомиться с услугами тестирования и обеспечения качества в SimbirSoft.
РЕШЕНИЕ ЗАДАЧИ ФИЛЬТРАЦИИ ПРИ ОПТИМАЛЬНОЙ НАСТРОЙКЕ РАДИООТРАЖАЮЩЕГО СЕТЕПОЛОТНА ТРАНСФОРМИРУЕМОГО РЕФЛЕКТОРА Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»
Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Кабанов С. А., Митин Ф. В.
В данной работе рассматривается решение задачи фильтрации с применением фильтра Калмана при оптимальной настройке радиоотражающего сетеполотна . Рассмотрен крупногабаритный трансформируемый рефлектор космического базирования. В процессе выведения данной конструкции на заданную орбиту возможен уход реальной формы радиоотражающего сетеполотна от желаемой. Для обеспечения поточечной настройки активной части сетеполотна применяется тросо-вантовая система. Узловые точки радиоотражающей поверхности связаны с тыльной стороной сетеполотна через ванты. В них встроены актюаторы, позволяющие изменять длину вант. В качестве исполнительного органа выбран пьезоактюатор . Путем поточечной настройки пьезоактюаторов происходит натяжение сетеполотна до необходимой формы. Это позволяет обеспечивать качественную диаграмму направленности и высокий уровень сигнала при приёмепередаче данных. Приведены конкретные значения возмущающих воздействий. Для измерения напряжения питания на пьезоактюаторе и длины ванты применяются преобразователь напряжения и лазерный сканер. Определены возможные отклонения от расчётного начального положения. В соответствии с принципом разделения сперва решается задача оценивания, затем задача управления. Задача оценивания решается с использованием фильтра Калмана. Задача управления — с использованием алгоритма оптимального управления по иерархии целевых критериев. Представлены результаты численного моделирования . Показано успешное решение поставленной задачи при вариативных значениях шумов измерений и возмущающих воздействий. Приведено сравнение с траекториями, полученными с использованием различных алгоритмов оптимального управления.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по электротехнике, электронной технике, информационным технологиям , автор научной работы — Кабанов С. А., Митин Ф. В.
ОПТИМАЛЬНОЕ УПРАВЛЕНИЕ ПЬЕЗОАКТЮАТОРОМ ДЛЯ НАСТРОЙКИ РАДИООТРАЖАЮЩЕГО СЕТЕПОЛОТНА КОСМИЧЕСКОГО РЕФЛЕКТОРА
ОПТИМАЛЬНОЕ УПРАВЛЕНИЕ РАЗВЕДЕНИЕМ СПИЦЫ ТРАНСФОРМИРУЕМОГО РЕФЛЕКТОРА ПРИ НАЛИЧИИ ВОЗМУЩЕНИЙ
ОПТИМАЛЬНОЕ РАСКРЫТИЕ СПИЦ КРУПНОГАБАРИТНОГО ТРАНСФОРМИРУЕМОГО РЕФЛЕКТОРА ПО ИЕРАРХИИ КРИТЕРИЕВ
МАТЕМАТИЧЕСКАЯ МОДЕЛЬ РАСКРЫТИЯ СПИЦЫ КРУПНОГАБАРИТНОГО КОСМИЧЕСКОГО РЕФЛЕКТОРА, СОСТОЯЩЕЙ ИЗ НЕСКОЛЬКИХ ЧАСТЕЙ
АЛГОРИТМ ПОСЛЕДОВАТЕЛЬНОЙ ОПТИМИЗАЦИИ ЭТАПА ВЫДВИЖЕНИЯ СПИЦ КРУПНОГАБАРИТНОГО ТРАНСФОРМИРУЕМОГО РЕФЛЕКТОРА
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
SOLUTION OF THE FILTRATION PROBLEM WITH THE OPTIMAL ADJUSTMENT OF THE RADIO-REFLECTING NET OF A TRANSFORMABLE REFLECTOR
In this paper, we consider the solution of the filtering problem using the Kalman filter with the optimal tuning of the radio-reflecting net. A large-sized transformable space-based reflector is considered. In the process of placing in orbit this structure, it is possible that the real form of the radio-reflecting net can deviate the desired one. To ensure point-to-point adjustment of the active part of the mesh, a cable-cable system is used. The nodal points of the radio-reflecting surface are connected to the back side of the net through cables. They have built-in actuators that allow you to change the length of the cables. A piezo actuator was selected as a control device. By point-by-point adjustment of the piezo actuators, the net is stretched to the required shape. This allows you to provide a high-quality radiation pattern and a high signal level when receiving and transmitting data. Specific values of the disturbing influences are given. To measure the supply voltage on the piezo actuator and the cable length, a voltage converter and a laser scanner are used. Possible deviations from the calculated initial position are determined. In accordance with the principle of separation, the estimation problem is solved first, then the control problem. The estimation problem is solved using the Kalman filter. The control problem is solved using the optimal control algorithm according to the hierarchy of target criteria. The results of numerical simulation are presented. The successful solution of the problem is shown with variable values of measurement noise and disturbing influences. Comparison with trajectories obtained using various optimal control algorithms is given.
Текст научной работы на тему «РЕШЕНИЕ ЗАДАЧИ ФИЛЬТРАЦИИ ПРИ ОПТИМАЛЬНОЙ НАСТРОЙКЕ РАДИООТРАЖАЮЩЕГО СЕТЕПОЛОТНА ТРАНСФОРМИРУЕМОГО РЕФЛЕКТОРА»
Для цитирования: Кабанов С. А., Митин Ф. В. Решение задачи фильтрации при оптимальной настройке радиоотражающего сетеполотна трансформируемого рефлектора // Сибирский аэрокосмический журнал. 2021. Т. 22, № 4. С. 577-588. Doi: 10.31772/2712-8970-2021-22-4-577-588.
For citation: Kabanov S. A., Mitin F. V. Solution of the filtration problem with the optimal adjustment of the radio-reflecting net of a transformable reflector. Siberian Aerospace Journal. 2021, Vol. 22, No. 4, P. 577-588. Doi: 10.31772/2712-8970-2021-22-4-577-588.
Решение задачи фильтрации при оптимальной настройке
радиоотражающего сетеполотна трансформируемого рефлектора
С. А. Кабанов, Ф. В. Митин1
Балтийский государственный технический университет «ВОЕНМЕХ» имени Д. Ф. Устинова» Российская Федерация, 199005, г. Санкт-Петербург, 1-я Красноармейская ул., 1
В данной работе рассматривается решение задачи фильтрации с применением фильтра Кал-мана при оптимальной настройке радиоотражающего сетеполотна. Рассмотрен крупногабаритный трансформируемый рефлектор космического базирования. В процессе выведения данной конструкции на заданную орбиту возможен уход реальной формы радиоотражающего сетеполотна от желаемой. Для обеспечения поточечной настройки активной части сетеполотна применяется тросо-вантовая система. Узловые точки радиоотражающей поверхности связаны с тыльной стороной сетеполотна через ванты. В них встроены актюаторы, позволяющие изменять длину вант. В качестве исполнительного органа выбран пьезоактюатор. Путем поточечной настройки пьезоактюаторов происходит натяжение сетеполотна до необходимой формы. Это позволяет обеспечивать качественную диаграмму направленности и высокий уровень сигнала при приёме-передаче данных. Приведены конкретные значения возмущающих воздействий. Для измерения напряжения питания на пьезоактюаторе и длины ванты применяются преобразователь напряжения и лазерный сканер. Определены возможные отклонения от расчётного начального положения. В соответствии с принципом разделения сперва решается задача оценивания, затем задача управления. Задача оценивания решается с использованием фильтра Калмана. Задача управления — с использованием алгоритма оптимального управления по иерархии целевых критериев. Представлены результаты численного моделирования. Показано успешное решение поставленной задачи при вариативных значениях шумов измерений и возмущающих воздействий. Приведено сравнение с траекториями, полученными с использованием различных алгоритмов оптимального управления.
Ключевые слова: алгоритм последовательной оптимизации, крупногабаритный трансформируемый рефлектор, радиоотражающее сетеполотно, пьезоактюатор, математическая модель, моделирование.
Исследование выполнено в организации БГТУ «ВОЕНМЕХ» им. Д. Ф. Устинова при финансовой поддержке Министерства науки и высшего образования Российской Федерации (доп. соглашение от 09.06.2020 № 075-03-2020-045/2 на выполнение базовой части государственного задания «Разработка фундаментальных основ создания и управления группировками высокоскоростных беспилотных аппаратов космического и воздушного базирования и группами робототехнических комплексов наземного базирования»).
The work was carried out in BSTU «VOENMEH» named after D. F. Ustinov with financial support from the Ministry of Science and Higher Education of the Russian Federation (government contract agreement No 075-032020-045/2 of 09.06.2020).
Solution of the filtration problem with the optimal adjustment of the radio-reflecting net of a transformable reflector
S. A. Kabanov, F. V. Mitin1
Baltic State Technical University «VOENMEH» named after D. F. Ustinov 1, 1 Krasnoarmeyskaya St., St. Petersburg, 199005, Russian Federation ^-mail: fedor28@list.ru
In this paper, we consider the solution of the filtering problem using the Kalman filter with the optimal tuning of the radio-reflecting net. A large-sized transformable space-based reflector is considered. In the process ofplacing in orbit this structure, it is possible that the real form of the radio-reflecting net can deviate the desired one. To ensure point-to-point adjustment of the active part of the mesh, a cable-cable system is used. The nodal points of the radio-reflecting surface are connected to the back side of the net through cables. They have built-in actuators that allow you to change the length of the cables. A piezo actuator was selected as a control device. By point-by-point adjustment of the piezo actuators, the net is stretched to the required shape. This allows you to provide a high-quality radiation pattern and a high signal level when receiving and transmitting data. Specific values of the disturbing influences are given. To measure the supply voltage on the piezo actuator and the cable length, a voltage converter and a laser scanner are used. Possible deviations from the calculated initial position are determined. In accordance with the principle of separation, the estimation problem is solved first, then the control problem. The estimation problem is solved using the Kalman filter. The control problem is solved using the optimal control algorithm according to the hierarchy of target criteria. The results of numerical simulation are presented. The successful solution of the problem is shown with variable values of measurement noise and disturbing influences. Comparison with trajectories obtained using various optimal control algorithms is given.
Keywords: sequential optimization algorithm, large-sized transformable reflector, radio-reflective net, piezo actuator, mathematical model, modeling.
В настоящее время спутники связи активно используются для решения широкого круга задач [1; 2]. Одним из конструктивных способов реализации таких спутников является создание крупногабаритных космических рефлекторов [3-5]. Ведутся активные разработки в этой области. Данные конструкции позволяют работать одновременно в нескольких частотах, обладают большой областью засвечивания [6-9].
Рассмотрим реализацию крупногабаритной космической конструкции с применением ванто-вой системы для создания необходимой формы радиоотражающей поверхности рефлектора (рис. 1) [10-14]. Крупногабаритный трансформируемый рефлектор (КТР) состоит из космического аппарата (КА) 1. К нему прикреплены разворачиваемые элементы, такие как солнечные батареи 2, облучающая система 3. Для обеспечения заданной диаграммы направленности штанга 4 выдвигает рефлектор 5 на необходимое фокусное расстояние. Отражающей поверхностью является сетеполотно 6.
Для эффективного использования спутников связи необходимо поддержание точной формы радиоотражающего сетеполотна 6. Это позволяет обеспечивать качественную диаграмму направленности и высокий уровень сигнала при приёме-передаче данных [15; 16].
Ввиду эксплуатации оборудования в космическом пространстве возникают периодические возмущающие воздействия на конструкцию рефлектора. Такие возмущения вызваны изменением температурного режима, наличием радиации, солнечного ветра [17; 18]. В процессе получения сведения о состоянии формы радиоотражающей поверхности необходимо учитывать влия-
ние шумов измерений. Ввиду ограниченности запасов энергии на рефлекторе важным является минимизация энергетических затрат.
Таким образом, необходимо осуществить точечную поднастройку сетеполотна при минимизации энергетических затрат, учитывая влияние шумов измерения и внешних возмущающих воздействий.
Математическое описание задачи
На рис. 2 представлена одна спица КТР в сечении, где 1 — спица, 2 и 3 — внешняя и задняя сетка, 4 — ванты, в которых установлены актюаторы. Необходимо, изменяя длину вант 4 с помощью актуаторов 5, задать желаемую форму радиоотражающего сетеполотна 2, обеспечив тем самым требуемую диаграмму направленности. В качестве актюаторов рассматривался пьезо-привод. Желаемая форма задаётся в наземных условиях. В процессе доставки КТР на заданную орбиту и при раскрытии конструкции может происходить незначительное смещение реальной формы от желаемой. После развёртывания происходит сверка контрольных точек и на актюа-торы 5 передаётся управляющее воздействие для изменения длины ванты 4.
Рис. 1. Конструкция крупногабаритного трансформируемого рефлектора
Fig. 1. The design of the LTR (Large-sized transformable reflector)
Рис. 2. Спица в сечении
Fig. 2. The spoke in cross section
В качестве актюатора для управления настройкой радиоотражающего сетеполотна выбран пьезоактюатор типа АПМ [19] с перемещением lmax = 10 мм при допуске перемещения ±15 %. Для измерения напряжения на входе пьезоактюатора взят преобразователь напряжения измерительный ПИН-50-У-4/20-ДХ [19] с основной приведенной погрешностью не более 1,5 %. Для измерения изменения длины ванты используется лазерный сканер RangeVision Standard Plus [21] с точностью ±0,03 мм.
Система дифференциальных уравнений, описывающих пьезоэлемент с исполнительным органом на основании выводов А. А. Никольского [22], имеет вид X = f(X, u, t) + |x, где X = (l V иэ)T — вектор состояния, = [^ ^x3]T — шум с интенсивностью Bx = diag(Bx1, Bx2, Bx3). Или в поэлементном виде
. NK0U3 + Fc — Куl — KV
C0 КтКд С0КвтКд C0 Кд
где l — изменение длины (ход) актюатора; V — скорость выдвижения актюатора; N — количество элементов; К0 — коэффициент обратного пьезоэффекта; иэ — электрическое напряжение, приложенное к электродам актюатора; Fc — статическое усилие; Ку — коэффициент упругости; Кд -коэффициент внутреннего демпфирования; еэ — напряжение от источника электродвижущей силы; C0 — ёмкость; Лвт — внутреннее сопротивление; Кп — коэффициент прямого пьезоэффекта;
— суммарная масса, состоящая из массы самого пьезоактюатора и перемещаемой массы.
Общепринятая на практике постановка задачи совмещенного синтеза оптимального управления линейными системами опирается на теорему разделения. Согласно этой теореме, оптимальная система управления состоит из оптимального фильтра, формирующего оценки вектора состояния системы, и оптимального регулятора, определяющего управление уже в детерминированной постановке при предположении, что вектор состояния известен точно [23-25]. В данной статье для построения управления применяется фильтр Калмана и алгоритм последовательной оптимизации [26].
Измерению доступны длина выдвижения и напряжение на пьезоактюаторе. Уравнение наблюдения рассмотрим в виде
где z = [z\ z2]T, H = [1 0 1]T, = ^2]T — случайные процессы типа белого шума с интенсивностью Bz = diag(Bz\, Bz2).
Оптимальную оценку можно получить с помощью фильтра Калмана
dl » ЛА-!1 ( -/) + R3Bz-2 (z2 -U),
dV = N^Uэ + Fc — Ку1 — KдV
Членство
С момента написания этой статьи поставщики членства ASP.NET были заменены ASP.NET Identity. Мы настоятельно рекомендуем обновить приложения для использования платформы ASP.NET Identity , а не поставщиков членства, которые были представлены на момент написания этой статьи. ASP.NET Identity имеет ряд преимуществ по сравнению с системой членства ASP.NET, в том числе :
- более высокая производительность;
- Улучшенная расширяемость и тестируемость
- Поддержка OAuth, OpenID Connect и двухфакторной проверки подлинности
- Поддержка удостоверений на основе утверждений
- Улучшенное взаимодействие с ASP.Net Core
ASP.NET членство основывается на успешном выполнении модели проверки подлинности с помощью форм ASP.NET 1.x. ASP.NET проверка подлинности с помощью форм позволяет легко включить форму входа в приложение ASP.NET и проверить пользователей на соответствие базе данных или другому хранилищу данных.
ASP.NET членство основывается на успешном выполнении модели проверки подлинности с помощью форм ASP.NET 1.x. ASP.NET проверка подлинности с помощью форм позволяет легко включить форму входа в приложение ASP.NET и проверить пользователей на соответствие базе данных или другому хранилищу данных. Члены класса FormsAuthentication позволяют обрабатывать файлы cookie для проверки подлинности, проверка для допустимого входа, выхода пользователя из системы и т. д. Однако для реализации проверки подлинности с помощью форм в приложении ASP.NET 1.x может потребоваться достаточное количество кода.
Членство в ASP.NET 2.0 является важным достижением по сравнению с использованием только проверки подлинности с помощью форм. (Членство является наиболее надежным в сочетании с проверкой подлинности с помощью форм, но использование проверки подлинности на основе форм не является обязательным требованием.) Как вы скоро увидите, вы можете использовать ASP.NET Членство и элементы управления для входа в ASP.NET 2.0 для реализации мощной системы членства без написания кода.
Реализация членства в ASP.NET 2.0
Членство реализуется путем выполнения четырех шагов. Имейте в виду, что существует множество под-шагов, которые используются, а также необязательная конфигурация, которую также можно реализовать. Эти шаги призваны проиллюстрировать общую картину настройки членства.
- Создайте базу данных членства (если в качестве хранилища членства используется SQL Server).
- Укажите параметры членства в файлах конфигурации приложений. (Членство включено по умолчанию.)
- Определите тип хранилища членства, которое вы хотите использовать. Доступные параметры описаны ниже.
- Microsoft SQL Server (версия 7.0 или более поздняя)
- Хранилище Active Directory
- Настраиваемый поставщик членства
- Настройте приложение для проверки подлинности ASP.NET forms. Еще раз членство предназначено для использования преимуществ проверки подлинности с помощью форм, но использование проверки подлинности на основе форм не является обязательным требованием.
- Определите учетные записи пользователей для членства и при необходимости настройте роли.
Создание базы данных членства
Если в качестве хранилища членства используется SQL Server 7.0 или более поздней версии, для настройки базы данных можно использовать служебную программу aspnet_regsql (доступную в командной строке Visual Studio .NET 2005). Служебную программу aspnet_regsql можно использовать в качестве средства командной строки или с помощью мастера графического пользовательского интерфейса. Самый простой способ настройки базы данных — это метод мастера. Чтобы получить доступ к мастеру, просто выполните следующую команду:
После выполнения этой команды вы получите мастер установки ASP.NET SQL Server, как показано ниже.

Рисунок 1
Мастер установки ASP.NET SQL Server создает веб-сайт в экземпляре, который вы указываете в мастере. Однако ASP.NET будет использовать строку подключения в файле machine.config для подключения к базе данных. По умолчанию эта строка подключения указывает на экземпляр SQL Server 2005, поэтому при использовании экземпляра SQL Server 2000 или SQL Server 7.0 необходимо изменить строку подключения в файле machine.config. Эта строка подключения может находиться здесь:
К сожалению, если вы не измените строку подключения, ASP.NET не приведет к описательной ошибке. Он будет продолжать жаловаться, говоря, что вы не создали базу данных. В приведенном выше случае я изменил строку подключения так, чтобы она указывала на локальный экземпляр SQL Server 2000.
Указание конфигурации и добавление пользователей и ролей
Следующим шагом в настройке членства является добавление необходимых сведений в файл web.config приложения. В ASP.NET 1.x изменение файла web.config иногда было затруднено из-за использования lowerCamelCase и отсутствия Intellisense. Visual Studio .NET 2005 значительно упрощает задачу с помощью Intellisense для файлов конфигурации, но ASP.NET 2.0 идет еще дальше, предоставляя веб-интерфейс для редактирования файлов конфигурации.
Чтобы запустить веб-интерфейс, нажмите кнопку ASP.NET Конфигурация на панели инструментов Обозреватель решения, как показано ниже. Вы также можете запустить веб-интерфейс через всплывающие окна, которые отображаются при вставке элементов управления «Вход».

Рис. 2
При этом запускается средство администрирования веб-сайтов ASP.NET, показанное ниже. Администрирование веб-сайта ASP.NET — это интерфейс с четырьмя вкладками, который упрощает управление параметрами приложения. Доступны следующие вкладки:
- Дом
- Безопасности Настройка пользователей, ролей и доступа.
- Приложения Настройка параметров приложения.
- Поставщика Настройте и проверьте поставщик членства в приложениях.
Средство администрирования веб-сайтов позволяет легко создавать новых пользователей, создавать новые роли и управлять пользователями и ролями. Эта возможность недоступна в интерфейсе Windows. Интерфейс Windows позволяет легко определять параметры авторизации, а также добавлять и удалять поставщиков, а также управлять ими, которые отсутствуют в средстве администрирования веб-сайтов.
Чтобы запустить интерфейс Windows, откройте оснастку Службы IIS, щелкните правой кнопкой мыши приложение и выберите пункт Свойства. Перейдите на вкладку ASP.NET и нажмите кнопку Изменить конфигурацию. (Для включения кнопки Изменить конфигурацию приложение должно быть запущено в ASP.NET 2.0. Версию ASP.NET можно также настроить в диалоговом окне ASP.NET.) Диалоговое окно параметров конфигурации ASP.NET отображается, как показано ниже.

Рис. 3
На вкладке Общие перечислены строки подключения и параметры приложения. Все параметры курсивом определяются в родительском файле конфигурации (machine.config или web.config на более высоком уровне), а параметры, не указанные курсивом, находятся в файле конфигурации приложений. Если параметр добавляется, удаляется или редактируется на уровне приложения, ASP.NET добавит, удалит или изменит параметр на уровнях приложения web.config вместо удаления параметра из файла конфигурации, из которого он наследуется.
Ниже показана вкладка Проверка подлинности. Здесь вы настроите параметры членства. Здесь можно настроить параметры проверки подлинности с помощью форм, поставщиков членства и поставщиков ролей.

Рис. 4
Реализация членства в приложении
Самый простой способ реализовать членство ASP.NET 2.0 в приложении — использовать предоставленные элементы управления Вход в систему. Этот метод позволяет реализовать основы членства ASP.NET 2.0 без написания кода.
В ASP.NET 2.0 доступны следующие элементы управления входом:
Управление входом
Элемент управления Вход предоставляет интерфейс для входа в систему членства. Он предоставляет текстовое поле имя пользователя и пароль, а также кнопку входа. Многие другие распространенные функции, такие как ссылка для регистрации для людей, которые еще не сделали этого, флажок, позволяющий пользователю автоматически входить в систему при последующих посещениях, ссылка для напоминания пароля и т. д. Все функции элемента управления «Вход» настраиваются с помощью свойств элемента управления .
В ASP.NET 1.x разработчикам приходилось писать достаточное количество кода, чтобы выполнить поиск при использовании проверки подлинности с помощью форм. С помощью членства ASP.NET 2.0 вы можете проверять пользователей, не написав код. ASP.NET автоматически выполнит поиск пользователя. (Если вы используете элемент управления «Вход» без ASP.NET членства, для проверки пользователя можно использовать метод OnAuthenticate .)
Элемент управления LoginView
Элемент управления LoginView — это шаблонный элемент управления, который по умолчанию предоставляет два шаблона; AnonymousTemplate и LoggedInTemplate. Отображаемый шаблон определяется тем, вошел ли пользователь в систему членства. Этот элемент управления обычно используется для отображения элемента управления Вход, когда пользователь еще не вошел в систему, и элемента управления LoginStatus и (или) других элементов управления для входа, когда пользователь выполнил вход. Если вы используете управление ролями в приложении ASP.NET, элемент управления LoginView может отображать определенный шаблон на основе роли пользователей. (Дополнительные сведения об управлении ролями ASP.NET будут рассмотрены позже.)
Управление восстановлением паролей
Элемент управления PasswordRecovery позволяет пользователям получать сообщения электронной почты с текущим паролем или сбрасывать пароль. Можно восстановить и отправить пользователям по электронной почте чистый текст и зашифрованные пароли. Если пароль хэширован, его невозможно восстановить. Вместо этого пользователю потребуется выполнить сброс пароля.
Элемент управления LoginStatus
Элемент управления LoginStatus используется для отображения индикатора входа для пользователей, которые не вошли в систему, и индикатора выхода для пользователей, которые вошли в систему в данный момент. Свойство Request.IsAuthenticated используется для определения отображаемого индикатора. Индикатор, отображаемый элементом управления LoginStatus, может быть текстовым (реализованным с помощью свойств LoginText и LogoutText ) или изображениями (реализованными с помощью свойств LoginImageUrl и LogoutImageUrl ).
Когда пользователь выходит из системы с помощью элемента управления LoginStatus, он перенаправляется по URL-адресу, указанному свойством LogoutPageUrl . Если это свойство не задано, текущая страница обновляется. Так как сайт, скорее всего, защищен проверкой подлинности с помощью форм, обновление текущей страницы перенаправит пользователя на страницу входа для сайта.
Элемент управления LoginName
Элемент управления LoginName отображает имя пользователя, выполнившего вход на сайт.
Элемент управления CreateUserWizard
Элемент управления CreateUserWizard предоставляет пользователям удобный способ регистрации в системе членства. Вы можете добавить шаги (реализованные в виде коллекции WizardSteps) с помощью интерфейса, показанного ниже.

Рис. 5
CreateUserWizard — это шаблонный элемент управления, производный от класса Wizard и предоставляющий следующие шаблоны:
- HeaderTemplate Этот шаблон управляет внешним видом заголовка мастера.
- Боковая панельTemplate Этот шаблон управляет внешним видом боковой панели мастера.
- StartNavigationTemplate Этот шаблон управляет внешним видом навигации мастера на начальном шаге.
- StepNavigationTemplate Этот шаблон управляет внешним видом области навигации, если не на начальном или завершаем шаге.
- FinishNavigationTemplate Этот шаблон управляет внешним видом области навигации на этапе завершения.
Кроме того, для каждого шага, добавляемого в мастер, ASP.NET создадут настраиваемый шаблон, содержащий contentTemplate и CustomNavigationTemplate для этого шага. Полные сведения о настройке CreateUserWizard см. в документации по VS.NET 2005:
Элемент управления ChangePassword
Элемент управления ChangePassword позволяет пользователям изменять свой пароль. Если свойство DisplayUserName имеет значение true (по умолчанию — false), пользователь может изменить свой пароль, если не выполнил вход. Если пользователь уже вошел в систему и свойство DisplayUserName имеет значение true, пользователь сможет изменить пароль другого пользователя, который не вошел в систему, если он знает идентификатор этого пользователя.
Имейте в виду, что если вы хотите, чтобы пользователи могли изменять пароли без необходимости входа в систему, необходимо убедиться, что страница, на которой отображается элемент управления ChangePassword, разрешает анонимный доступ. Очевидно, что пользователям придется указать свой старый пароль, чтобы изменить свой пароль.
Управление ролями
Управление ролями позволяет назначать пользователям определенную роль, а затем ограничивать доступ к определенным файлам или папкам на основе этой роли. Управление ролями также предоставляет API, позволяющий программно определить роль пользователей или всех пользователей в определенной роли и ответить соответствующим образом.
Управление ролями не является требованием в ASP.NET членства, и членство не является требованием для использования управления ролями. Тем не менее, два хорошо дополняют друг друга, и вполне вероятно, что разработчики будут использовать их в сочетании друг с другом.
Чтобы включить управление ролями в приложении, внесите следующие изменения в файл web.config:
Если атрибут cacheRolesInCookie имеет значение true, ASP.NET кэширует членство пользователей в файле cookie на клиенте. Это позволяет выполнять поиск ролей без вызовов RoleProvider. При использовании этого атрибута разработчикам рекомендуется убедиться, что для атрибута cookieProtection задано значение All. (Это параметр по умолчанию.) Это гарантирует шифрование данных файлов cookie и гарантирует, что содержимое файлов cookie не было изменено. Роли можно добавить с помощью средства администрирования веб-сайта. Она позволяет легко определять роли, настраивать доступ к частям сайта на основе этих ролей и назначать пользователям роли.

Рис. 6
Как показано выше, новые роли можно добавить, просто введя имя роли и нажав кнопку Добавить роль. Существующими ролями можно управлять или удалять, щелкнув соответствующую ссылку в списке существующих ролей.
При управлении ролью можно добавлять или удалять пользователей, как показано ниже.

Рис. 7
Установив флажок User Is In Role (Пользователь в роли), можно легко добавить пользователя к определенной роли. ASP.NET автоматически обновит базу данных членства соответствующими записями. Вам также потребуется настроить правила доступа для приложения. ASP.NET 1.x разработчики знакомы с этим с помощью в файле web.config, и этот параметр по-прежнему доступен в ASP.NET 2.0. Однако проще управлять правилами доступа с помощью средства администрирования веб-сайтов, как показано ниже.

Рис. 8
В этом случае выделена папка «Администрирование» (ее трудно увидеть, так как средство выделяет ее светло-серым цветом), а роль «Администраторы» получила доступ. Все остальные пользователи отклоняются. Вы можете щелкнуть значок головки, чтобы выбрать правило, а затем использовать кнопки Переместить вверх и Вниз, чтобы упорядочить правила. Как и в случае с элементом авторизации> ASP.NET
ASP.NET 2.0 добавляет web.config файл в папку, для которой задано правило доступа. Правила доступа можно изменить с помощью файла конфигурации или средства администрирования веб-сайтов. Другими словами, средство администрирования веб-сайта — это просто интерфейс, с помощью которого файл конфигурации можно редактировать в удобной для пользователя среде.
Использование ролей в коде
API для управления ролями не изменялся с версии 1.x. Метод IsInRole используется для определения того, имеет ли пользователь определенную роль.
if (User.IsInRole(Administrators))
ASP.NET также создает экземпляр RolePrincipal в качестве члена текущего контекста. Объект RolePrincipal можно использовать для получения всех ролей, к которым принадлежит пользователь, следующим образом:
string[] userRoles = ((RolePrincipal)User).GetRoles();
Использование RoleGroups с элементом управления LoginView
Теперь, когда у вас есть представление об управлении ролями и членстве, давайте кратко обсудим, как элемент управления LoginView использует преимущества этой возможности в ASP.NET 2.0. Как уже говорилось ранее, элемент управления LoginView является шаблонным элементом управления, который по умолчанию содержит два шаблона. AnonymousTemplate и LoggedInTemplate. В диалоговом окне Задачи LoginView находится ссылка (показанная ниже), которая позволяет изменять группы ролей.

Рис. 9
Каждый объект RoleGroup содержит массив строк, определяющий, к каким ролям применяется RoleGroup. Чтобы добавить новую группу RoleGroup в элемент управления LoginView, щелкните ссылку Изменить группы ролей. На изображении выше видно, что добавлена новая группа ролей для администраторов. Выбрав roleGroup (RoleGroup[0]) в раскрывающемся списке Представления, я могу настроить шаблон, который будет отображаться только для членов роли «Администраторы». На рисунке ниже добавлена новая группа ролей, которая применяется к членам роли «Продажи» и роли «Распространителя». При этом в раскрывающемся списке Представления в диалоговом окне Задачи LoginView добавляется вторая группа ролей, и все, что добавлено в этот шаблон, будет отображаться любому пользователю с ролью «Продажи» или «Распространителя».

Рис. 10
Переопределение существующего поставщика членства
Существует несколько способов расширения функциональных возможностей ASP.NET членства. Прежде всего, можно изменить существующую функциональность класса SqlMembershipProvider, наследуя от него и переопределяя его методы. Например, если вы хотите реализовать собственные функциональные возможности при создании пользователей, можно создать собственный класс, наследующий от SqlMembershipProvider следующим образом:
public class jForumMembershipProvider : SqlMembershipProvider < public jForumMembershipProvider() < >public override MembershipUser CreateUser( string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) < // your own implementation return base.CreateUser( username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status); >>
Если, с другой стороны, вы хотите создать собственного поставщика (например, для хранения сведений о членстве в базе данных Access), можно создать собственного поставщика.
Создание собственного поставщика членства
Чтобы создать собственный поставщик членства, сначала необходимо создать класс, наследующий от класса MembershipProvider. Если вы используете VB.NET, Visual Studio 2005 добавит заглушки для всех методов, которые необходимо переопределить. Если вы используете C#, добавьте заглушки.
Вам потребуется переопределить следующее:
- Свойство ApplicationName
- Функция ChangePassword
- Функция ChangePasswordQuestionAndAnswer
- Функция CreateUser
- Функция DeleteUser
- Свойство EnablePasswordReset
- Свойство EnablePasswordRetrieval
- Функция FindUsersByEmail
- Функция FindUsersByName
- Функция GetAllUsers
- Функция GetNumberOfUsersOnline
- Функция GetPassword
- Функция GetUser
- Функция GetUserNameByEmail
- Свойство MaxInvalidPasswordAttempts
- Свойство MinRequiredNonAlphanumericCharacters
- Свойство MinRequiredPasswordLength
- Свойство PasswordAttemptWindow
- Свойство PasswordFormat
- Свойство PasswordStrengthRegularExpression
- Свойство RequiresQuestionAndAnswer
- Свойство RequiresUniqueEmail
- Функция ResetPassword
- Разблокировка пользовательской функции
- Функция UpdateUser
- Функция ValidateUser
Это довольно большой список для реализации в качестве разработчика C#. Вам может быть проще создать класс в VB.NET без какой-либо реализации, а затем использовать .NET Reflector или аналогичное средство для преобразования кода в C#.
Строка подключения и другие свойства должны иметь значения по умолчанию в методе Initialize. (Метод Initialize запускается при загрузке поставщика во время выполнения.) Второй параметр метода Initialize имеет тип System.Collections.Specialized.NameValueCollection и является ссылкой на , связанный с настраиваемым поставщиком в файле web.config. Эта запись выглядит следующим образом:
Ниже приведен пример метода Initialize.
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
Чтобы проверить пользователя при отправке формы входа, необходимо использовать метод ValidateUser. Этот метод срабатывает, когда пользователь нажимает кнопку входа в элементе управления Вход. Вы поместите код, который выполняет поиск пользователя в этом методе.
Как видите, создание собственного поставщика членства не сложно и позволяет расширить эту мощную функциональность ASP.NET 2.0.
Обратная связь
Были ли сведения на этой странице полезными?