пятница, 3 августа 2012 г.

Миграция на .NET платформу: Начальные сведения о платформе

Чтобы начать хоть что то писать, при переходе с Java, мне потребовалось узнать:

Синтаксис

В большинстве случаев, синтаксис Java и C# похожи. Из незнакомого (и того, что нужно знать "уже сейчас"):
  • out параметры - такого в java нету, а в C# используется довольно часто;
  • Область видимости internal;
  • static class - для любителей "Tools" и "Utils" классов :);
  • виртуальные методы и overriding - это по началу вызвало особые недоумения;
  • индексатор([]) и перегрузка операторов - такого тоже нету в Java, но эти механизмы часто используются;
  • делегаты и events - для меня, это оказались самыми непривычными и непонятными темамию (полезная статья и еще одна);
  • Структуры (structure) - очень похожи на классы, но ведут себя по особенному:) (очень рекомендую почитать).

Коллекции

Структура коллекций и их интерфейсы очень отличается от java collections. Особенно "доставляет" класс Dictionary :) (линк).
Также есть интересная библиотека Power Collections - "типа" commons-collections.

Assembly и зависимости

Принципе, ничего сложного и нового. Просто надо знать что это такое, как его создать и настроить.

Resources (строки, файлы, иконки)

Очень полезная штука. В java вопрос хранения и доступа к внутренним строкам, иконкам и др. файлов решался как попало и чем попало. В .NET у assembly есть контейнер, в котором можно хранить именованные ресурсы. Также есть механизм удобного программного доступа к ним. Особенно это радует при разработке UI модулей и иногда, при написании тестов.

четверг, 2 августа 2012 г.

Миграция на .NET платформу: Базовый инструментарий

Просто читать книги по языку не интересно - хочется надо что то пробовать писать. Для этого необходимо понять:
  • в чем писать (IDE)
  • как это запустить
  • где это все хранить

... в чем писать (IDE)?

Альтернатив как бы особо то и нету. Конечно же, кроме Visual Studio есть сторонние IDE для работы с C# кодом, но больше напоминают поделки студентов.

... как это запустить?

есть нечто напоминающее JDK - .NET framework. Включает в себя виртуальную машину, базовый набор библиотек и инструментарии для отладки и разработки. Похоже, что есть 4 основные (переломные редакции):
  • .NET 1.0 - самая первая и самая убогая версия. В данное время практически не используется.
  • .NET 2.0 - первая доведенная до юзабельного состояния версия. Вылечили многие детские болезни 1.0. Начали интересные синтаксические отличия от Java :)
  • .NET 3.5 - не только язык, но и платформу перекопали на столько, что у многих библиотек появились версии до 3.5, и после 3.5. Также, полным ходом внедряется элементы из функциональных языков.
  • .NET 4.0 - уже не самая новая, но вполне свежая и актуальная версия. "Типа" много усовершенствований, новая версия виртуальной машины CLR, доработан UI фреймверк и т.д.

... где это все хранить?

По поводу кода - у VS есть вполне достойные плагины для работы с SVN и Git репозиториями.
По поводу настроек - тут все немножко сложнее (по сравнению с Eclipse). Настройки проектов и солюшенов хранятся в файлах sln и csproj. Как правило, эти файлы вместе с исходниками находятся под контролем версий. А вот глобальные настройки IDE (горячие клавиши, окна и др.) хранятся в "Мои Документы/Visual Studio XXXX" и об этом желательно не забывать, чтобы после перестановки ОС не было "мучительно больно":)

Миграция на .NET платформу

После долгого писания на Java, выдалась возможность вплотную познакомится с MS .NET. В начале, незнание платформы вызывало чувство раздраженности и полной беспомощности, но позже, начал вырисовываться круг того, что надо выучить, понять и выполнить.
Далее мои основные впечатление о том, как перестроиться на .NET платформу в смысле обустройства рабочего пространства и налаживание эффективной работы.
У меня получилось следующие группы того, что срочно необходимо сделать или узнать, для того, чтобы начать эффективно работать:
  1. Базовый инструментарий - в случае с .NET надо разобраться а) какие .NET Frmaework -и бывают. как их ставить; б) определиться с IDE
  2. Начальные сведения о платформе - а) основы синтаксиса C# б) минимум знаний чтобы создать, скомпилировать и запустить проект
  3. Эффективный локальный инструментарий - инструменты на локальном компе
  4. Основная информация о платформе - а) минимальный набор знаний чтобы начать работать б) места, где можно найти нужную информацию
  5. Базовые фреймверки - xUnit, Mock, UI (RCP, Forms), XML (DOM, SAX, serialization etc)
  6. Инструментарий для жизни проекта - Build tool, CI server etc
Чет дофига получается... поэтому буду вставлять ссылки по мере написания сообщений.