вторник, 4 декабря 2007 г.

Оптимизированный вариант

А вот что c# дает с опцией оптимайз(в визуал студии режим билда Release)

.method public hidebysig instance int32 'add'(int32 a,
int32 b) cil managed
{
// Code size 18 (0x12)
.maxstack 1
.locals init ([0] int32 i,
[1] object o)
IL_0000: ldc.i4.1
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: box [mscorlib]System.Int32
IL_0008: stloc.1
IL_0009: ldloc.1
IL_000a: unbox.any [mscorlib]System.Int32
IL_000f: stloc.0
IL_0010: ldloc.0
IL_0011: ret
} // end of method Class1::'add'

Разница видна невооруженным глазом. Супер. Исчезает та не нежная результирующая переменная и нопы. Они в основном нужны для удобства отладки вроде.

MS IL друг человека

Блин уже 2 года но дот нете а IL так и не изучил. Щас борюсь с этим пробелом. Вот нашел ресурсы по нему(выдрал из одной статейки :-) ).

MSIL reference в DOC формате есть в директории Framework SDK :

Учебник ILDAsm с MSDN и хорошая статейка в выпуске за Май 2001 MSDN Magazine: "ILDASM is Your New Best Friend" John Robbins.

А если вам в лом читать то кратко:

Все работает через стек. регистров нету. Есть локальные переменные. Перед вызовом метода кладем данные в стек после читаем оттуда результат.

MSIL команды для записи в стек называются ld... (load). Команды для извлечения из стека называются st... (store), потомучто значения сторятся в переменных.

И для примера: код на C#

public Int32 add(Int32 a, Int32 b)
{
Int32 i = 1;
Object o = i;
i = (Int32)o;
return i;
}

Тоже самое в ILDASM:

.method public hidebysig instance int32 'add'(int32 a,
int32 b) cil managed Декларация метода
{
// Code size 23 (0x17)
.maxstack 1 Максимальная длина стека. У нас не более одного значения в стеке на все время выполнения
.locals init ([0] int32 i, Переменные
[1] object o,
[2] int32 CS$1$0000) Это переменная которая возвращается
IL_0000: nop Этот ноп(пустая комманда) вставлен так как компилилось без опции оптимайз
IL_0001: ldc.i4.1 Записываем в стек 1
IL_0002: stloc.0 Берем из стека в переменную под номером 0 тоесть i
IL_0003: ldloc.0 сохраняем из нее в стек
IL_0004: box [mscorlib]System.Int32 Выолняем боксинг так как вэлью в обджект
IL_0009: stloc.1 адрес упаковки из стека в переменную под номером 1 (O)
IL_000a: ldloc.1 из переменной под номером 1 в стек
IL_000b: unbox.any [mscorlib]System.Int32 Унбоксинг
IL_0010: stloc.0 из стека значение в переменную
IL_0011: ldloc.0 из переменной в стек
IL_0012: stloc.2 из стека в возвращаемую переменную
IL_0013: br.s IL_0015 хрень какаято :-)
IL_0015: ldloc.2 кладем в стек из возвращаемой переменной
IL_0016: ret Возврат
} // end of method Class1::'add' Конец фильма.

Все что написано тут не имеет никакой связи с реальным миром и является лишь домыслом автора :-)

Перевод туториала по ASP.NET MVC

