My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
VSIntegrationWeb  

en-US , en
Updated Feb 25, 2011 by sergey.alexeev@gmail.com

Поддержка веб проектов

Уровень поддержки отдельных функций отмечен знаками "+" (полная поддержка), "-" (поддержка отсутствует) и "+-" (частичная поддержка).

Важное замечание: Поддержка проектов типа Web Application (включая ASP.NET MVC Web Application) реализована в Visual Studio в виде расширений, которые доступны только в случае использования Visual Studio уровня Std и выше. Visual Studio Shell, на основе которой создана Nemerle Studio, не позволяет использовать расширения, поэтому разработка проектов типа Web Application с использованием Nemerle Studio невозможна. По этой же причине невозможна разработка Web Application приложений с использованием Express версий студии.

Web Application проекты

За исключением некоторой нестабильности визуального дизайнера веб-форм можно считать, что поддержка проектов этого типа полностью реализована. Интеграция позволяет разрабатывать Web Application проекты на Nemerle "out of box".

Сразу после создания нового проекта следует выполнить его принудительную компиляцию. До выполнения этого шага автодополнение и подсветка Nemerle кода в aspx работать не будет. Это вызвано тем, для компиляции aspx страниц требуется наличие рантайма Nemerle, а поскольку библиотеки рантайма не зарегистрированы в GAC, их поиск производится в папке bin проекта. Можно скопировать файлы рантайма в папку bin вручную, а можно просто запустить компиляцию, в этом случае файлы скопируются автоматически, поскольку проект содержит ссылки на библиотеки рантайма (reference) с атрибутом "Copy Local" = True.

Из за этого копирования может возникнуть еще один неприятный момент. Связан он с обновлением версии рантайма Nemerle. Если после создания веб проекта (и компиляции) установленный в системе рантайм Nemerle будет обновлен, то при открытии проекта (ссылающегося на свою локальную версию рантайма) в Visual Studio (а она загружает рантайм, установленный в папке Program Files) возможы различные сообщения об ошибке. Эти сообщения сигнализируют о конфликте версий рантаймов. При получении таких ошибок следует закрыть проект, и очистить папку bin.

Визуальный дизайнер веб-форм (+)

Поддержка дизайнера включает переименование элементов управления (контролов), редактирование свойств и создание обработчиков событий по двойному клику.

Поддержка серверного кода в .aspx файлах (+)

Внедренный код компилируется и исполняется, для него работает отладка, подсветка и автодополнение.

Поддержка code behind файлов (+)

Для code behind (.aspx.n), ровно как и для обычных файлов с кодом на Nemerle работает автодополнение, расцветка, отладка и подсказки.

Шаблоны проектов и файлов (+)

В дистрибутив интеграции включены следующие шаблоны проектов: ASP.NET Web Application ASP.NET Web Service Application

В дистрибутив интеграции включены шаблоны следующих элементов: Web Form Web User Control Master Page Generic Handler

Web Site проекты

Поддержка Web Site проектов реализована частично. По всей видимости полная поддержка Web Site проектов будет реализована уже для Visual Studio 2010.

Визуальный дизайнер веб-форм (+)

Поддержка дизайнера включает переименование контролов, редактирование свойств и создание обработчиков событий.

Поддержка серверного кода в aspx файл (+-)

Внедренный код компилируется и исполняется, но отладка, подсветка и автодополнение для внедренного кода не работают.

Поддержка code behind файлов (.aspx.n) (+-)

Для таких файлов работает подсветка и отладка. Автодополнение не работает для всех .n файлов сайта.

Поддержка обычных фалов с кодом на Nemerle (.n) (+-)

Для таких файлов работает подсветка и отладка. Автодополнение не работает. Размещение кода в папке App_Code поддерживается.

Шаблоны проектов и файлов (+)

Доступен шаблон веб-сайта. Также доступны шаблоны веб-формы, веб-контрола, http хендлера, сервиса.

ASP.NET MVC

Интеграция содержит шаблон, позволяющий создавать проекты, основаные на ASP.NET MVC 2.0

Перед использованием этого шаблона необходимо установить дистрибутив ASP.NET MVC 2.0, который можно скачать по ссылке http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c9ba1fe1-3ba8-439a-9e21-def90a8615a9&displaylang=en

В проектах на Nemerle можно воспользоваться всеми преимуществми, предлагаемыми ASP.NET MVC фреймворком, такими как REST url-ы, валидация моделей, типизовнные представления, Html хелперы и др. Среди недоступных возможностей - различные визарды, позволяющие автоматически создавать представления, отражающие структуру моделей.

Отсутствие визардов Nemerle может с лихвой компенсировать с помощью макросов. Одно из таких расширений предложено в обсуждении на rsdn.ru (http://rsdn.ru/forum/nemerle/3777852.aspx). Суть его заключается в том, что модель описывается неявно, прямо в коде контроллера, подобно и с использованием синтаксиса анонимного класса. При этом макросом создается именованный класс, которым и будет параметризоваться типизованное представление.

Пример контроллера:

[HandleError]
public class HomeController : Controller
{
public Index() : ActionResult
{
model ( message = "Hello, world!" )
}

public Stub() : ActionResult
{
model ( message = "Another hello!" ) view "Index"
}

public About() : ActionResult
{
model ( description = "Put some text here!", time = DateTime.Now )
}
}

Пример представления:

<%@ Page="" Language="Nemerle" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

  <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>
      <%= Html.Encode(Model().message) %>
    </h2>
  </asp:Content>

Исходный код макроса, реализующего такое расширение, можно загрузить из репозитория Nemerle - http://code.google.com/p/nemerle/source/detail?r=8781

NRails

Web фреймворк NRails предлагает подход в стиле Ruby on Rails, но со статической типизацией и контролем компилятора. Основываясь на asp.net mvc он расширяет его такими возможностиями, как:

  • автоматическая генерация моделей по схеме БД
  • миграции, позволяющие управлять изменениями схемы БД
  • автоматическая генерация моделей в стиле анонимных классов и удобный способ типизованного обращения к ним из представлений
  • поддержка Spark view engine для Nemerle
Более подробная информация о проекте NRails доступна по ссылке http://code.google.com/p/nemerleonrails/


Sign in to add a comment
Powered by Google Project Hosting