SlideShare a Scribd company logo
6
Most read
7
Most read
20
Most read
ASP.NETからASP.NET Coreに
移行した話
株式会社gloops
高張大雅
自己紹介
• 名前
– 高張 大雅 (たかはり たいが)
• 所属
– 株式会社gloops 技術基盤部
• http://gloops.com/
個人活動
– Twitter @taiga_takahari
– Github https://github.com/ttakahari
アジェンダ
• ASP.NET Coreとは
• 移行したシステムの概要
• 実際に移行してみて
• まとめ
注意事項
• 記載内容は移行時の情報です
– 2016年8月中旬頃の情報
– 各ライブラリ / フレームワークでアップデート済み
の可能性あり
ASP.NET COREとは
ASP.NETとASP.NET Core
• ASP.NET
– .NET Frameworkで動く
• Windows上でしか動かない
– Web Forms、MVC、Web API、Web Pages、Signal R
• ASP.NET Core
– .NET Framework / .NET Coreどちらでも動く
• .NET Coreならクロスプラットフォームで動く
– Web API、Web PagesはMVCに統合
– Signal Rは開発中、Web Formsは廃止
ASP.NET4.6とASP.NET Core 1.0
http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx
移行の経緯
• 移行しようと思った理由
– ASP.NET CoreもRTMになったし何かアプリを作りた
い!
• 但し貧弱な企画脳…
• 既存の(未リリースの)社内アプリを移行してしまおう!
– 新規の実績は今後色々と出てきそうだけど移行
の実績は出てこなさそう
• トライして挫折した方々いるようですし…
移行したシステムの概要
移行したシステムについて
• 構成
– サーバーサイド
• データを登録・更新・参照するための管理画面
• 登録されたデータを取得するためのWeb API
• 常駐バッチ
– クライアントサイド
• サーバーサイドのWeb APIを実行
• プライベートNuGetでライブラリとして配布
システム構成図
管理画面 / Web API
常駐バッチ
DB / KVS
コンテンツアプリ
コンテンツアプリ
各ゲーム
コンテンツアプリ
配布したライブラリを経由して
Web APIにアクセス
コンテンツ運用
メンバー
コンテンツに
必要な情報を登録
今回移行したのはこの部分
アーキテクチャ (共通)
• 開発言語
– C# 6
• 稼働環境
– Windows Server 2012 R2 (サーバーOS)
– IIS 8.5 (Webサーバー)
• データストア
– SQL Server (DB)
– Redis (KVSキャッシュ)
アーキテクチャ (移行前)
• フレームワーク
– .NET Framework 4.6.1
– ASP.NET MVC 5.2.3 / Web API 2.2
• ライブラリ
– Dapper (DBアクセス)
– StackExchange.Redis (Redisアクセス)
– NLog (ロギング)
– Jil (JSONシリアライザ)
アーキテクチャ (移行後)
• フレームワーク
– .NET Core 1.0
– ASP.NET Core MVC 1.0
• ライブラリ
– Dapper (DBアクセス)
– StackExchange.Redis (Redisアクセス)
– NLog (ロギング)
– Json.NET (JSONシリアライザ)
実際に移行してみて
移行のしやすさ
• 移行にかかった期間
– アプリを動かすまでなら1週間くらい
– 完全移行は1ヶ月かからないくらい
移行のしやすさ
• アーキテクチャが重要
– フレームワークの移行性を重視した構成にしない
と結構ツラいかも
• Webアプリケーション(ASP.NET)の部分を切り離す
– 今回は移行性を重視していなかったけどテスタビ
リティのために各レイヤーを疎結合にしたら結果
として移行性が上がった
– 社内ライブラリは移行性が重視されていた
• http://www.buildinsider.net/enterprise/sansanreport/0
502
ツライこともある
• 当たり前のように使ってたものがなくなってる
– ConfigurationManager
• 構成ファイルの情報が取得しにくくなった
– DataTable
• なきゃないで色々と困ることもある
• が、.NET Core 1.1で復活を遂げた
– HttpContext
• HttpContext.Currentがない
• IHttpContextAccessorをDIで解決して使うしかない
ツライこともある
• ツールが貧弱
– 所詮preview版
– project.jsonを操作しようとするとVisual Studioが
良くてフリーズ、最悪お亡くなりになる
• パッチがあたって改善されたけど実感はない
• 仕方なくVisual Studio Codeで編集
• 今後project.jsonは廃止されていく(?)
パフォーマンスは?
• また別の機会に
– 計測済みだけどもうちょっと検証したいので
• ASP.NET CoreはTechEmpowerには掲載済み
– https://www.techempower.com/benchmarks/
• 他フレームワークと比較してみると正直微妙
• ASP.NETはないので比較不可能…
まとめ
ASP.NET Coreへの移行
• やってできないことはない
– 移行に向いたアーキテクチャが組めていれば問
題ない
– 色んなライブラリやフレームワークと密結合してる
としんどい
• .NET Core 1.1になって
– .NET Frameworkに大分寄ってきてるので今後更
に移行しやすくなる可能性はある
移行すべきかどうか
• 参考として
– ASP.NET開発者の人曰く
• 『Should I Use ASP.NET Core or MVC 5?』
• http://www.jeffreyfritz.com/2016/08/should-i-use-asp-
net-core-or-mvc-5/
– どういった時にASP.NET Coreで作ったほうが良い
かが書かれている
ASP.NETからASP.NET Coreに移行した話

