MonoDevelop – Разрабатываем ASP.NET MVC приложения на Mac OS X

После релиза preview ASP.NET MVC MonoDevelop addin, я решил попробовать его на Маке.

Хотя MonoDevelop 2.0 на Маке до сих пор в alpha-врсии, он получше того, что было в версии 1.0. Помимо проблем с перерисовкой GTK+ , основными проблемами в Мак-интеграции являются реализация Ctrl-Click, меню верхнего уровня и Мак шоркатов. Сделать в MonoDevelop полноценную поддержку Мака –это наша цель в MonoDevelop 2.2.

Я скачал Mono 2.4 и MonoDevelop 2.0 для маков (alpha версию), установка подобна установки аналогов в Linux, немного отличается парочкой предупреждений во время установки, но работает это безупречно!

Running an ASP.NET MVC app in MonoDevelop on the Mac

Посколько в группе MonoDevelop слабо знакомы с Маком, они ожидают от пользователей широкой обратной связи, чтобы оттачить функционал на отлично

Оригинал

http://davidhayden.com/blog/dave/archive/2009/05/06/MonoDevelopMac.aspx

http://mjhutchinson.com/journal/2009/04/04/monodevelop_aspnet_mvc_mac

http://tirania.org/blog/archive/2009/May-05-1.html

Май 7, 2009. Метки: , , , , . .net, MacOS, Mono, asp.net, asp.net mvc. 2 comments.

Звучит заманчиво: Django на IronPython

def Introduce():

Дорогие мальчики и девочки, меня (как позже оказалось не только меня) интересует веб-индустрия и всё, что с ней связано, соответственно хочется вкусить разнообразных технологий, одной из них является известный фреймворк DjangoimageИм и хочется заняться. Думаю, не стоит говорить, о том, что я .NET-разработчик, в связи с чем Python в чистом виде использовать не очень хочется, но хочется попробовать IronPython в деле. Тогда вполне очевидно, что Django на .NET должен являться ASP.NET приложением.

def WSGI():

Здесь нам нужно знать, что такое WSGI:

WSGI (англ. Web Server Gateway Interface, произносится виски) — стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, обычно из каталога cgi-bin, и самим веб-сервером, например, Apache.

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

И нам безусловно повезло, т.к. есть готовая имплементация WSGI для ASP.NET: NWSGI – выполнена как ASP.NET 2.0 HttpHandler на IronPython.

Что примечательно, мало того, что NWSGI интегрируется с IIS и позволяет работать с сессиями, кешем и управлением пользователями, он интегрируется даже с графической средой управления IIS 7!

Это ещё не всё, NWGSI умеет также работать с Cassini (веб-сервер Visual Studio).

Думаю Вам, ровно как и мне, не терпится поработать с этим.

def PrepareIIS():

Итак, что нам необходимо:

  • IronPython 2.0
  • NWSGI 1.0
  • Огромное желание сделать что-нибудь особенное на этом.

Для установки из пакета NWSGI копируем пример HelloWorld в папку C:\inetpub\wwwroot\HelloWorld (либо другой путь для ваших IIS приложений). Из этого же пакета копируем NWSGI.dll в папочку HelloWorld\bin (если пользовались инсталлятором, то в этом нет необходимости, т.к. она уже в GAC’е).

Далее из пакета IronPython 2.0 копируем в каталог HelloWorld\bin следующие сборки:

  • IronPython.dll
  • IronPython.Modules.dll
  • Microsoft.Scripting.Core.dll
  • Microsoft.Scripting.dll

Наша папочка HelloWorld должна выглядеть следующим образом:

HelloWorld\

  • bin\
    • NWSGI.dll (optional)
    • IronPython.dll
    • IronPYthon.Modules.dll
    • Microsoft.Scripting.Core.dll
    • Microsoft.Scripting.dll
  • hello.wsgi
  • Web.Classic.config
  • Web.Integrated.config

Далее, если у нас ISS 7.0, то тогда копируем Web.Integrated.config в Web.config, иначе Web.Classic.config в Web.config.

