针对绿地开发定位.NET4.6或.NET Core 1?

时间:2016-02-01 11:58:33

标签: .net asp.net-core .net-core entity-framework-core

我开始理解.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,还是仅使用它的唯一优势跨平台?换句话说,如果我永远不会在除了Windows之外的任何东西上运行它并且想要与库不兼容的最小痛苦,我是否坚持使用.NET4.6?

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

2 个答案:

答案 0 :(得分:2)

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

事实上,当你想要get it from official source时,你仍将面临困境。

Asp.net核心拥有Go Live许可,微软会给予支持,ready for productionwhich to choose

<强> Diclaimer : 我的其余部分可能是基于意见的......

如果你没有约束,例如你还需要像SignalR这样不受支持的功能,到目前为止我可以分享我的类似经历:

我开始使用核心mvc6 web api

当我需要WCF时,它并不那么容易 - &gt; see here

然后不得不使用4.5框架目标类库 - &gt; you can easily now reference这些及其所有内容将在visual studio中自动完成

我必须通过IIS发布障碍找到更多方法 - &gt; for example

底线:

单独解决新frequent releases

的大多数问题

我一开始就感觉一旦阻塞实施出现就会跳出来,正在变得越来越自信,实际上你可以拥有更灵活的解决方案你学习它。

我只能补充一点,你可能想快速阅读documentation并提供更多线索

答案 1 :(得分:2)

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

  1. 您是否正在构建与.NET Core的“甜蜜点”相匹配的后端服务 - 即。网站或Web / REST API或两者兼而有之?根据我的经验,.NET Core是完美的,并且已经运行良好,虽然EFCore仍在成熟,工具仍在不断变化。
  2. 您想构建WCF服务和其他Windows特定技术吗?通常,您希望坚持使用完整的.NET框架,如here所述。通过一些工作可以从.NET Core Web API调用WCF服务。
  3. 消息队列 - RabbitMQ现在支持.NET Core,我认为MSMQ可能有问题 - 最多你需要引用完整的框架库。
  4. 如果您需要任何基于Windows的GUI(WCF或Winforms),请使用完整的.NET框架。
  5. 构建作为Windows服务运行的后台进程 - 通常使用.NET Core中不支持的完整.NET Framework,尽管您可以在.NET Core中编写它并为其构建完整的.NET服务包装 - 现在可能是值得的除非您还希望能够在其他平台上运行该过程。
  6. 如果您想要运行跨平台(我做过),您必须使用.NET Core。
  7. 如果你想使用Docker进行部署(就像我一样) - .NET Core似乎更关注这一点,但是在新的Windows 2016本机容器中都完全支持这两种工作。
  8. 希望有所帮助。