More Related Content

PDF
Performance Profiling in Rust
PDF
LCU14-103: How to create and run Trusted Applications on OP-TEE
PPTX
Cfgmgmtcamp 2023 — eBPF Superpowers
PDF
フロントからバックエンドまで - WebAssemblyで広がる可能性
 
PDF
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
PDF
NestJS - O framework progressivo
PPTX
Test Plan.pptx
PDF
【続編】その ionice、ほんとに効いてますか?
Performance Profiling in Rust
LCU14-103: How to create and run Trusted Applications on OP-TEE
Cfgmgmtcamp 2023 — eBPF Superpowers
フロントからバックエンドまで - WebAssemblyで広がる可能性
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
NestJS - O framework progressivo
Test Plan.pptx
【続編】その ionice、ほんとに効いてますか?

What's hot (20)

PDF
AvailabilityZoneとHostAggregate
PDF
What's new in Spring Batch 5
PPT
N Unit Presentation
PDF
System.Drawing 周りの話
PPTX
Building Cloud-Native Applications with Helidon
PDF
LCU14 302- How to port OP-TEE to another platform
PPTX
SonarQube: Continuous Code Inspection
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PDF
Terraform Tips and Tricks - LAOUC 2022
PDF
Kernel Recipes 2015: Representing device-tree peripherals in ACPI
PDF
DockerとKubernetesをかけめぐる
PDF
Go mobileでモバイルアプリを作ろう
PDF
OpenStack超入門シリーズ Novaのディスク周りあれこれ
PDF
UIbuilderを使ったフロントエンド開発
PPTX
OpenStackで始めるクラウド環境構築入門
PPTX
レガシーコード改善のススメ
PDF
Meteor presentation
PPTX
Robot Framework
PPTX
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
InfluxDB + Telegraf Operator: Easy Kubernetes Monitoring
AvailabilityZoneとHostAggregate
What's new in Spring Batch 5
N Unit Presentation
System.Drawing 周りの話
Building Cloud-Native Applications with Helidon
LCU14 302- How to port OP-TEE to another platform
SonarQube: Continuous Code Inspection
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
Terraform Tips and Tricks - LAOUC 2022
Kernel Recipes 2015: Representing device-tree peripherals in ACPI
DockerとKubernetesをかけめぐる
Go mobileでモバイルアプリを作ろう
OpenStack超入門シリーズ Novaのディスク周りあれこれ
UIbuilderを使ったフロントエンド開発
OpenStackで始めるクラウド環境構築入門
レガシーコード改善のススメ
Meteor presentation
Robot Framework
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
InfluxDB + Telegraf Operator: Easy Kubernetes Monitoring
Ad

