{"id":3077,"date":"2017-01-22T07:00:17","date_gmt":"2017-01-22T07:00:17","guid":{"rendered":"http:\/\/www.rezafaisal.net\/?p=3077"},"modified":"2017-01-22T07:03:48","modified_gmt":"2017-01-22T07:03:48","slug":"asp-net-core-application-is-standalone-console-application","status":"publish","type":"post","link":"http:\/\/www.rezafaisal.net\/?p=3077","title":{"rendered":"ASP.NET Core Application is Standalone Console Application!"},"content":{"rendered":"<p>Jika mendengar kata \u201cASP.NET\u201d pasti akan terlintas sebuah aplikasi web.\u00a0 Karena sejarahnya sejak:<\/p>\n<ul>\n<li>ASP Classic.<\/li>\n<li>ASP.NET Web Form.<\/li>\n<li>ASP.NET MVC.<\/li>\n<\/ul>\n<p>Ketiganya telah dikenal sebagai framework untuk membuat aplikasi web.\u00a0 Tetapi ASP.NET Core mempunyai perbedaan dibandingkan 3 pendahulunya.<\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Cross Platform<\/em><\/strong>}<\/p>\n<p>Perbedaan pertama adalah ASP.NET Core adalah framework multiplatform, yang dapat digunakan pada platform Windows, Linux atau Mac OSX.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/01\/01-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"01\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/01\/01_thumb-1.jpg\" alt=\"01\" width=\"400\" height=\"478\" border=\"0\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Open Source<\/em><\/strong>}<\/p>\n<p>Perbedaan selanjutnya adalah source code ASP.NET Core dapat ditemui pada link berikut ini <a title=\"https:\/\/github.com\/aspnet\" href=\"https:\/\/github.com\/aspnet\">https:\/\/github.com\/aspnet<\/a>.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/01\/02-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"02\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/01\/02_thumb-1.jpg\" alt=\"02\" width=\"404\" height=\"491\" border=\"0\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Multi Framework<\/em><\/strong>}<\/p>\n<p>ASP.NET Core dapat menggunakan .NET Framework 4.6.2 atau .NET Core Framework.\u00a0 .NET Framework 4.6.2 ini hanya dapat digunakan pada platform MS Windows.\u00a0 Sedangkan .NET Core Framework dapat digunakan pada berbagai platform.\u00a0 Sebagai informasi, karena .NET Core Framework adalah framework yang dibuat dari awal (bukan melanjutkan .NET Framework yang telah ada) maka fitur-fitur yang dimiliki oleh framework ini tidak selengkap .NET Framework 4.6.2 sebagai versi terbaru.<\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Standalone Console Application<\/em><\/strong>}<\/p>\n<p>Ini adalah perbedaan yang paling penting dan unik, yaitu ASP.NET Core application bukan aplikasi web.\u00a0 ASP.NET Core application adalah standalone console application.\u00a0 Hal ini dapat dibuktikan dengan terdapat file Program.cs dengan isi sebagai berikut.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\"><span style=\"color: #0000ff;\">using<\/span> System;\r\n<span style=\"color: #0000ff;\">using<\/span> System.Collections.Generic;\r\n<span style=\"color: #0000ff;\">using<\/span> System.IO;\r\n<span style=\"color: #0000ff;\">using<\/span> System.Linq;\r\n<span style=\"color: #0000ff;\">using<\/span> System.Threading.Tasks;\r\n<span style=\"color: #0000ff;\">using<\/span> Microsoft.AspNetCore.Hosting;\r\n<span style=\"color: #0000ff;\">using<\/span> Microsoft.Extensions.Configuration;<\/pre>\n<p><span style=\"color: #0000ff;\">namespace<\/span> BelajarASPNETCoreMVC<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">public<\/span> <span style=\"color: #0000ff;\">class<\/span> Program<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">public<\/span> <span style=\"color: #0000ff;\">static<\/span> <span style=\"color: #0000ff;\">void<\/span> Main(<span style=\"color: #0000ff;\">string<\/span>[] args)<br \/>\n{<br \/>\nvar config = <span style=\"color: #0000ff;\">new<\/span> ConfigurationBuilder()<br \/>\n.AddCommandLine(args)<br \/>\n.AddEnvironmentVariables(prefix: <span style=\"color: #006080;\">&#8220;ASPNETCORE_&#8221;<\/span>)<br \/>\n.Build();<\/p>\n<p>var host = <span style=\"color: #0000ff;\">new<\/span> WebHostBuilder()<br \/>\n.UseConfiguration(config)<br \/>\n.UseKestrel()<br \/>\n.UseContentRoot(Directory.GetCurrentDirectory())<br \/>\n.UseIISIntegration()<br \/>\n.UseStartup&lt;Startup&gt;()<br \/>\n.Build();<\/p>\n<p>host.Run();<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Dari file tersebut dapat dilihat program console ini akan memanggil dan menjalankan web server Kestrel.\u00a0 Web server Kestrel adalah web server yang bersifat multiplatform dan opensource.<\/p>\n<p>Tetapi terdapat perbedaan cara eksekusi standalone console application pada umumnya dengan ASP.NET Core application ini.\u00a0 Cara eksekusi standalone console application adalah cukup dengan mengeksekusi file .exe.\u00a0 Sedangkan ASP.NET Core application dijalankan dengan bantuan .NET Core runtime dengan cara memanggil perintah berikut<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">dotnet run<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Setelah web server Kestrel aktif baru ASP.NET Core application dapat diakses dari web browser.\u00a0 Jika dimiliki 5 ASP.NET Core application maka akan ada 5 standalone console application yang menjalan 5 web server Kestrel.\u00a0 Hal ini berbeda dengan aplikasi web ASP.NET versi sebelumnya, dimana aplikasi web yang dibangun harus dideploy dulu ke IIS sebagai web server.<\/p>\n<p>Semoga informasi ini bermanfaat <img decoding=\"async\" class=\"wlEmoticon wlEmoticon-smile\" style=\"border-style: none;\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/01\/wlEmoticon-smile-1.png\" alt=\"Smile\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jika mendengar kata \u201cASP.NET\u201d pasti akan terlintas sebuah aplikasi web.\u00a0 Karena sejarahnya sejak: ASP Classic. ASP.NET Web Form. ASP.NET MVC. Ketiganya telah dikenal sebagai framework untuk membuat aplikasi web.\u00a0 Tetapi ASP.NET Core mempunyai perbedaan dibandingkan 3 pendahulunya. &nbsp; {Cross Platform}&hellip;<\/p>\n","protected":false},"author":1,"featured_media":3072,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[68,160],"class_list":["post-3077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwaredev","tag-asp-net","tag-asp-net-core"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/01\/01-1.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1sNAL-ND","_links":{"self":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/3077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3077"}],"version-history":[{"count":2,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/3077\/revisions"}],"predecessor-version":[{"id":3080,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/3077\/revisions\/3080"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/media\/3072"}],"wp:attachment":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3077"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}