Разработать каркас веб-приложения на C # - PullRequest
0 голосов
/ 14 ноября 2009

Я планирую разработать свой собственный простой и элегантный фреймворк для веб-приложений на C # 3.5. У меня есть некоторые идеи, но пока нет лучшей практики, как это следует реализовывать Может быть, вы можете помочь?

Мои идеи:

  • Это библиотека C # (DLL)
  • Он должен использовать XSLT в качестве языка шаблонов, поэтому XML должен быть выводом моего уровня данных / модели *
  • Необходимо подключиться к различным базам данных, таким как MySQL en SQL Server и ODBC
  • Это должна быть командная база, например шаблон проектирования команд, поэтому я могу опубликовать команду с некоторыми параметрами, сгруппированными для этой команды, и выполнить команду "stuff"
  • Все команды и действия базы данных из 1 поста должны быть в одной транзакции, поэтому все можно откатить
  • Для этого нужна модель безопасности / авторизации (что хорошо?)
  • Необходимо разрешить URL-адрес, например, / a / b / c преобразуется в /? Id = 33
  • Он должен быть подключаемым, поэтому, когда я создаю веб-приложение для кого-то с особыми потребностями, мне не нужно изменять свою базовую библиотеку Engine
  • Он должен иметь методы кэширования и / или сжатия внутри
  • Он должен быть быстрым, многопоточным и быстродействующим
  • Для этого требуется отладочная регистрация
  • Было бы неплохо внедрить в уровень данных / модели некоторый динамический сценарий, такой как IronPython, для динамического создания сценария моего вывода в XSLT, так что корректировки могут быть сделаны быстро, не заходя в Visual Studio и не настраивая мой DLL.

У вас есть идеи, как лучше всего начать создавать такую ​​структуру? Или уже есть такие рамки в C #?

Это небольшая идея, когда у вас есть таблицы «Клиент» и «Адрес», и вы хотите опубликовать html-форму для добавления записи в базу данных и отправить его по почте, вам необходимо опубликовать эти поля в 1 postaction:

Customer.ACTION = add
Customer.Name = "John Smith"
Customer.Email = "john.smith@emailaddress.com"

Address.ACTION = add
Address.CustomerId = #Customer.ResultId#
Address.Street = "Mainstreet"
Address.Number = "1"

Mail.ACTION = send
Mail.AFTER = Customer
Mail.To = #Customer.Email#
Mail.From = "test@case.com"
Mail.Subject = "Welcome"
Mail.Body = "Welcome new customer!"

Движок получает сообщение, и с помощью Reflection он собирает класс для нужной ему команды, в данном случае DatabaseCommand и MailCommand, и запускает ее. Видите ли, я хочу использовать какую-то очередь с сортировкой. В этом случае команда Customer должна быть первой, после этого Mail (см. Mail.AFTER) и / или Address (см. Зависимость # Customer.ResultId #).

Так что вы думаете об этом проекте?

Привет

Ответы [ 3 ]

4 голосов
/ 14 ноября 2009

рассматривали ли вы расширение модели MVC, а не начинать с нуля?

Не совсем уверен, что вы пытаетесь сделать с xslt - вы хотели отправить его в xml и преобразовать обратно в html? Если это так, вы можете попробовать наследовать ActionResult и выполнить это преобразование, используя стандартные библиотеки .NET.

этот подход будет поддерживать mysql, sql server, oracle и т. Д. В соответствии с библиотеками .NET, имеет security / auth, может использовать пользовательские маршруты для выполнения ваших / a / b / c -> /? Id = 33 отображений, является OO на основе и может быть подключаемым, кэширование может быть выполнено, поскольку его основой является ASP.NET, а сжатие GZIP / DEFLATE можно включить в IIS.

применение xslt к слою данных / модели не похоже на правильное место для этого - я бы поместил это намного ближе к слою вида.

относительно ваших данных POST, вы можете использовать стандартный способ MVC для обработки этого глагола, в противном случае это звучит так, как будто вам нужна архитектура на основе RESTful http://en.wikipedia.org/wiki/Representational_State_Transfer

конечно, вы всегда можете просто унаследовать IHttpHandler и причинить себе много боли;)

1 голос
/ 28 декабря 2009

Существует большой объем работы, связанной с разработкой любого фреймворка (сетевого или нет). Рассмотрим 2 популярных веб-фреймворка: «Rails» для Ruby и «Django» для Python. Они построены командой и довольно обширны. Вы можете построить один, но это определенно займет много времени.

Существует не так много веб-фреймворков для .NET, о которых я знаю, однако следует отметить следующее (хотя они не обязательно могут быть "веб-фреймворками"):

  1. ASP.NET MVC моделируется после "Rails".
  2. Проект SubText
  3. SpringFramework.NET / NHibernate.NET
  4. NetTiers
  5. Проект замка
  6. Различные веб / фреймворки на CodePlex
    • CommonLibrary.NET
    • Catharsis
    • MojoPortal
0 голосов
/ 14 ноября 2009

для разрешения URL, я недавно реализовал его в моей существующей среде. Он использовал механизм маршрутизации ASP.Net.

Я мог бы отправить вам модуль с примерами кодов о том, как его использовать.

Обновление

Вот что действительно помогает:

Другие:

...