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, немного отличается парочкой предупреждений во время установки, но работает это безупречно!
Посколько в группе MonoDevelop слабо знакомы с Маком, они ожидают от пользователей широкой обратной связи, чтобы оттачить функционал на отлично
Оригинал
http://davidhayden.com/blog/dave/archive/2009/05/06/MonoDevelopMac.aspx
http://mjhutchinson.com/journal/2009/04/04/monodevelop_aspnet_mvc_mac
Звучит заманчиво: Django на IronPython
def Introduce():
Дорогие мальчики и девочки, меня (как позже оказалось не только меня) интересует веб-индустрия и всё, что с ней связано, соответственно хочется вкусить разнообразных технологий, одной из них является известный фреймворк Django.
Им и хочется заняться. Думаю, не стоит говорить, о том, что я .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 и советую ознакомиться с его работами:
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
Codeplex: Scrum Dashboard
Введение
Те кто практикует Scrum, ну или хотя бы читал литературу по Scrum, должны знать что такое Scrum Dashboard (“Доска задач”). Из моего опыта обычно для синхронизации того, что висит в её качестве у Вас на стенке, либо стоит рядом с ней, используют wiki-узлы.
Однако я не раз задумывался о том, как хорошо бы было если бы электронный вариант (написанный к примеру на Silverlight) был точной копией этой доски. Конечно я даю себе отчёт в том, что никакая электронная версия не заменит того, вокруг чего ведутся “живые” дискуссии, но всё таки, неплохо бы было иметь копию всегда перед глазами, если географически ты удален от доски.
Суть
Ну и конечно, всё, что можно придумать, можно так же попробовать найти на Codeplex.
Сайт проекта 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-синдикация.
Материалы
- Скачать приложение можно здесь http://www.codeplex.com/scrumdashboard/Release/ProjectReleases.aspx?ReleaseId=16957
- Начать изучать Scrum & XP можно с этой книги http://butaji.wordpress.com/2008/12/02/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
Что такое 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.
Материалы по теме
- Табличка любезно позаимствована здесь http://weblogs.asp.net/rosherove/archive/2007/06/04/alt-net-alternative-tools-and-approaches-to-mainstream-net.aspx
- Страница сообщества ALT.NET http://altdotnet.org/
- Статья в журнале MSDN “Что такое ALT .NET?” by Джереми Д. Миллер (Jeremy D. Miller) http://msdn.microsoft.com/ru-ru/magazine/cc337902.aspx
- Активно развивающаяся группа ALT.NET на Yahoo Groups http://tech.groups.yahoo.com/group/altdotnet/
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 в хранилище.
Решение крайне элегантное и заслуживает искренней благодарности.
Routing in ASP.NET 3.5
Наверно многие желают спрятать параметры запроса за симпатичными ссылками, как например это реализованно в ASP.NET MVC. По линку ниже можно ознакомиться с реализацией.