Далее добавляем приложение на IIS, это можно сделать, как через графическое меню, так и воспользоваться консолью:

%systemroot%\system32\inetsrv\appcmd add app /site.name:"Default Web Site" /path:/hello /physicalPath:C:\inetpub\wwwroot\HelloWorld

Если же у вас IIS 6, то путь один – через графическое меню, а так же необходимо будет ассоциировать *.wsgi с ASP.NET ISAPI фильтром (по аналогии с *.aspx)

Теперь идём по адресу http://localhost/hello/hello.wsgi. И видим грациозное: "Hello, World!", yeah!

def InstallDjango():

Установить Django можно с помощью команды:

ipy setup.py install

Далее можно добавить проект и сгенерировать приложения:

ipy manage.py startapp AppName

ipy manage.py startproject ProjName

К сожалению, мне не хватило навыков для того, чтобы запустить django-приложение под NWSGI.

def SqlServer():

Подключить Django к Microsft SQL Server 2005 и выше можно с помощью следующей библиотеки:

http://code.google.com/p/django-mssql/

Так же можно почитать о подключении здесь: http://blogs.msdn.com/dinoviehland/archive/2008/03/17/ironpython-ms-sql-and-pep-249.aspx

def GetGratitude():

Огромную благодарность за выполненную работу хочу выразить Jeff Hardy и советую ознакомиться с его работами:

Март 29, 2009. Метки: , , , , , , . DLR, Python, asp.net, iis, iis6, iis7. 5 comments.

ASP.NET MVC Release Candidate 2

Введение

Вчера состоялся релиз ASP.NET MVC RC2, скачать можно здесь.

Основные отличия

  • Зависимость от .NET 3.5 SP1 во время установки (теоритически возможно установить на машину без .NET 3.5 SP1 http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx)
  • Опция “серверной установки” (на машину без Visual Studio), с помощью параметра:

msiexec /i AspNetMVC1-RC2.msi /l*v .\mvc.log MVC_SERVER_INSTALL="YES"

  • Инсталятор устанавливает сборку System.Web.Mvc.dll в GAC, а так же копирует её в папку

%ProgramFiles%\Microsoft ASP.NET\ASP.NET MVC 1.0 RC2\Assemblies\

Так же пофиксины некоторые баги. Подробнее читать http://go.microsoft.com/fwlink/?LinkId=137662

Конфликтует с Add-in’ами Visual Studio: PowerCommands, Clone Detective

Март 4, 2009. Метки: , . .net, asp.net, asp.net mvc. Оставить комментарий.

Codeplex: Scrum Dashboard

Введение

Те кто практикует Scrum, ну или хотя бы читал литературу по Scrum, должны знать что такое Scrum Dashboard (“Доска задач”). Из моего опыта обычно для синхронизации того, что висит в её качестве у Вас на стенке, либо стоит рядом с ней, используют wiki-узлы.

Однако я не раз задумывался о том, как хорошо бы было если бы электронный вариант (написанный к примеру на Silverlight) был точной копией этой доски. Конечно я даю себе отчёт в том, что никакая электронная версия не заменит того, вокруг чего ведутся “живые” дискуссии, но всё таки, неплохо бы было иметь копию всегда перед глазами, если географически ты удален от доски.

Суть

 

Ну и конечно, всё, что можно придумать, можно так же попробовать найти на Codeplex.

FileDownload[1]

Сайт проекта http://www.codeplex.com/scrumdashboard

Приложение выполнено на ASP.NET 3.5 SP1.

Используемые технологии:

  • ASP.NET Ajax
  • Ajax Toolkit
  • Ajax web services
  • Entity Framework
  • SQL Server

Все данные хранятся в Team Foundation Server 2008, с установленными шаблонами “the Scrum for Team System version 2”, используя доступ по API TFS веб-сервисов, так же реализованна RSS-синдикация.

Материалы

 

  1. Скачать приложение можно здесь http://www.codeplex.com/scrumdashboard/Release/ProjectReleases.aspx?ReleaseId=16957
  2. Начать изучать Scrum & XP можно с этой книги http://butaji.wordpress.com/2008/12/02/scrum-и-xp-заметки-с-передовой/

Январь 22, 2009. Метки: , , , , , , . agile, asp.net, codeplex, scrum, xp. Оставить комментарий.

Цикл статей о N-уровневой реализации Веб-приложений на основе ASP.NET 3.5

Введение

 

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

Содержание

 

Хотелось бы обратить внимание на цикл статей, написанных Imar Spaanjaars, подробно описывающих создание многоуровневых приложений на ASP.NET 3.5, а так же сопровожденных большим количеством практических примеров.

Previous Series
Building Layered Web Applications with Microsoft ASP.NET 2.0 – Part 1 (3)
Building Layered Web Applications with Microsoft ASP.NET 2.0 – Part 2 (4)
Building Layered Web Applications with Microsoft ASP.NET 2.0 – Part 3 (5)
Custom Sorting with N-Layer Design Classes and the GridView (6)

Current Series
N-Layered Web Applications with ASP.NET 3.5 Part 1: General Introduction (7)
N-Layered Web Applications with ASP.NET 3.5 Part 2: Introducing the Validation Framework (8)
N-Layered Web Applications with ASP.NET 3.5 Part 3: Advanced Validation Topics (9)
N-Layered Web Applications with ASP.NET 3.5 Part 4: Sorting, Paging and Filtering (10)
N-Layered Web Applications with ASP.NET 3.5 Part 5: Dealing with Concurrency
N-Layered Web Applications with ASP.NET 3.5 Part 6: Security

Январь 21, 2009. Метки: , , , . C#, architecture, asp.net. Оставить комментарий.

Что такое ALT.NET?

Введение

По многочисленным WTF от коллег, хотел бы вкратце прояснить, а что же это такое. А дальше решайте сами, интересно Вам это или нет.

Содержание

 

ALT.NET – Альтернативные инструменты и подходы к разработке на .NET.

Инструменты и подходы перечислены ниже в табличке HOTorNOT.

Hot Not
Castle, ActiveRecord,
NHibernate
DataSets, Dataset Designer, Entity Framework, MS Application Blocks
MVC,NUnit,MonoRail Web Forms, SCSF, VSTS, MSTest
XP, TDD, Scrum MSF Agile, MSF For CMMI
Evolutionary Design and Development Big Design Up Front
Ruby + IronRuby, Python + IronPyton, DLR, Silverlight(?) ?
OR\M (NHibernate, LLBLGen  etc..) DLinq, Data Access Block, DataSets, Plain ADO. NET
Open Source (Mono, SourceForge) Application Blocks, CodePlex
MVC and MVP (RoR, MonoRail..) Web Forms, CAB, Smart Client Factory
CVS, SVN VSS, VSTS Source Control
Build Automation and CI
(CI Factory, NAnt, FinalBuilder, CruiseControl..)
Team Build
TDD and Unit Testing
NUnit, MbUnit, RhinoMocks, NMock, TypeMock
MSTest for unit testing, VSTS
Subtext, DasBlog, WordPress, TypePad, Blogger, FeedBurner Microsoft MSN Spaces, Community Server(?)
Simplicity in Design P&P
Working at Google Working at MS
Google Gears Smart Client, MS Ajax
.NET 3.X (WF, WPF. Silverlight) .NET 2.0
DI, IoC, Spring for .NET Object Builder
Conferences:
OSCon, RubyCon, Code Camps, DevTeach..
VSLive, TechEd, DevConnections..

Считаю, что необходимо как минимум ознакомиться со всеми перечисленными понятиями как в правой, так и в левой колонках, следуя принципу анализ-синтез-best practices.

Материалы по теме

 

  1. Табличка любезно позаимствована здесь http://weblogs.asp.net/rosherove/archive/2007/06/04/alt-net-alternative-tools-and-approaches-to-mainstream-net.aspx
  2. Страница сообщества ALT.NET http://altdotnet.org/
  3. Статья в журнале MSDN “Что такое ALT .NET?” by Джереми Д. Миллер (Jeremy D. Miller) http://msdn.microsoft.com/ru-ru/magazine/cc337902.aspx
  4. Активно развивающаяся группа ALT.NET на Yahoo Groups http://tech.groups.yahoo.com/group/altdotnet/

