Почему код aspx - позади файлов, объявленных как частичные классы?

Я должен спросить, сделали ли Вы анализ рентабельности этой проблемы; это кажется, что Вы пытаетесь защитить себя от взломщика, у которого есть достаточно веб-присутствия для предположения многих паролей, отправляя, возможно, 3-5 запросов на IP (так как Вы отклонили регулировку IP). Какого количества (примерно) стоило бы такое нападение? Действительно ли это более дорого, чем значение учетных записей, которые Вы пытаетесь защитить? Сколько гигантских ботнетов хочет то, что Вы имеете?

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

7
задан Joel Coehoorn 6 October 2009 в 17:25
поделиться

4 ответа

Я бы отослал вас к этой странице MSDN (Обзор класса страницы ASP.NET).

Когда страница компилируется, ASP.NET генерирует частичный класс на основе .aspx файл; этот класс является частичным класс файла класса кода программной части. Сгенерированный файл частичного класса содержит объявления для страницы контроль. Этот частичный класс позволяет ваш файл кода программной части, который будет использоваться как часть полного класса без требуя от вас объявить контроль явно.

См. эту диаграмму:

alt text http://img30.imageshack.us/img30/7692/msdnchart.gif

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

12
ответ дан 6 December 2019 в 10:52
поделиться

Поскольку есть другие части класса (материал для конструктора), скрытые от разработчика

Например, вместо этого

public MyBasePage : System.Web.UI.Page
{
    ...
    protected System.Web.UI.Label lblName;

    protected void Page_Load(object sender, EventArgs e)
    {
    }
    ...
}

ASP.NET создает эти объявления в разных физических файлах, оставив это

public partial class MyBasePage : System.Web.UI.Page
{
    ...

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    ...
}

Дополнительная информация:

4
ответ дан 6 December 2019 в 10:52
поделиться

Частичное объявление позволяет вам писать код в других файлах - просто поместите его в то же пространство имен и назовите то же самое, и они будут обрабатываться так, как будто они находятся в одном файле . Он отлично подходит для добавления функций в сгенерированные файлы. Я наиболее часто использую его для добавления функций / свойств к своим объектам LinqToSql.

1
ответ дан 6 December 2019 в 10:52
поделиться

Другой причиной для частичных файлов является обработка случая, когда часть определения класса генерируется инструментом (и может быть регенерирована в какой-то момент), а остальная часть класса реализуется с помощью вы.

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

С частичными классами в место, сгенерированный код можно легко регенерировать, не касаясь вашего кода.

Еще один хороший пример этого - использование классов DataContext для LINQ-to-SQL: действительно умный материал создается в одном наборе файлов частичного класса, и вы может предоставлять реализации - для проверки и т. д. - в другом частичном классе, будучи уверенным в том, что повторная генерация не разрушит вашу работу.

1
ответ дан 6 December 2019 в 10:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: