Как создать веб-фреймворк в C # без ASPX? - PullRequest
6 голосов
/ 30 мая 2010

Мне удалось заставить страницу asp на C # работать под ubuntu / apache / mono, но я не хочу писать свою инфраструктуру на этих страницах ASP, я хочу использовать прямой C #, а затем я буду использовать шаблонизатор язык для моих взглядов. Но я не знаю с чего начать?

C # - это скомпилированный язык, так что ... как бы я это сделал? Буду ли я скомпилировать все, а затем подключить Apache к (одному) исполняемому файлу и передать URL запроса? Могу ли я запросить конкретные .cs страницы, а затем попросить apache скомпилировать их, а затем «отобразить» только при обновлении? Могут ли файлы «просмотра» быть скомпилированы индивидуально, чтобы избежать необходимости перекомпилировать все при каждом изменении? Есть ли какая-то «базовая», с которой я могу работать, или мне придется заново изобретать доступ к переменным GET и POST (путем чтения информации заголовка) и всякого другого, что мы считаем само собой разумеющимся в таких языках, как PHP?

Ответы [ 5 ]

3 голосов
/ 01 июня 2010

AFAIK, нет никаких причин, по которым вы не можете делать то, что хотите, поверх ядра ASP.NET, используя такие вещи, как HttpApplication, HttpHandler и т. Д. Например, вы можете перенаправить все URL-адреса на один HttpHandler и взять его оттуда вручную .

Я предлагаю взглянуть на то, как ASP.MVC делает это - создать новый проект ASP.NET MVC в MonoDevelop, посмотреть на Global.asax.cs, открыть Web.config и взглянуть на пользовательские обработчики и модули http. это регистрируется. ASP.NET MVC - это OSS, так что вы тоже можете в этом разбираться.

1 голос
/ 30 мая 2010

Для ASP .NET MVC доступно множество альтернативных языков шаблонов, см. Этот вопрос для более длинного списка: Сравнение ASP.NET MVC View Engine

1 голос
/ 30 мая 2010

Никто не просит вас помещать тяжелый код на страницы ASPX. (Пожалуйста, не используйте ASP, это другое дело).

В модели ASP.NET WebForms вы можете использовать режим Code Behind.

В модели ASP.NET MVC вы можете гораздо больше контролировать практически все аспекты.

Поэтому уделите немного времени и погрузитесь в существующие модели. Попытка выкатить свою собственную может быть пустой тратой времени.

Mono поддерживает обе модели.

Кроме того, ASP.NET был разработан не так, как PHP, и вы должны знать, что это приводит к различиям, которые не всегда могут соответствовать вашим требованиям выше.

1 голос
/ 30 мая 2010
  1. Вы сказали ASP. Это страницы ASP или ASP.NET у вас работают? Большая разница.
  2. Можете ли вы получить доступ к запросу / ответу на страницах ASP.NET, если это так, вы сможете получить доступ к GET / POST.
  3. Знаете ли вы, как создать то, что вы пытаетесь в обычном IIS / ASP.NET? Если нет, то, пожалуйста, сохраните себе здравомыслие и заставьте его хотя бы приблизительно работать в первую очередь. Это всего лишь общий совет по сокращению количества переменных / неизвестных, с которыми вы работаете одновременно.
  4. В конечном итоге вы создаете свои собственные обработчики. Я полагаю, что вам понадобится какой-то кусок DLL, который будет видеть запрос на страницу xxx, читать эту страницу и создавать экземпляр класса поддержки. Просмотр источника asp.net mvc может помочь многим (при дополнительных загрузках).
1 голос
/ 30 мая 2010

Если вы действительно против использования ASP, попробуйте прочитать исходный код для ASP и посмотреть, как они реализуют необходимые вам функции, такие как доступ к информации POST и GET, маршрутизация, управление сеансами и т.д.

Однако это будет тонна работы. Что вы могли бы сделать, так это реализовать подавляющее большинство вашей логики в библиотеках классов c # и просто использовать ASP для «размещения» приложения и передачи необходимых вам данных.

...