Январь 21, 2009. Метки: . .net, ALT.NET, Boo, C#, DLR, DSL, Microsoft, Microsoft.NET, Python, Ruby, agile, architecture, asp.net, coding. 1 комментарий.

Тем кто решился написать Template для asp:DataPager посвящается

На самом деле ничего страшного в этом нет (проверенно!) и если Ваш функционал уходить далеко за рамки стандартных филдов (NextPreviousPagerField, NumericPagerField) тогда просто напросто надо написать в разметке TemplatePagerField, а дальше ознакомиться с парой статеек на MSDN.

Декабрь 10, 2008. Метки: , , , . asp.net. Оставить комментарий.

Cache зависимости для SPList и SPListItem

Как все мы прекрасно знаем, что ASP.NET  предоставляет нам великолепную реализацию кэша для веб-приложений (Cache из HttpContext). Передо мной, как разработчиком приложений под платформу sharepoint, преимущества данного кеша не получится использовать на 100%, используя стандартную модель, однако, нет предела совершенству ;) .

В рамках данной заметки хотелось бы рассказать о (далее из MSDN) CacheDependency – классе, который устанавливает отношение зависимости между элементом, хранящимся в объекте Cache приложения ASP.NET, и файлом, ключом кэша, массивом обоих или другим объектом CacheDependency. Класс CacheDependency отслеживает отношения зависимости, и при изменении любого из них, кэшированный элемент удаляется автоматически.

Итак, что мы имеем: можем добавить в набор значений кеша элемент и установить зависимость от объекта, таблицы в базе данных, файла на жестком диске, а так же от других элементов в кеше. Опять таки хотелось бы напомнить, что мне, как разработчику под sharepoint, интересна зависимость от объекта, а остальные возможности могут понадобиться только в крайне редких случаях, в связи с чем я предлагаю следующее решение:

Реализовать  CacheDependency для объектов sharepoint, таких как SPList и SPListItem. На этом моя часть «идейная» временно приостановилась пару месяцев назад, т.к. данный функционал будет востребован в моей практической деятельности только через несколько месяцев, но есть отличный ресурс Codeplex, пользователи которого встречаются с подобными проблемами и упрощают мне жизнь. Итак, встречайте:

Проект SharePoint Cache Dependencies.

Реализация SPListCacheDependency основана на предоставляемом SPList свойстве LastItemModifiedDate, в котором хранится время последнего изменения объекта.

Реализация SPListItemCacheDependency основана на отслеживании времени создания последней версии SPListItem в хранилище.

Решение крайне элегантное и заслуживает искренней благодарности.

Декабрь 7, 2008. Метки: , , , . asp.net, sharepoint. Оставить комментарий.

Как не показывать asp:DataPager когда записей меньше чем одна страница

Речь идёт о ASP.NET контроле DataPager (System.Web.UI.WebControls.DataPager из System.Web.Extensions версии 3.5.0.0).

Если DataPager связан у Вас с контролом ListView (System.Web.UI.WebControls.ListView из System.Web.Extensions версии 3.5.0.0), то всё реализуется достаточно просто:

DataPager1.Visible = ((DataPager1.PageSize < DataPager1.TotalRowCount) && ListViewSearchResult.Visible);

Ноябрь 12, 2008. Метки: , , . asp.net. Оставить комментарий.

Routing in ASP.NET 3.5

Наверно многие желают спрятать параметры запроса за симпатичными ссылками, как например это реализованно в ASP.NET MVC. По линку ниже можно ознакомиться с реализацией.

http://morewally.com/cs/blogs/wallym/archive/2008/10/08/asp-net-podcast-show-125-routing-with-webforms.aspx

Октябрь 14, 2008. Метки: , , . asp.net. Оставить комментарий.