.NET Core быстрый взгляд

11 0

Вчера я создал первый проект под .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? Планируешь переходить?


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

MasDen

23 Октября 2016

Решил переписать на .Net Core свой блог. Начинал я эту затею исключительно для образовательных целей и чтобы опробовать технологию в реальном проекте. В целом все нравится, однако отсутствие некоторых уже привычных фич немного сбивает. Приятно, что если не понимаешь как работает тот или иной класс, можно просто зайти на гитхаб и изучить исходники.


Spider_NET

23 Октября 2016

Нет, и не планирую. Раньше делал несколько проектов на ASP .NET MVC, но теперь работаю с ними в режиме поддержки. В будущем планирую их переписать под node.js.


Евгений

24 Октября 2016

.NET Core это ASP.Net MVC кросплатформеный ?


Михаил Фленов

24 Октября 2016

Не совсем, это кросплатформенная база, но не только для Web, но и для десктопа. Это попытка стандартизировать платформу


Максим

24 Октября 2016

а скажите сколько у вас примерно зарабатывает php программист в среднем в месяц ?


Михаил Фленов

24 Октября 2016

От 40k до 100k, вилка очень большая. Но больше 80 платят не так много компаний.


darthat

25 Октября 2016

На работе asp.net core пока не используем, хотя и есть планы переписать на него какой-нибудь из сервисов. Читал про успешный опыт переноса большого проекта на эту платформу, хотя и верится в это с трудом, т.к. некоторые библиотеки еще не портированы и не работают с core. Но зато он действительно работает в Linux, что весьма приятно и открывает интересные возможности.


Евгений

25 Октября 2016

А как же Mono и Xamarin? Это уже вполне состоявшиеся технологии. В .net были возможности реализации кроссплатформенности, что подтверждается коммерческим успехом Xamarin. Но изначально было задумано, что реализации .net на других платформах - это дело сообщества, а не MS. Но видно сообщество, как часто это бывает, забило на это, пришлось самим (MS) делать .Net Core.


Сергей

25 Октября 2016

Новые проекты, и независимые от текущего кода, уже пишу на .Net Core. Старые проекты пока не планируется переписывать


Евгений

25 Октября 2016

Там же можно только консольные приложения и веб-приложения собирать? Для GUI нет поддержки. Пока это воспринимается, как попытка ms протащить свои технологии на не win-сервера. Но еще обещают xamarin forms на .net core, но пока этого нет.


Михаил Фленов

25 Октября 2016

Сейчас Microsoft проталкивают идею .NET Core и .NET Standard. Это база, которая будет стандартизирована и доступна на любой платформе. Это сделано для того, чтобы не было несовместимых сборок и не было такого хаоса, который сейчас в Linux и Android. С помощью стандарта Microsoft гарантирует, что если ты сел за .NET в Windows или Linux, база будет одинакова и Xamarin и Unity будут следовать этому стандарту. API презинтационного уровня может и скорей всего будет отличаться в зависимости от платформы.  


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне