{"id":5915,"date":"2016-11-16T17:38:00","date_gmt":"2016-11-17T01:38:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/cesardelatorre\/?p=5915"},"modified":"2016-11-16T17:38:00","modified_gmt":"2016-11-17T01:38:00","slug":"docker-containers-should-i-use-net-core-or-net-framework-2","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/docker-containers-should-i-use-net-core-or-net-framework-2\/","title":{"rendered":"Docker containers \u2013 Should I use .NET Core or .NET Framework?"},"content":{"rendered":"<p><a href=\"http:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-content\/uploads\/sites\/32\/2016\/11\/image413.png\"><img decoding=\"async\" title=\"image\" style=\"padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px\" border=\"0\" alt=\"image\" src=\"http:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-content\/uploads\/sites\/32\/2016\/11\/image_thumb335.png\" width=\"227\" height=\"267\" \/><\/a><\/p>\n<p><span style=\"font-size: small\">The short answer is: \u201c<em>For Docker containers, use .NET Core whenever is possible<\/em>\u201d. But, b<\/span><span style=\"font-size: small\">elow is a summary decision table depending on your architecture or application type and the server operating system you are targeting for your Docker containers.<\/span><\/p>\n<p><span style=\"font-size: small\">Take into account that if you are targeting Linux containers you will need Linux based Docker hosts (VMs or Servers) and in a similar way, if you are targeting Windows containers you will need Windows Server based Docker hosts (VMs or Servers).<\/span><\/p>\n<p><span style=\"font-size: small\"><\/span><\/p>\n<table cellspacing=\"0\" cellpadding=\"2\" width=\"800\" border=\"2\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"307\"><b><span style=\"font-size: medium\">Architecture \/ App Type<\/span><\/b><\/td>\n<td valign=\"top\" width=\"223\"><b><span style=\"font-size: medium\">Linux containers<\/span><\/b><\/td>\n<td valign=\"top\" width=\"266\"><b><span style=\"font-size: medium\">Windows containers<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">Microservices<\/span><\/td>\n<td valign=\"top\" width=\"223\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<td valign=\"top\" width=\"266\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">Monolithic deployment App<\/span><\/td>\n<td valign=\"top\" width=\"223\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<td valign=\"top\" width=\"266\"><span style=\"font-size: small\"><b>.NET Framework<\/b> <\/span><\/p>\n<p><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">Best-in-class performance and scalability<\/span><\/td>\n<td valign=\"top\" width=\"223\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<td valign=\"top\" width=\"266\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">Windows Server \u201cbrown-field\u201d migration to containers<\/span><\/td>\n<td valign=\"top\" width=\"223\"><span style=\"font-size: small\">&#8212;<\/span><\/td>\n<td valign=\"top\" width=\"266\"><b><span style=\"font-size: small\">.NET Framework<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">Containers \u201cgreen-field\u201d<\/span><\/td>\n<td valign=\"top\" width=\"223\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<td valign=\"top\" width=\"266\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">ASP.NET Core<\/span><\/td>\n<td valign=\"top\" width=\"223\"><b><span style=\"font-size: small\">.NET Core<\/span><\/b><\/td>\n<td valign=\"top\" width=\"266\"><span style=\"font-size: small\"><b>.NET Core<\/b> recommended <\/span><\/p>\n<p><span style=\"font-size: small\">.NET Framework is possible<\/span><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">ASP.NET 4 (MVC 5, Web API 2)<\/span><\/td>\n<td valign=\"top\" width=\"223\"><span style=\"font-size: small\">&#8212;<\/span><\/td>\n<td valign=\"top\" width=\"266\"><b><span style=\"font-size: small\">.NET Framework<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">SignalR services<\/span><\/td>\n<td valign=\"top\" width=\"223\"><span style=\"font-size: small\"><b>.NET Core<\/b> in upcoming releases<\/span><\/td>\n<td valign=\"top\" width=\"266\"><span style=\"font-size: small\"><b>.NET Framework<\/b> <\/span><\/p>\n<p><span style=\"font-size: small\"><b>.NET Core<\/b> in upcoming releases<b><\/b><\/span><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">WCF, WF and other traditional frameworks<\/span><\/td>\n<td valign=\"top\" width=\"223\"><span style=\"font-size: small\">&#8212;<\/span><\/td>\n<td valign=\"top\" width=\"266\"><b><span style=\"font-size: small\">.NET Framework<\/span><\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"307\"><span style=\"font-size: small\">Consumption of Azure services<\/span><\/td>\n<td valign=\"top\" width=\"223\"><b><span style=\"font-size: small\">.NET Core <\/span><\/b><\/p>\n<p><span style=\"font-size: small\">(Eventually all Azure services will provide Client SDKs for .NET Core)<\/span><\/td>\n<td valign=\"top\" width=\"266\"><span style=\"font-size: small\"><b>.NET Framework<\/b> <\/span><\/p>\n<p><span style=\"font-size: small\"><b>.NET Core<\/b> <\/span><\/p>\n<p><span style=\"font-size: small\">(Eventually all Azure services will provide Client SDKs for .NET Core)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-size: small\"><\/span><\/p>\n<p><span style=\"font-size: small\">And here\u2019s a written summary about it:<\/span><\/p>\n<p><span style=\"font-size: small\">You should use .NET Core for your containerized Docker server application when:\n\u2022\u00a0\u00a0\u00a0 You have cross-platform needs. You want to use Linux containers and Windows containers.\n\u2022\u00a0\u00a0\u00a0 Your application architecture is based on microservices.\n\u2022\u00a0\u00a0\u00a0 You need best-in-class high performance and hyper-scale.<\/span><\/p>\n<p><span style=\"font-size: small\">You should use .NET Framework for your containerized Docker server application when:\n\u2022\u00a0\u00a0\u00a0 Your application currently uses .NET Framework and has strong dependencies on Windows\n\u2022\u00a0\u00a0\u00a0 You need to use third-party .NET libraries or NuGet packages not available for .NET Core.\n\u2022\u00a0\u00a0\u00a0 You need to use .NET technologies that are not available for .NET Core.\n\u2022\u00a0\u00a0\u00a0 You need to use a platform that doesn\u2019t support .NET Core. <\/span><\/p>\n<p><span style=\"font-size: small\">I\u2019m writing further details about this subject in a separate and longer document, but I thought it would be good to share this summary table with the community and get some feedback. Please, post your feedback here in the blog post or send me direct feedback to cesardl at microsoft.com<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The short answer is: \u201cFor Docker containers, use .NET Core whenever is possible\u201d. But, below is a summary decision table depending on your architecture or application type and the server operating system you are targeting for your Docker containers. Take into account that if you are targeting Linux containers you will need Linux based Docker [&hellip;]<\/p>\n","protected":false},"author":362,"featured_media":12806,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[8,10,21,38,43],"class_list":["post-5915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cesardelatorre","tag-net-core","tag-net-framework","tag-asp-net-core","tag-containers","tag-docker"],"acf":[],"blog_post_summary":"<p>The short answer is: \u201cFor Docker containers, use .NET Core whenever is possible\u201d. But, below is a summary decision table depending on your architecture or application type and the server operating system you are targeting for your Docker containers. Take into account that if you are targeting Linux containers you will need Linux based Docker [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts\/5915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/users\/362"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/comments?post=5915"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts\/5915\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/media\/12806"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/media?parent=5915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/categories?post=5915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/tags?post=5915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}