Viewers also liked (17)

PDF
Hello Dark-Side C# (Part. 1)
PDF
C# でブロックチェーン実装
PPTX
はじめてのASP.NET MVC5
PDF
10分で分かるxamarin
PDF
.NET Core 1.0
PPTX
20140322
PDF
普段C#を使っている僕から見たKotlin
PDF
A Framework for LightUp Applications of Grani
PDF
仮想通貨, Blockchain 関連サービスを支える技術
PDF
Go言語によるwebアプリの作り方
PDF
Spring ❤️ Kotlin #jjug
PPTX
Server Side Kotlin
PPTX
FINAL FANTASY Record Keeperを支えたGolang
PDF
5分でわかるブロックチェーンの基本的な仕組み
PDF
GoによるWebアプリ開発のキホン
PDF
SQLアンチパターン - ジェイウォーク
PDF
SQLアンチパターン - ナイーブツリー
Hello Dark-Side C# (Part. 1)
C# でブロックチェーン実装
はじめてのASP.NET MVC5
10分で分かるxamarin
.NET Core 1.0
20140322
普段C#を使っている僕から見たKotlin
A Framework for LightUp Applications of Grani
仮想通貨, Blockchain 関連サービスを支える技術
Go言語によるwebアプリの作り方
Spring ❤️ Kotlin #jjug
Server Side Kotlin
FINAL FANTASY Record Keeperを支えたGolang
5分でわかるブロックチェーンの基本的な仕組み
GoによるWebアプリ開発のキホン
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ナイーブツリー
Ad

Similar to ASP.NETからASP.NET Coreに移行した話 (20)

PDF
AWS Black Belt Online Seminar 2017 Amazon Athena
PPT
Cake Matsuri Nanapi
PDF
ASP.NET WebAPI 体験記 #clrh99
PDF
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
KEY
恐るべきApache, Web勉強会@福岡
KEY
Webサーバ勉強会 LT資料
PDF
Ruby StyleStatsの紹介
PDF
20160127三木会 RDB経験者のためのspark
PPTX
Data management of cosmos db using apache gremlin
PDF
AWSによるサーバーレスアーキテクチャ
PDF
20150207 何故scalaを選んだのか
PDF
2013年 AWSサービスアップデート 一気ふりかえり at BP Study #76
PDF
Web技術勉強会 20120609
PDF
Fargate起動歴1日の男が語る運用の勘どころ
PDF
最近のストリーム処理事情振り返り
PDF
利用者主体で行う分析のための分析基盤
PDF
Scalaz-StreamによるFunctional Reactive Programming
PDF
Spark GraphXについて @Spark Meetup 2014/9/8
PDF
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
PPTX
Gcpug tokyo february 2016
AWS Black Belt Online Seminar 2017 Amazon Athena
Cake Matsuri Nanapi
ASP.NET WebAPI 体験記 #clrh99
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
恐るべきApache, Web勉強会@福岡
Webサーバ勉強会 LT資料
Ruby StyleStatsの紹介
20160127三木会 RDB経験者のためのspark
Data management of cosmos db using apache gremlin
AWSによるサーバーレスアーキテクチャ
20150207 何故scalaを選んだのか
2013年 AWSサービスアップデート 一気ふりかえり at BP Study #76
Web技術勉強会 20120609
Fargate起動歴1日の男が語る運用の勘どころ
最近のストリーム処理事情振り返り
利用者主体で行う分析のための分析基盤
Scalaz-StreamによるFunctional Reactive Programming
Spark GraphXについて @Spark Meetup 2014/9/8
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
Gcpug tokyo february 2016

ASP.NETからASP.NET Coreに移行した話