Уже начал писать но не могу запостить, так как там картинки а руками все делить не охота. Надо установить вритер а у меня на машине рабочей права до сих пор не дали. Поэтому до сих пор толком и не работаю. Читаю clr via c# занимательная книжка. Тока засыпаю. Слишком уж надо думать. Отвык :-) Вот думаю поскорее прочитать. И уже делать какой нибудь сайт на asp.net mvc распределенный с обменом сообщениями и т.п. Все короче что можно в него напихать. Будет у меня тестовым полигоном. DDD и TDD в нем же использовать. А то все много вроде знаю а TDD до сих пор толком не использовал надо же когдато начинать то.. Что странно на работу с оптимизмом просыпаюсь видимо это из за того что компа нет и рано ложусь высыпаюсь. Тут кстати возникла мысль когда деньги появятся купить не F3SA а F3KA. Дешевле на 10 тонн а падение производительности не такое уж и большое.
С магазом моим пока все глухо денег нету. Надо еще ремонт делать и пожарную сигналку. Думаю уже в конце янв деньги появятся и начну. Все равно январь февраль мертвый сезон. Очень мало люди покупают так как бабла нету.
Скорее бы закончить книгу и приступить к тотальному изучения WCF мессагинг. И еще вопрос зачем мс делать 2 разных реализации REST сервисов в WCF и в Astoria? вопрос загадка единственное предположение что асториа это для новичков которые не хотят парится с WCF.

воскресенье, 2 декабря 2007 г.

+ новинки от МС

ASP.NET 3.5 Extensions

VS 2008 и .NET 3.5 включают в себя кучу новых возможностей для ASP.NET разработки. Мс планирует выпустить еще больше ASP.NET функциональности в будущем году с релизом "ASP.NET 3.5 Extensions" . Первый публичный превью будет доступен уже скоро буквально на след неделе.

CTP ASP.NET 3.5 Extensions будет включать:

  • ASP.NET MVC: Модель виев контроллер (MVC) фреймворк для ASP.NET предлагает структурированную модель для создание приложений на основе паттерна MVC (теперь наконецто не надо будет смотреть Django и Rails :-) ) это позволит проще проводить юнит тесты и поддерживать TDD.
  • ASP.NET AJAX Improvements: Новые ASP.NET AJAX фичи в ASP.NET 3.5 Extensions релизе будут включать лучшую поддержку истории браузера (интеграцию с кнопками назад /вперед, и поддержка управления историей на стороне сервера через новый серверный контрол), улучшенную связь AJAX контента с пермалинками, и расширенния JavaScript библиотеки.
  • ASP.NET Dynamic Data Support: Быстрое создание DDD веб сайтов. Предлагает богатый скаффолдинг фреймворк, и включает быструю разработку на основе данных как в ASP.NET WebForms так и ASP.NET MVC.
  • ASP.NET Silverlight Поддержка: Легкая интеграция Silverlight в ваше приложение ASP.NET .
  • ADO.NET Data Services: Параллельно с выпуском ASP.NET Extensions мс также собирается выпустить ADO.NET Entity Framework. Она предлагает новую фреймворк моделирования который позволяет разработчикам определять концептуальную модель схемы базы данных которая очень близко прилегает к виденияю данных в реальном мире. МС также выпустит новый набор дата сервисов ("Astoria") которые позволят просто выставлять основанные на REST API сервисы в вашем ASP.NET приложении.

Silverlight 2.0 Release Лениво писать

  • WPF UI Framework

  • Rich Controls:

  • Rich Networking Support:

  • Rich Base Class Library Support

Новинки от МС

Visual Studio 2008 Web Deployment Project

Отрелизили наконецто а то я уже сам начал делать в мсбилде ручками. Поддерживает как WebSite так и WebApplication проекты и IIS7. Кстати скачал себе windows server 2008 под веб который заточен. Но я до сих пор не купил ноут так как не дают кредит из за прописки. Поэтому сижу только на работе и дома когда соседей нет с их разрешения пользую комп ихний. Монитор ЭЛТ капец я уже отвык. Причем он у них стоял на 60 герц. Я думал глаза сломаю пока не вспомнил про это. Интернет дома врубили на пополам с хозяевами. Акадо. Почитал кстати отзывы говорят говно. Ну посмотрим пока работает уже второй день.

ASP.NET AJAX Control Toolkit

Отрелизили, содержит более 40 дополнительных AJAX контролов и компонент которые работают поверх базовой ASP.NET AJAX функциональности которая встроенна в .NET 3.5 (и доступна в отделной загрузке для ASP.NET 2.0).

Linux.org.ru News

Вебпланета - все новости

CNews - Издание о высоких технологиях