Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,295 views

Published on

2016/12/2 【bitFlyer TechNight】 vol.2 C# LT Meetup!でのLT資料です。

https://bitflyer.connpass.com/event/45476/

Published in: Engineering
  • Be the first to comment

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

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

×