Docs.com へのサインインに使うメール アドレスまたは電話番号を入力してください。 Office など、Microsoft の他のサービスで既にお使いのアカウントがあれば、そのアカウントを入力してください。
アカウントを記憶する
または次の方法でサインインします:
サインインすると、コンテンツのダウンロードや「いいね!」をすることができ、作成者が認識します。
埋め込みコード: Mac でも Linux でも動く! C#製ネットワークサーバーアプリ BlackJumboDog を .NET Core 上に移植した話
サイズの選択
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33
Mac
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33 でも
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33Linux
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33 でも動く
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33! C#
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33 製ネットワークサーバーアプリ
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33BlackJumboDog
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33 を
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33.NET Core
https://www.ospn.jp/osc2016-do/modules/eguide/event.php?eid=33 上に移植した話
2016 /06/18
オープンソースカンファレンス 2016北海道
CLR/H 松田 恭明
自己紹介
String= 名前=yasuaki-matsuda
NUMBER= 年齢=3x
BOOL= 性別= 男
STRING= 場所= 北海道札幌市
STRING= 仕事=.Net 開発
自己紹介2
< Name> yasuaki-matsuda </Name>
<Description>
今年1月に Microsoft MVP Award 2016受賞
Award カテゴリは、「Microsoft Azure 」
</Description>
<Future> 技術はたぶん面白い</Future>
自己紹介3
{
“ 趣味”: [“ 自由気ままな技術”, “Microsoft Azure”, “.NET”],
“ コミュニティ”: [“
https://clr-h.jp/CLR/H”, “
https://kitaazu.azurewebsites.net/JAZUG
https://kitaazu.azurewebsites.net/ 札幌支部”],
“blog”: “
http://vnext-y-blog.azurewebsites.net/http://vnext-y-blog.azurewebsites.net/”
}
(祝) Clr /h開催 100回!!
実は今日が集まりとして100回!
今日お話ししたいこと
BlackJumboDog とは?
.NET Core とは?
取り組んだこと(互換性の確認とか)
移植~テスト( Visual Studio)
実行&デプロイメント
今後の動向への心配と期待
本日のネタは、6月12日時点の情報を元にしています。 .NET Coreのツールセットは、 Previewであり、大きく変更される可能性があります。 最新の情報は、それぞれ公式サイトなど確認願います。
BlackJumboDog ?
様々なサーバー機能がある Windowsアプリケーション
最新のものでは Windows Forms の GUIがメインの画面
開発から既に10年以上経過し、さまざまな経緯を経て、 現在の最新は C#
BlackJumboDog の持つサーバー機能
Web サーバー
FTP サーバー
SMTP サーバー
POP3 サーバー
SocketTunnel サーバー
Proxy (FTP HTTP POP3 SMTP Telnet )サーバー
DHCP サーバー
DNS サーバー
TFTP サーバー
SIP サーバー
独自 WebAPIサーバー
詳しいことは以下を!
http://www.slideshare.net/furuya02/developersio-2016-f1-58488009
http://www.sapporoworks.ne.jp/spw/
個人的にほれこんだこと!
とにかく機能いっぱいある!
コードとして公開されているので、コードが好きな人なら、プロトコルの実装の例としても見る価値がある
.NET Core で動いたら・・・さらに手軽にサーバーつくれるんじゃないのか・・・!?
.NET Core とは? Microsoft .NET Framework でも、Mono でもなく
※ 適当や意訳と 独自の見解が含まれて います。
Modular
.NET Core is a set of runtime, library and compiler components. Microsoft uses these components in various configurations for device and cloud workloads. You can do the same for your app or service.
.NET Core ランタイム、ライブラリ、コンパイラのコンポーネントのセット
マイクロソフトは、これをクラウド、デバイス上で使う
ユーザーのアプリ、サービスでも同様に使うことができる
Managed
Managed runtimes make code easy to write and guarantee safe execution. .NET Core manages memory with a garbage collector, compiles your code with a JIT compiler or ahead of time with .NET Native.
マネージドなランタイムは、コードを容易に書くこと、安全に実行することができる
.NET Core は、メモリ管理、ガベージコレクタをもつJIT コンパイルまたは.NET Native でコードを コンパイルする
※ JIT = Just In Time
Cross-platform
You can create .NET Core apps that run on multiple OSes and CPUs. .NET Core runs on Windows. Ports are in progress for Linux, OS X and FreeBSD, as is integration with the LLVM compiler.
複数の OS、 CPUでも実行できるアプリを作ることができる
Windows で動く
LLVM コンパイラとしての実装を、Linux 、OS X 、FreeBSD へ向けて取り組んでいる ( プラットフォームごとの最適化)
Modern
.NET Core brings with it a set of languages, led by C#, with VB and F# with support for modern language features, like generics, Language Integrated Query (LINQ), async support and more. It is backed by a managed compiler called "Roslyn" that is exposed to the runtime, usable as a service.
ジェネリック、 LINQ(統合言語クエリ)、 async(非同期実装)などサポート
言語は、 C#、 VB.NET、 F#
さらには ”Roslyn”という新しい拡張要素
中略
OPEN
.NET Core is backed by an open ECMA standard that outlines all of its capabilities which can be used to make a new reference implementation. A lot of projects did exactly this, and there are various implementation out there, Mono and Unity being the most popular, non-Microsoft ones.
見える形での活動
GitHUB でソースを公開
ここがすごい!
将来的に、すべての .NETの基盤となっていくということは、 ここで作ったライブラリは多くのプラットフォームを超えて利用することができる。
ソースは公開されて、フィードバックも受け取っていることで、 今後の発展に期待!
Windows に依 存するものを排除しちゃう!!下位互換性をばっさり! 心機一転な感じ
ただし、まだ正式リリースはされていない・・・
.NET Core / ASP.NET Core 1.0 が 6/27 に RTM となるらしい (ソース:
http://blog.shibayan.jp/entry/20160608/1465318282http://blog.shibayan.jp/entry/20160608/1465318282 )
※Tools Preview 2 で、ツールセットはまだ変わる可能性がある
そして、取り組んだこと・・・
昨年2015年12月から・・・今日にいたるまで
.NET portability analyzer 互換性のチェック
このツールを使うことによって、 .NETFramework4.xの アプリケーションの実装が、 .NET Core を含む他の プラットフォームにどのくらい流用できるか? がわかります。拡張機能であるため、 Visual Studio ( Professional or Community)上から「 .NET Portability」と検索して、インストールすることで誰でも使うことができます。
System.Windows.Forms GUI の完全除去
.NET Core では、GUI に関する ライブラリが一切ありません。.NET Framework のSystem.Windows.Forms はこれらは内部で、WindowsAPI を利用している ため、当然ながらそれ以外の プラットフォームには不向き。
System.drawing 描画の完全除去
GUI 同様に、きれいさっぱり。 Microsoft 純正の .NET Framework のものは、GDI に依 存しているため、移植はほぼ不可能。
あれ?何が残るのか?
コンソールアプリケーションとして
より Blackに!!
移植~テスト
移植
プロジェクトファイル . csproj
情報のピックアップ
ソースファイル . cs
そのまま xprojに追加
テストコード ( NUnit )
プロジェクトファイル . x proj
拡張機能のテンプレートに追加設定
GUI 、 描画のコードを削除
テストコード( xUnit)
xUnit に書き換え
順調に進んでいたそのとき・・・・ .NET Core RC2のリリース
さぁ、利用するライブラリを全部、 RC2にしよう!!
・・・ビルドエラー!!
Visua lStudio にRC2 としての新しい拡張機能を インストール。利用するライブラリをRC2 のものにしたところ、エラーが膨大な数に・・・・。ただ、ライブラリとして メンバの定義が変わったりということはほとんどない ので、 プロジェクトファイル(*.xproj)(project.json) の修正 で解消!!
※ この問題は、ツールセットが確定したバージョンとしてリリースされていないことによるもの。 すべてのソースコードが活用できなくなるわけ ではない。
Windows デバッグ実行
Visual Studio 2015 上からデバッグ実行した様子
ブレークポイント、診断ツールなど問題なく使えた。テストエクスプローラーからデバッグ実行も可能
Linux Ubuntu14.04 dotnet run
git clone
https://github.com/darkcrash/bjd5.githttps://github.com/darkcrash/bjd5.git
cd bjd5
dotnet restore
cd Bjd.CoreCLR
dotnet run
Mac X dotnet run
Docker Docker-Cloud
Dockerfile に構築する手順を記述し、GitHub にコミット。DockerHub にAutomated ビルドの設定を行い、イメージのテンプレート化。
そのテンプレートを、 Docker-Cloud(一部無償 )のサービスを使って、デプロイした様子。仮想マシンそのものは、 Mirosoft Azureに
これから先の話
BlackJumboDog として
6/27 リリースの.NET Core RTM に対応
Web のUI を実装して、使えるものに !
NuGet に公開ライブラリとして 、 多く のプラットフォームで動かせるものに
自動的なデプロイメントに対応 ( Infrastructure as a Code、 Configuration as a Code)
.NET Core
英語が得意な方は、 GitHubが一番情報速い
MSDN (ヘルプ)も少しづつ日本語そろってきている
Xamarin をMono から、.NET Core に置き換える計画がある
参考リンク
https://msdn.microsoft.com/ja-jp/magazine/mt694084.aspx
NET Core - .NET Core
https://msdn.microsoft.com/ja-jp/magazine/mt694084.aspx による
https://msdn.microsoft.com/ja-jp/magazine/mt694084.aspx.NET
https://msdn.microsoft.com/ja-jp/magazine/mt694084.aspx のクロスプラットフォームへの移行
https://dotnet.github.io/
https://dotnet.github.io/ (英語)
https://www.microsoft.com/net/core
https://www.microsoft.com/net/core インストール方法( 英語)
https://www.microsoft.com/net/corehttps://www.microsoft.com/net/core
次回 Clr /h開催 101回!! CLR/H #clrh101 ~日本の夏、 MR の夏~
http://clrh.connpass.com/event/31379/
ご清聴ありがとうございました。 can create .NET Core apps that run on multiple OSes and CPUs. .NET Core runs on Windows. Ports are in progress for Linux, OS X and FreeBSD, as is integration with the LLVM compiler.
将来的に、すべての .NETの基盤となっていくと