设为首页 收藏本站
查看: 1596|回复: 0

[经验分享] 在.NET Core和.NET Framework之间选择服务器应用程序

[复制链接]

尚未签到

发表于 2017-7-1 18:45:05 | 显示全部楼层 |阅读模式
  使用.NET构建服务器端应用程序有两种支持的运行时选择:.NET Framework和.NET Core。两者共享相同的.NET平台组件,您可以在两者之间共享代码。但是,两者之间存在根本的区别,您的选择将取决于您要完成的任务。本文提供有关何时使用每个的指导。
  在以下情况下,您应该使用.NET Core作为服务器应用程序:

  • 您有跨平台的需求。
  • 您的目标是微服务。
  • 您正在使用Docker容器。
  • 您需要高性能和可扩展的系统。
  • 您需要通过应用程序并行.NET版本。
  对于您的服务器应用程序,您应该使用.NET Framework:

  • 您的应用程序目前使用.NET Framework(建议是扩展而不是迁移)
  • 您需要使用不适用于.NET Core的第三方.NET库或NuGet软件包。
  • 您需要使用不适用于.NET Core的.NET技术。
  • 您需要使用不支持.NET Core的平台。
何时选择.NET Core
  以下是前面提到的选择.NET Core的原因的更详细的解释。
跨平台需求
  显然,如果您的目标是拥有能够跨平台(Windows,Linux和macOS)运行的应用程序(web / service),则最好的选择是使用.NET Core。
  .NET Core还支持前面提到的操作系统作为开发工作站。Visual Studio为Windows提供集成开发环境(IDE)。您还可以在完全支持.NET Core的MacOS,Linux和Windows上使用Visual Studio代码,包括IntelliSense和调试。您还可以将大多数第三方编辑器(如Sublime,Emacs,VI)定位到.NET Core,并可使用开源Omnisharp项目获取编辑器IntelliSense 。您还可以避免任何代码编辑器,并直接使用可用于所有支持的平台的.NET Core命令行工具。
微服务架构
  如果您拥抱由多个独立,动态可扩展,有状态或无状态的微服务组成的面向微服务系统,则.NET Core是最佳候选人。.NET Core是轻量级的,其API表面可以最小化到微服务的范围。微服务架构还允许您跨服务边界混合技术,从而逐渐拥抱.NET Core,适用于与其他使用.NET Framework,Java,Ruby或其他单片技术开发的微服务或服务相结合的新型微服务器。
  您可以使用的基础架构平台很多。对于大型和复杂的微服务系统,您可以使用Azure Service Fabric。对于无状态的微服务器,您还可以使用其他产品,如Azure App Service。基于Docker的Microservices替代方案也适用于任何类型的微服务方法,如下所述。所有这些平台都支持.NET Core,使其成为托管您的微服务器的理想选择。
集装箱
  容器通常与微服务架构一起使用,尽管它们也可以用于容纳根据任何架构模式的Web应用程序或服务。您将能够使用.NET Framework for Windows容器,但.NET Core的模块化和轻量级特性使其成为容器的完美。在创建和部署容器时,.NET Core比.NET Framework的图像大小要小得多。因为它是跨平台的,所以您可以将服务器应用程序部署到Linux Docker容器。
  然后,您可以在自己的Linux或Windows基础架构中托管Docker容器,或者使用云服务(如Azure容器服务)来管理,编排和扩展云中的基于容器的应用程序。
需要高性能和可扩展的系统
  当您的系统需要最佳性能和可扩展性时,.NET Core和ASP.NET Core是您的最佳选择。ASP.NET Core的性能优于ASP.NET 10,它引领了其他流行的工业技术,如Java servlets,Go和node.js等微服务器。
  这对于微服务架构特别有用,您可以在其中运行数以百计的微服务器。使用ASP.NET Core,您可以使用较少数量的服务器/虚拟机来运行系统,从而最终节省基础架构和托管成本。
