Вчера я создал первый проект под .NET Core, потому что сейчас эта платформа уже более-менее стабилизировалось и можно начинать на нее смотреть. До это я как-то попробовал поставить Visual Studio Code и .NET Core на свой мак, но даже не было времени разобраться с этим.
Под Windows все устанавливается ожидаемо просто - если есть Visual Studio, то просто скачиваем .NET Core 1.0.1 - VS 2015 Tooling и в самом VS появляются новые шаблоны для создания .NET приложения.
Перенести существующий проект на .NET Core оказалось не так уж и просто. У меня есть небольшой проект под Web, и даже его просто так скопировать не удалось. Сейчас сижу и подправляю, а что-то даже решил полностью переписать. Методы у класса останутся теми же, а вот внутренность решил перевести на другие классы. Самое большое изменение для меня - это отсутствие глобального доступа HttpContext. Я согласен, что попытка сделать его глобальным была удобна с точки зрения программирования, но плохой, с точки зрения дизайна кода, поэтому это сейчас исправляют.
Когда Microsoft создавали .NET, то это делалось как ответ Java. Язык программирования мне понравился изначально, но как межплатформенности у .NET изначально не было и ей и не пахло. Я за это очень много критиковал эту платформу и не понимаю, почему ее архитекторы не абстрагировались от Windows изначально? Из-за этого приходится делать это сейчас, снова все переписывать, снова делать новые технологии и т.д.
Но начал ее использовать, потому что для Windows она великолепна. Да и для Web под Windows серверами тоже.
На мой взгляд переход на .NET Core будет не таким уж и быстрым, потому что в случае с крупными проектами один только HttpContext приведет к серьезным проблемам перехода. Есть хак, который позволит сделать глобальным контекст, но это хак и контекст не должен быть глобальным.
Я в своем проекте к контексту не обращаюсь напрямую, для этого как минимум я делаю оболочку в стиле:
class RequestContext { private static IDictionary globalContext = new Dictionary(); private RequestContext() { } public static IDictionary Current { get { if (HttpContext.Current != null) { return HttpContext.Current.Items; } return globalContext; } } }
Это в минимальном случае, чтобы обеспечить возможность простое тестирования кода. В более серьезных проектах приходиться абстрагироваться лучше, и как раз это указывает на то, что действительно была проблема с глобальностью контекста. Но даже мой простой вариант перевести на .NET Core непосильный труд.
Ты уже начал что-то писать под Core? Планируешь переходить?
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Решил переписать на .Net Core свой блог. Начинал я эту затею исключительно для образовательных целей и чтобы опробовать технологию в реальном проекте. В целом все нравится, однако отсутствие некоторых уже привычных фич немного сбивает. Приятно, что если не понимаешь как работает тот или иной класс, можно просто зайти на гитхаб и изучить исходники.
Нет, и не планирую. Раньше делал несколько проектов на ASP .NET MVC, но теперь работаю с ними в режиме поддержки. В будущем планирую их переписать под node.js.
.NET Core это ASP.Net MVC кросплатформеный ?
Не совсем, это кросплатформенная база, но не только для Web, но и для десктопа. Это попытка стандартизировать платформу
а скажите сколько у вас примерно зарабатывает php программист в среднем в месяц ?
От 40k до 100k, вилка очень большая. Но больше 80 платят не так много компаний.
На работе asp.net core пока не используем, хотя и есть планы переписать на него какой-нибудь из сервисов. Читал про успешный опыт переноса большого проекта на эту платформу, хотя и верится в это с трудом, т.к. некоторые библиотеки еще не портированы и не работают с core. Но зато он действительно работает в Linux, что весьма приятно и открывает интересные возможности.
А как же Mono и Xamarin? Это уже вполне состоявшиеся технологии. В .net были возможности реализации кроссплатформенности, что подтверждается коммерческим успехом Xamarin. Но изначально было задумано, что реализации .net на других платформах - это дело сообщества, а не MS. Но видно сообщество, как часто это бывает, забило на это, пришлось самим (MS) делать .Net Core.
Новые проекты, и независимые от текущего кода, уже пишу на .Net Core. Старые проекты пока не планируется переписывать
Там же можно только консольные приложения и веб-приложения собирать? Для GUI нет поддержки. Пока это воспринимается, как попытка ms протащить свои технологии на не win-сервера. Но еще обещают xamarin forms на .net core, но пока этого нет.
Сейчас Microsoft проталкивают идею .NET Core и .NET Standard. Это база, которая будет стандартизирована и доступна на любой платформе. Это сделано для того, чтобы не было несовместимых сборок и не было такого хаоса, который сейчас в Linux и Android. С помощью стандарта Microsoft гарантирует, что если ты сел за .NET в Windows или Linux, база будет одинакова и Xamarin и Unity будут следовать этому стандарту. API презинтационного уровня может и скорей всего будет отличаться в зависимости от платформы.
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.