Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен.
Но зачем туда пихать вещи которые не кроссплатформены, например WinForms или WPF.
После этого уже с опаской начинаешь использовать и все остальное, совсем нет уверенности что на другой платформе это будет работать или может и будет работать но ощутимо иначе. Например поведение каких-то сетевых, файловых, асинхронных вещей может зависеть от платформы или то что связано с потоками.
Есть ли где-то сводки что протестировано на разных платформах и работает +- одинаково, а что существенно отличается ?
Например недавно кто-то писал что Guid.New() тормозил на Linux на старых корах, но потом пофиксили это, возможно есть еще известные проблемы которые надо знать.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен. O>Но зачем туда пихать вещи которые не кроссплатформены, например WinForms или WPF.
Затем, что M$ надо отчаянно делать хорошую мину при плохой игре — им нужно внушить ВСЕЙ АРМИИ кодеров, что якобы "коре — это такое же как фрэймворк, только ещё лучше!". Да не только кодерам, а вообще всей ИТ индустрии, которая, на минуточку, вкладывалась в Windows.NET последние 15 лет(!). Вот теперь представь себе, что твой купленный за кровные автомобиль объявили "устаревшим" — побежишь покупать новый? Нет, ты тысячу раз почешешь репу, "а оно мне надо?". Вот примерно и мы так же — смотрим на потуги M$ и не совсем понимаем, кому и зачем упёрлась эта "кроссплатформенность". Я ещё понимаю задроты-пингвофилы этим страдают (в осн. до окончания интитута и первой работы), но остальным она зачем? Линупсятина за десятки лет всё ещё болтается на уровне 2%. Причём даже у пингвизятников дуалбутом ВСЕГДА стоит родненькая Вендусяшечка. Ну и кого они обманывают? Кому нужно это зоофильство в мире 100% вендодесктопа?? Вот-вот.
Здравствуйте, Kolesiki, Вы писали:
K>и не совсем понимаем, кому и зачем упёрлась эта "кроссплатформенность". Я ещё понимаю задроты-пингвофилы этим страдают (в осн. до окончания интитута и первой работы), но остальным она зачем? Линупсятина за десятки лет всё ещё болтается на уровне 2%. Причём даже у пингвизятников дуалбутом ВСЕГДА стоит родненькая Вендусяшечка. Ну и кого они обманывают? Кому нужно это зоофильство в мире 100% вендодесктопа?? Вот-вот.
Понимаешь даже эти 2% это большие деньги и делая продукт кросс-платформенным он может плохо продаваться под виндой , т.к. есть масса аналогов, но при этом хорошо продаваться под линухом, т.к. может оказаться что аналогов много но они немного староваты, интерфейс страшненький и т.п.
Если ради этих 2% приходится отдельно разработку вести тут можно подумать и не рисковать, но если движок кросплатформенный то почему бы не сделать под разные это получается дешево.
Но вот с .NET корой получается такая неразбериха что не понятно где взять гарантии что функцию которую ты взял из api .net core она имеет одинаковое поведение на всех платформах.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен.
Мелкомягкие опять взялись за старое? Ловят народ на крючок кроссплатформенности, а потом оказывается, что под виндой быстрее работает, под виндой есть еще очень полезные фичи X, Y и Z, и вообще перевести сервера на винду проще и дешевле, чем отлаживать, оптимизировать и дописывать уже написанный продукт для линукса.
Здравствуйте, okon, Вы писали:
O>Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен. O>Но зачем туда пихать вещи которые не кроссплатформены, например WinForms или WPF.
Потому что .Net 4.8 последняя будет. .Net 5.0 — это уже полностью Core, поэтому и пихают, куда девать то? Почитайте roadmap.
Здравствуйте, varenikAA, Вы писали:
AA>Здравствуйте, okon, Вы писали:
O>>Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен. O>>Но зачем туда пихать вещи которые не кроссплатформены, например WinForms или WPF.
AA>Потому что .Net 4.8 последняя будет. .Net 5.0 — это уже полностью Core, поэтому и пихают, куда девать то? Почитайте roadmap.
Да знаю, вопрос только зачем это все в одну кучу смешивать, кроссплатформенность и виндовую платформу.
Просто получается крайне не удобно это все разрабатывать, каждый раз используя любую фичу которая как-то немного зависит от платформы приходится беспокоиться а не вылезет ли там предупреждение что поддерживается только под Windows.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен. O>Но зачем туда пихать вещи которые не кроссплатформены, например WinForms или WPF.
Потому, что Core — это не отдельный фреймворк, который будет кросплатформенным. .NET и так в теории была кросплатформенной.
Core — это просто масштабный рефакторинг .NET Framework, который после завершения станет основной веткой.
А то, что они чётко не отделяют кросплатформенные фичи, чтобы облегчить, собственно, кросплатформенную разработку — ну так это они решили ещё раз пройтись по старым граболям.
Здравствуйте, okon, Вы писали:
O>Да знаю, вопрос только зачем это все в одну кучу смешивать, кроссплатформенность и виндовую платформу.
Никто ничего не смешивает. Это все отдельные пакеты. Хочешь используешь, хочешь нет.
O>Просто получается крайне не удобно это все разрабатывать, каждый раз используя любую фичу которая как-то немного зависит от платформы приходится беспокоиться а не вылезет ли там предупреждение что поддерживается только под Windows.
Ты когда publish делаешь — выбираешь рантайм. И если какой то пакет не поддерживает определенный рантайм — тебе об этом скажут.
O>>Просто получается крайне не удобно это все разрабатывать, каждый раз используя любую фичу которая как-то немного зависит от платформы приходится беспокоиться а не вылезет ли там предупреждение что поддерживается только под Windows.
НС>Ты когда publish делаешь — выбираешь рантайм. И если какой то пакет не поддерживает определенный рантайм — тебе об этом скажут. НС>Image: c-users-barry-appdata-local-microsoft-windows-ine-7.png
Это хорошо, но хотелось бы например набираешь условно "new FileStream()" быть уверенным что есть на нем "сертификат качества" т.е. протестировано и работает на заявленных платформах.
А не получать эту информацию уже при публикации на Linux например.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Это хорошо, но хотелось бы например набираешь условно "new FileStream()" быть уверенным что есть на нем "сертификат качества" т.е. протестировано и работает на заявленных платформах. O>А не получать эту информацию уже при публикации на Linux например.
Это довольно тяжело в вычислительном плане. Перемножение количества фреймворков и платформ даст такое количество комбинаций, что устанешь проверять.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, okon, Вы писали:
O>>Это хорошо, но хотелось бы например набираешь условно "new FileStream()" быть уверенным что есть на нем "сертификат качества" т.е. протестировано и работает на заявленных платформах. O>>А не получать эту информацию уже при публикации на Linux например.
НС>Это довольно тяжело в вычислительном плане. Перемножение количества фреймворков и платформ даст такое количество комбинаций, что устанешь проверять.
Но я все же надеюсь что в MS перед выпуском фреймворка все API тестируют на платформах и у них есть чеклист что работает, что нет, а что впринципе не поддерживается ( код не написан ), как в случае WinForms например.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Это хорошо, но хотелось бы например набираешь условно "new FileStream()" быть уверенным что есть на нем "сертификат качества" т.е. протестировано и работает на заявленных платформах.
Для FileStream нужно таргетить не netcoreapp3.0, а netstandard2.0. Максимум кода выносить из .NET Core-библиотек в .NET Standard-библиотеки.
O>Зачем в .NET Core пихают все подряд
В .NET Standard не пихают. Это более ограниченный, но и более переносимый набор API.
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, okon, Вы писали:
O>>Это хорошо, но хотелось бы например набираешь условно "new FileStream()" быть уверенным что есть на нем "сертификат качества" т.е. протестировано и работает на заявленных платформах.
Q>Для FileStream нужно таргетить не netcoreapp3.0, а netstandard2.0. Максимум кода выносить из .NET Core-библиотек в .NET Standard-библиотеки.
p.s. только не 2.0 а 2.1, Core 3.0 поддерживается начиная с 2.1
p.p.s. что еще прикольне что просто так перейти с 2.0 на 2.1 не получится если проект использует .net framework,
т.к. .net framework в .net stanard 2.1 уже не поддерживается, только .net core 3.0 и нужно все проекты переводить на core если хочется использовать плюшки 3.0.
Да хорошая мысль,
еще такой момент .NET Standard он поддерживает намного большее количество платформ чем .NET Core, но ощутимо урезан.
Есть и что-то посередине что не входит в .NET Standard но работает на Linux/Windows/Mac,
вот хотелось бы иметь понимание что тестировалось в рамках .net core 3.0 и работает на всех трех платформах
Q>В .NET Standard не пихают. Это более ограниченный, но и более переносимый набор API.
Согласен.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Проблема одна — MS хочет оставить только Core.
Но Core должен совместим и со старым кодом. Поэтому и тащат в том числе и СОМ. Но они платформенно зависимы.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, okon, Вы писали:
O>Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен. O>Но зачем туда пихать вещи которые не кроссплатформены, например WinForms или WPF.
Одна из хороших стратегий то, что C++ кроссплатформен.
Но зачем для C++ есть вещи, которые не кроссплатформенны, например, MFC или ATL.
Понимаешь? MFC и WPF — это библиотеки. Они не встроены в сам Core или C++. Для использования их нужно сперва подключить. Просто не подключай всё подряд. Сперва читай описание библиотеки, для чего она предназначена, на какой платформе будет работать.
Здравствуйте, okon, Вы писали:
O>p.s. только не 2.0 а 2.1, Core 3.0 поддерживается начиная с 2.1
Core 3 поддерживает и 2.0, а вот FW 4.8 2.1 не поддерживает.
O>т.к. .net framework в .net stanard 2.1 уже не поддерживается, только .net core 3.0 и нужно все проекты переводить на core если хочется использовать плюшки 3.0.
Если хочется всех плюшек, нужно core 3, а не netstd. Вот только нужны ли тебе все вишки core 3 — совсем не факт.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Если хочется всех плюшек, нужно core 3, а не netstd. Вот только нужны ли тебе все вишки core 3 — совсем не факт.
А есть ли простой способ посмотреть что есть Core3 и нет в Std2.1
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Вот одна из хороших выбранных стратегий то что .NET Core кроссплатформен.
.NET Core это одна из реализация .NET, по по факту 5 разных. win 2 штука, linux 2 штука, macos.
Кроме нее есть Xamarin, Unity, .NET FW, Mono
O>Но зачем туда пихать вещи которые не кроссплатформены, например WinForms или WPF.
Что значит "пихать" ? WPF для .NET Core это отдельный пакет и даже отдельный проект на GitHub. В самом .NET Core нет ничего от WPF.
O>После этого уже с опаской начинаешь использовать и все остальное, совсем нет уверенности что на другой платформе это будет работать или может и будет работать но ощутимо иначе. Например поведение каких-то сетевых, файловых, асинхронных вещей может зависеть от платформы или то что связано с потоками.
Для этого есть .NET Standard. Если пакет таргетит .NET Standard, то тыможешь узнать с какими рантаймами он гарантированно совместим https://dotnet.microsoft.com/platform/dotnet-standard
Все что выходит за пределы .NET Standard скорее всего не будет работать на каких-то плаформах или таргетах для .NET Core
O>Есть ли где-то сводки что протестировано на разных платформах и работает +- одинаково, а что существенно отличается ? https://dotnet.microsoft.com/platform/dotnet-standard
Ну а самый гланый вопрос "зачем" — чтобы похоронить .NET FW и делать на .NET Core. Там уже есть AOT, упаковка фреймворка с приложением и урезание лишних библиотек.