需要每个应用程序级别并行.NET版本
  如果您希望能够在.NET中安装依赖于不同版本框架的应用程序,那么您需要使用.NET Core,它提供了100%并排的功能。在同一台机器上轻松并行安装不同版本的.NET Core,您可以在同一台服务器上拥有多个服务,每个服务器都有自己的.NET Core版本,可以消除风险并节省应用程序升级费用IT运营。
何时选择.NET Framework
  虽然.NET Core为新应用程序和应用程序模式提供了显着的优势,但.NET Framework将继续成为许多现有方案的自然选择,因此,它不会被所有服务器应用程序的.NET Core所替代。
当前.NET Framework应用程序
  在大多数情况下,您不需要将现有应用程序迁移到.NET Core。相反,推荐的方法是在扩展现有应用程序时使用.NET Core,例如在ASP.NET Core中编写新的Web服务。
需要使用不支持.NET Core的第三方.NET库或NuGet软件包
  库正在迅速拥抱.NET Standard,它可以在所有.NET风格(包括.NET Core)中共享代码。使用.NET Standard 2.0,这将更容易,因为.NET Core API表面会变得更大,.NET Core应用程序可以直接使用现有的.NET Framework库。但是,这种转换不会立即发生,所以我们建议您在做出决定之前先检查应用程序所需的特定库。
需要使用不适用于.NET Core的.NET技术
  .NET Core中没有一些.NET Framework技术。其中一些将在以后的.NET Core版本中可用,但其他的不适用于.NET Core定位的新应用程序模式,可能永远不可用。以下列表显示了.NET Core 1.0中最常见的技术:

  •   ASP.NET Web窗体应用程序:ASP.NET Web窗体仅在.NET Framework上可用,因此您不能在此方案中使用ASP.NET Core / .NET Core。目前没有计划将ASP.NET Web窗体引入.NET Core。
  •   ASP.NET网页应用程序:ASP.NET网页不包括在ASP.NET Core 1.0中,尽管它计划在未来的版本中包含,如.NET Core路线图中所述。
  •   ASP.NET SignalR服务器/客户端实现。在.NET Core 1.0发布时间框架(2016年6月)中,ASP.NET SignalR不适用于ASP.NET Core(不是客户端或服务器端),尽管它计划被包含在将来的版本中,如.NET Core路线图。预览状态在服务器端和客户端库 GitHub存储库中可用。
  •   WCF服务实现。即使有一个WCF客户端库从.NET Core中使用WCF服务,截至2016年6月,WCF服务器实现仅在.NET Framework上可用。这种情况不是目前.NET Core的计划的一部分,但它将来会被考虑。
  •   工作流相关服务:Windows Workflow Foundation(WF),工作流服务(单一服务中的WCF + WF)和WCF Data Services(以前称为“ADO.NET数据服务”)仅在.NET Framework中可用,并且没有计划将其带入.NET Core。
  •   Windows Presentation Foundation(WPF)和Windows窗体:WPF和Windows窗体应用程序仅在.NET Framework上可用。没有计划将它们移植到.NET Core。
  •   语言支持:Visual Basic和F#当前没有工具支持.NET Core,但两者都将在Visual Studio 2017和更高版本的Visual Studio中得到支持。
  除了官方路线图之外,还有其他框架要移植到.NET Core - 有关完整列表,请查看标记为端口到核心的 CoreFX问题。请注意,此列表不代表微软将这些组件带入.NET Core的承诺 - 它们只是捕捉到社区的愿望。话虽如此,如果您关心上述任何组件,请考虑参与GitHub的讨论,以便您可以听到您的声音。如果您认为缺少某些内容,请在CoreFX存储库中提出新问题。
需要使用不支持.NET Core的平台
  某些Microsoft或第三方平台不支持.NET Core。例如,一些Azure服务,如服务结构状态可靠服务和服务结构可靠的演员需要.NET Framework。一些其他服务提供了一个尚未在.NET Core上使用的SDK。这是一个过渡的情况,因为所有的Azure服务都使用.NET Core。在此期间,您可以随时使用等效的REST API而不是客户端SDK。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390146-1-1.html 上篇帖子: Visual Studio 20周年软件趋势随想 下篇帖子: ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表