以 .NET4.6 或 .NET Core 1 为目标进行全新开发?

Target .NET4.6 or .NET Core 1 for greenfield development?

我开始理解 .NET 堆栈跨平台的命名约定。 特别是这个页面解释得很好: http://blog.tonysneed.com/2016/01/22/ef6-asp-net-core-mvc6/

我正在开始一个完全全新的个人项目,并将其视为学习所有这些新技术的机会。但是,我想重新使用来自其他使用众所周知的库的 MVC5 应用程序的代码。特别是对于基础设施和管道,我使用了一些著名的库,例如 StructureMap、AutoMapper 和数据持久性 EF (EF 4/5)。

由于对我应该使用的版本没有限制,我应该从头开始并使用最新的 ASP.NET Core 1.0、.NET Core 1.0 和 EF Core 1.0 还是使用 EF Core 1.0 的唯一优势只是它会是跨平台的?换句话说,如果我永远不会 运行 除了 Windows 之外的任何东西,并且希望将库不兼容的痛苦降到最低,我会坚持使用 .NET4.6 吗?

我基本上想利用这个机会学习新的东西,而不影响我的应用程序未来的可移植性。 MS 最终会在 Windows 上将 .NET Core 1 设为默认吗?

看起来 MS 不会在两者之间做出决定,因为:.NET Core is essentially a fork of the NET Framework

其实当你想要get it from official source的时候,你仍然会面临困境。

Asp.net核心有Go Live许可证,微软会给予支持,是ready for production, which to choose?

免责声明: 我的其余答案可能是基于意见的...

如果您没有限制,例如您仍然需要像 SignalR 这样不受支持的功能,到目前为止我可以分享我的类似经验:

我从核心 mvc6 web 开始 api

当我需要 WCF 时,它并不那么容易 ->

然后必须使用针对 class 库的 4.5 框架 -> 那些以及围绕它的所有环绕将在 visual studio

中自动完成

我不得不寻找更多方法来克服 IIS 发布障碍 ->

底线:

大部分问题都需要用新的单独解决 frequent releases

一开始我的感觉是一旦出现阻塞实施我就会跳出来,这种感觉正在改变,越来越有信心实际上你可以拥有越学越灵活。

我只能补充一点,您可能想快速阅读 documentation 并获得更多线索

我经历了这场辩论并最终选择了 .NET Core;六个月后以及一些生产部署之后,我相信这是正确的决定。以下几个问题可能会澄清您的决定:

  1. 您是否正在构建与 .NET Core 的 'sweet spot' 匹配的 back-end 服务 - 即。网站或 web/REST API 或两者?根据我的经验,.NET Core 非常适合这一点,并且已经运行良好,尽管 EFCore 仍在成熟并且工具仍在变化。
  2. 您想构建 WCF 服务和其他 Windows-specific 技术吗?通常,您希望坚持使用完整的 .NET 框架,如 here 所述。可以通过一些工作从 .NET Core Web API 调用 WCF 服务。
  3. 消息队列 - RabbitMQ 现在支持 .NET Core,我认为 MSMQ 你可能有问题 - 充其量你需要参考完整的框架库。
  4. 如果您需要任何 Windows-based GUI - WCF 或 Winforms - 使用完整的 .NET 框架。
  5. 构建 运行 作为 Windows 服务的后台进程 - 通常使用完整的 .NET 框架,在 .NET Core 中不受支持,尽管您可以在 .NET Core 中编写它并构建一个完整的它的 .NET 服务包装器 - 现在可能是值得的,除非您还希望能够 运行 其他平台上的进程。
  6. 如果你想要 运行ning cross-platform 的选项(我做到了),你必须 .NET Core。
  7. 如果你想使用 Docker 进行部署(就像我一样)- .NET Core 似乎更专注于此,但两者都有效,并且在新的 Windows 2016 中都得到了完全支持本机容器。

希望对您有所帮助。