29 DotNext 2017 Piter Talks:.NET標準とコンテナーからセキュリティとパフォーマンスへ

DotNextの作成を開始したとき、JokerとJPointを使用してJavaの世界で行ったように、技術的なハードコアと脳の複雑さの道を歩みました。 年が経ち、会議は成長し、フィードバックを受け取り、会議を改善し、プログラム、レポート、スピーカーを変更しました...そして最近、DotNextとJPointで人々と話して、興味深い結論に達しました-.NET開発者は筋金入りのハードコアを望まない:





しかし、他にも多くの興味深いことがあります:





そのため、新しい会議プログラムを少し異なる方法で構築することにしました。 DotNext 2017 Piterは単なるハードコアではありません。 筋金入りでなければ、誰? カットの下の詳細を参照してください。







最初は...基調講演でした!



Jon Skeet-基本に戻る:基本的なデータ型の混乱



基調講演は、複雑な外部世界とゼロと1だけで表されるデータの関係に特化しています。 それを認める、あなたはまた、数字、テキスト、および日付/時刻を当然のこととしますか? ほとんどのデータモデルはこれらの柱に依存しています。 問題は、なぜStack Overflowが「壊れた」演算に関する質問でいっぱいなのかということです。 彼のレポートでは、ジョン( SOについてほぼ4万の質問にすでに回答している)は、私たちの世界の何が悪いのかを伝え、罪を見つけ、このすべてに「やけどしない」ためのいくつかの方法を提供しようとします。



Jon Skeetが単なる開発者だと思うなら、.NET、C#、およびITコミュニティの現在の状態に関するジョンとのインタビューを読んでください。 一見単純な質問に対する彼の答えの深さと完全性は驚くべきものです。






Sasha goldshtn Goldshtein-パフォーマンス調査官向けフィールドガイド



数百回の研究成果を実施した後、生産性を高めるための独自のパターンの開発を開始します。これにより、問題を発見する時間と労力を節約できます。 このレポートでは、完全に異なるプロジェクトでの長年の仕事で得られた生産性の経験と、使用したツールについて説明します。



まず、パフォーマンス調査を実施するためのアンチメソッドと、Windowsおよび.NETアプリケーションのボトルネックを見つけるために設計されたチェックリストを見ていきます。 その後、Sashaはパフォーマンスを分析するための理想的なツールをレビューし、現在利用可能なアプリケーションがどれほど理想的であるかを示します。主にWindowsのイベントトレースについて説明しますが、Sashaのほかに、Sashaは彼自身のオープンソース開発のいくつかを紹介しますレポートを提示しませんでした。



講演の最後で、ダッシュボードと視覚化、および統計を操作する際に発生する可能性がある非自明な間違いについて説明します。 途中で、スピーカーが彼の生涯で解決した最も難しいタスクのいくつかを見るでしょう。



サーシャは優れたパフォーマンスエンジニアであり、彼が話すすべての会議で常にトップの地位を占めていることを、私自身に付け加えたいと思います。 彼に何度かインタビューしました。 2015年の ビデオを2、3年2016年のビデオ、 パフォーマンスの操作 に関するインタビュー 、および.NETパフォーマンスエンジニアツールの概要をお読みください。






Aleksey Savvateev-集団的責任のタスク



JPoint 2017でシーンを爆発させたクールな基調講演は、DotNextでピーターズバーグに来ます!



あなたがターンスタイルの部屋で勤務している警官であると想像してください。 密航者は、改札口を飛び越えようとします。 あなたは一つです、彼らの多くがあります。 どんな場合でもそのうちの1つだけをキャッチすることが前もってわかっていても、あえてジャンプしようとしないように、そのような「ゲームのルール」を設定することは可能ですか? おそらく判明しました。



さまざまな独創的な制御アルゴリズムの発明の背後にある数学とゲーム理論の基礎について報告します。 このレポートでは、アカデミック教育は受けられず、より効率的なアルゴリズムの書き方も学びません。 ただし、数学的装置がどれほど豊富であるかはわかります。



ゲーム理論のトピックに興味がある場合、ノーベル経済学委員会がすでに数回授与されている研究について学ぶことに興味がある場合は、レポートへようこそ。






.NETプラットフォーム:現在と未来



マイクロソフトは引き続きこのプラットフォームで積極的に取り組んでいますが、最新の変更に関するレポートは、プログラムで着実に位置付けられます。 今回のテーマは、.NET Core、ASP.NET Core、.NET Standardなどです。 5つのレポートに専念。



Adam Ralph-.NET Standardとは何ですか?



.NET Standardは、オープンソースの.NETイニシアチブのホストでリリースされた新しいテクノロジーの1つです。 実際、NuGetパッケージを使用したクロスプラットフォーム作業のためのより効率的で便利なフレームワークであり、将来、ユニバーサルクロスプラットフォームプロジェクトの開発に関連する多くの問題を解決できるようになります。 すべてがどのように機能し、.NET Coreにどのように適合するかを見てみましょう-Adam Ralph(FakeItEasyメンテナー)およびxBehave.net(最初の.NET Core Frameworkプルリクエストの作成者)が役立ちます。






Alex Thissen-.NETのギアのシフト:.NET開発者向けのアプリケーションランドスケープの変更



分散システムは最近、サーバー構造からコンテナクラスタおよびサーバーレスコンピューティングに積極的に移行しています。 これはすべて、Dockerの.NETで実行できますが、最初の手順はそれほど単純ではありません。 この講演では、Alex Thissenが、Dockerとコンテナを中心に.NET開発を構築する方法を紹介します。 Visual Studio 2017、.NET Core、およびDockerを使用して、.NETアプリケーションを作成、パッケージ化、デプロイ、および実行する方法を学習します。






Denis Ivanov-実稼働環境のLinux用ASP.NETコアアプリケーション



.NET Coreのリリースにより、Unixの世界のあらゆる可能性が開かれました。 アプリケーションはLinux上で完全に実行できます。つまり、DockerとKubernetesを使用してサービスを展開できます。 このレポートでは、ASP.NET CoreでRESTサービスを作成し、Kubernetesプラットフォームで運用環境で実行する方法を示します。



ASP.NET Coreインフラストラクチャといくつかの一般的なライブラリの詳細を説明し、サービスの応答時間を短縮するためのマルチスレッド、最適化、およびキャッシュについて説明します。 アプリケーションのビルドとDockerイメージのアセンブリの問題を解決する方法について説明しましょう。 そしてもちろん、Kubernetesとは何か、このテクノロジーが私たちにとってどのように役立つのか、そしてどのように使用するのかについて説明します。






Roland Guijt-ASP.NET Coreでの認証と承認



ASP.NET Coreでアプリケーションがどのように機能するかは既にご存知でしょうが、MicrosoftはASP.NET Coreセキュリティの領域を大幅に削減しているため、認証と承認はまったく異なる問題です。 ASP.NET Identityは、1つのアプリケーションの認証を許可し、すぐに使用できる多くの機能を備えていますが、OpenId Connectに基づくトークンで集中認証を使用する方が良いでしょうか?



レポートでは、Rolandがこの質問に対する詳細な回答を提供し、ASP.NET Core IDおよびIdentityServerフレームワークがトークンサービスの作成にどのように役立つかを示します。 その結果、ASP.NET Coreで認証を実装する方法、それらを正しく準備する方法、およびASP.NET Coreのアプリケーションで認証ルールを実施する方法がわかります。






Mikhail yu5k3 Shcherbakov-ASP .NETコアセキュリティの 裏側



組み込みのASP .NET Coreセキュリティメカニズムに関する記事はほとんどありません。 公式文書でさえギャップがあります。 レポートでは、ミハイルはセキュリティに関連する主要なコンポーネントを調べ、内部でどのように機能するかを分析します。 古き良きASP.NETを使用する場合、セキュリティコンポーネントの内部構造とその使用に関するベストプラクティスに関する情報が役立ちます。



レポートは次の質問に答えます:最新の反XSSメカニズムはどのように実装され、ASP.NET Coreでそれらを正しく使用する方法ですか? Cookieを使用する方法と、そこにある落とし穴は何ですか? CSRF保護メカニズムはどのように書き直されましたか? 暗号化アルゴリズムの使用方法 また、ASP .NET Coreの脆弱性の検索でバグ報奨金に参加した経験についても説明します。 レポートの前に、OWASP Top 10リストの攻撃を更新することをお勧めします。






パフォーマンスとメモリの最適化



生産性での作業は、「ソフトウェア開発」と呼ばれるおいしいものであり、準備やサポートが容易ではありません。 パフォーマンスはアプリケーション/サービスの上位3つの要件ではありませんが、プロジェクトを特別なものにする機能になる場合があります。 このセクションに含まれている2番目の側面はメモリの操作です。リークは速度の低下につながるだけでなく、一般にアプリケーションをハングさせたり、頭痛の種を引き起こすことさえあります。



上記で説明したSasha Goldsteinのレビュー基調講演に加えて、コードをより速く、より効率的にするためのレポートが4つあります。



Andrey DreamWalker Akinshin-記憶について話しましょう



多くの最新のアプリケーションでは、パフォーマンスはメモリによって制限されます。 この場合、作業速度の測定と正しいベンチマークの作成はそれほど単純ではありません。作業の最終時間に影響を与える要因が多すぎます。 このレポートでは、メモリパフォーマンスの構成要素について説明します。



低レベルのハードウェア(CPUキャッシュとそのアソシエティビティ、アライメント、ストア転送、4Kエイリアシング、プリフェッチ、キャッシュ/ページ分割、キャッシュバンク競合など)と.NET固有の問題(固定オブジェクト、大オブジェクトヒープ、完全な.NET FrameworkおよびMonoのヒープ機能)。






Alexey Vereshchagin-Linux ARMのリモートCoreCLRアプリケーションプロファイリング



CoreCLRは、Linuxを含むさまざまなアーキテクチャとシステムをサポートするようになりました。 問題は、.NET Coreの完全なプロファイリングサポートはWindowsのみであり、他のシステムではCoreCLRプロファイリングオプションが非常に限られていることです。



このレポートでは、Linux ARMアーキテクチャで実行されているCoreCLR環境でのC#コードの実行に関する情報を取得できるツールに焦点を当てます。 特に、動作時間と割り当てられたメモリ、ホットパス(ホットパス)、CPU負荷、JITおよびGCの動作に関する情報によって、ホットメソッドを取得できます。 これらはすべて、Visual Studio 2015から直接実行できます。



Alexeyは、彼らのツールが提供する機会と、彼が使用したプロファイリングアプローチについて話します。






Dina Goldshtein-ダンプを自動化する



アプリケーションがクラッシュした場合、何が起こったのかを理解する方法がいくつかあります。問題を再現する、ログを読む、クラッシュダンプを分析するなどです。 ダンプには、アプリケーションがどの例外で落ちたか、フローの状態、関心のあるオブジェクト、同期メカニズムなどがあります...しかし、ペンでこれを行う場合にのみ、それに何十時間も費やす必要があります-開発者は何もする必要はないと思いますダンプを掘る方法。



これをすべて自動化するか、少なくともコンポーネント、キャッシュのタイプ、その他によってグループに分類するとよいでしょう。 この講演では、ディーンがWindowsおよびLinuxの.NETクラッシュダンプ分析を自動化する方法と、WinDbg、lldb、およびSOSを使用してより詳細な分析を行う方法について説明します。






Sergey Shchegrikovich-PDBの5つの戒め



PDBファイルは、デバッグインフラストラクチャの重要な部分です。 PDBファイルを効果的に使用する方法を示し、その構造とそれらが必要な理由を示し、.NET Coreでシンボルをデバッグするための新しい形式を示します。 このレポートは、社内にデバッグインフラストラクチャを作成する時間を節約するのに役立ちます。










ツールとフレームワーク



Dmitry Ivanov-JetBrains Rider IDE:.NETプログラマーの個人的有効性スキル



あなたが怠goodな(良い意味で)プログラマーであり、作業時間を節約し、何度も定期的な活動に従事したくない場合は、このレポートが役立ちます。 IDEの新機能を学び、別の角度から他の使い慣れた角度を見ていきます。 異なるオペレーティングシステムでRiderを使用する方法と、通常のIDEを上回る方法について説明します。 すべての機能は、作業タスクのコンテキストで表示されます。



プログラマーの主な仕事はキーをノックすることではなく、考えることであるという仮定から進みます。 ここから論理的に、IDEの主なタスクは、思いついた考えをできるだけ早く実現することです。 意味の単位ごとにアクションの数を最適化してみましょう。 最小のクリック数で目的の結果を達成する方法の問題を解決します。






Mete Atamel-DockerおよびKubernetesを使用したコンテナ化されたASP.NET Coreアプリ



Kubernetesは、Linuxで長い間利用されてきたオープンコンテナオーケストレーションプラットフォームです。 ASP.NET Coreでは、.NETで使用できます。 このレポートでは、ASP.NET CoreアプリケーションをDockerコンテナーにラップしてKubernetesに展開する方法を示します。 さらに、アプリケーションの展開の自動化、スケーリング、コンテナのクラスターの作成、およびKubernetesで開くその他の便利な機能について説明します。






Maarten Balliauw-Hello Worldを超えたNuGet



誰もがNuGetパッケージを使用していますよね? 難しくありません。 パッケージを作成して共有する方法を知っていますか? .NET Standardの登場により、これらすべてがどのような影響を受けますか? パッケージのバージョン管理、作成、公開、および配布の方法は?



講演では、Maartinがこれらの質問に答え、さらに深く掘り下げます。クライアントのNuGet APIを使用してNuGetからデータを取得する方法を教えてください。 NuGetに基づいてアプリケーションのプラグインシステムを構築できますか? NuGetサーバーAPIにはどの宝石が隠されていますか? NuGet.orgの完全なコピーを作成できますか?






Tomas Herceg-Entity Framework Core:まだ準備はできていますか?



このレポートは、Entity Framework Coreをまだ使用していないが、試してみたい人を対象としています。 Entity FrameworkとEntity Framework Coreの違い、およびプロジェクトに選択するフレームワークについて説明します。 エンティティフレームワークコアの機能について説明しましょう。トーマスは、LinuxのさまざまなDBMSのデモでこれを紹介します。



さらに、プロジェクトのロードマップを確認し、今後何が期待されるか、そしてこれらすべてが本番環境で動作する準備ができているかどうかを話し合います。






Nikita kekekeks Tsukanov- AvaloniaUI :.NET Coreをサポートする最初のクロスプラットフォームXAML UIフレームワーク



私たちは、プラットフォームとデバイスの動物園全体のサポートが重要になった時代に生きており、.NET Coreと.NET Standardは、それらの間のC#コードの移植性を大幅に簡素化します。 ただし、各プラットフォームには独自の開発ツールがいくつか用意されており、そのほとんどはMFCやWindowsフォームの時代のどこかに精神的にこだわっており、C#との通常の統合はありません。 これらのプラットフォームを共通点に持ち込み、少なくとも何らかの形でMVVMとXAMLレイアウトの適切なサポートを追加しようとする多くのソリューションがありますが、これは何らかの形で...そうではありません。



.NET開発者は、リストのコレクションへの通常のバインディング(豊富なバインダーシステム)に対して、いつでもどこでもコントロールをスタイルする機能に慣れています。 これはまさに、オープンソースでWPFのアイデアを継続しているAvaloniaUIプロジェクトが達成しようとしていることです。 プロジェクトパスは簡単で厄介ではありません-バインディングを操作するシステムに加えて、すべてのユーザー入力を独立して処理し、インターフェイスを効率的にレンダリングする方法を考え、ターゲットプラットフォームからのさまざまな種類の不条理に対処し、レンダリングシステム間の違いに対処する必要があります(たとえば、不適切なため) ArcToサポートは、彗星の軌道を正しくレンダリングするために元々設計されたコードを適合させる必要がありました。



すでに達成できたこと、これから既に使用できること、およびそのようなプロジェクトの開発における困難と関心-参加者の1人からの報告について。






Dmitry Soshnikov-.NETプラットフォームの手頃な価格の人工知能:チャットボットとコグニティブサービスからディープニューラルネットワークまで



人工知能と機械学習の分野で近年行われたブレークスルーにより、かつて奇跡のように見えていた認知タスクを解決することが比較的簡単になりました。人の年齢を顔で認識する、自然言語を理解する、または機械翻訳です。 .NETプラットフォームでこれらのタスクを異なる方法で解決する方法を見ていきます。既製の認知サービスの使用から、Microsoft Cognitive Toolkitを使用したビッグデータのトレーニングとニューラルネットワークの詳細トレーニングまでです。 注意:一部のデモはF#に表示され、脳を破壊する可能性があります。






Filip W-.NET Compiler Platformを使用したコード分析ツールの構築(Roslyn)



Resharperとその優れたコード分析機能が大好きです。 この講演では、新しいRoslyn .NETコンパイラを使用して検査とコードアナライザーを構築する方法に焦点を当てます。 検査の助けを借りて、コードスタイルを制御し、コード内の論理エラーを見つけ、プロジェクト内のファイルを再割り当てできます。 Philipは、独自のコードアナライザーを作成するために必要なことを説明し、Visual Studio以外のすべての場所でこれが機能するかどうかを説明します。



フィリップと彼がハブラーとのインタビューで彼がしていることについてもっと読むことができます。






ミハイル・フィリッポフ-MSBuildの調理法を学ぶ



MSBuildは、.NET開発者が毎日使用するツールですが、その仕組みや機能を誰もが理解しているわけではありません。 これは、開発者がVisual Studioで構成できる内容の不可解な問題や制限に遭遇するまで続き、その時点でビルドスクリプトのカスタマイズを試行し始めます。 そして、ビルドが遅くなったり、正しく動作しなくなります。



このレポートは、独自のビルドタスクを作成するときに発生するさまざまな問題を解決する方法を示します。 ビルドの問題をデバッグする方法と、WindowsだけでなくMSBuildを使用してプロジェクトをビルドする方法を示します。






アプローチとパターン



アプローチセクションも空になることはありません。 最終的に、適切なパターン/アーキテクチャを選択することで、プロジェクトの保守、拡張、デバッグが容易であるかどうかにかかわらず、数十時間の苦労からあなたを救うことができます。



問題は、すべてを最上位で調査できる場合、最初の試行でこのアプローチまたはそのアプローチを頻繁に適用できないことです。 このセクションのレポートは、最も人気があり痛みを伴う熊手(ご存知のとおり、最も恐ろしい熊手は子供のものです)を踏まないように、最新のアプローチを示し、十分な知識を提供するように設計されています。



イゴール・ヤコブレフ-.NETのAOP



アスペクト指向プログラミングについて聞いたことがありますか? あなたはそれを実践しようとしましたか? AOPが役立つ問題の理論的な定義と例から始めましょう。 .NETでAOPを取得する方法を見つけようとします。 また、メインのAOPフレームワークを使用していくつかの問題を解決します。動的プロキシを介して実行時にラッパーを生成する方法を学習し、コンパイル時にPostSharpとFodyを使用してクラスにコードを実装します。 Nemerleをおやつにして、「準クォート」や「メタプログラミング」などの怖い言葉を整理した後、フレームワークなしでAOPの問題を解決します。






Dylan Beattie-実世界のRESTとハンズオンハイパーメディア



HTTP APIをフラッシュしたので、うまくいくようです。 そして、問題が山積みになっていることがわかります。顧客を完全に置き換えるために必要なメールアドレスを置き換えるには、バスケットのレンダリングに25回のAPI呼び出しが必要で、Webページのレンダリングには50個のHTTPリクエストがあり、ボトルネックをどのように探すのでしょうか?



RESTアーキテクチャは理解できますが、すべての開発者がRESTの原則を実際に機能するコードに変換できるわけではありません。 このレポートでは、Dylanが、ハイパーメディアとHATEOAS原則(「アプリケーション状態のエンジンとしてのハイパーメディア」)に接続されたRESTエレメントを何らかの方法で示し、これがすべて重要である理由と、システムにこれらすべてを実装する必要がある理由を示します。 HTTP APIの設計、デプロイ、デバッグに役立つツールを見てみましょう。






Vagif Abilov-型付きAPIまたは動的API ちょうだい!



数年前から、開発者はC#で動的言語要素を使用できるようになったため、APIを定義することで、動的型のデータで使用できるようにすることができます。 個々のシナリオには魅力的ですが、静的に定義された型の利点を放棄したくありません。 2つのアプローチを組み合わせることができますか? もしそうなら、それはどれほど面倒ですか? そして、このアプローチでコードの重複を避ける方法は? レポートは、これらすべてに専念しています。 このプレゼンテーションは、Vagif自身が作成およびサポートしたマルチプラットフォームオープンソースライブラリを実装するという原則に基づいています。 プレゼンテーションプロセスでは、SQLコマンドを処理するために同様のライブラリをゼロから作成する方法を示します。






Jon Skeet-不変性の状態の変化C#



不変性とは何か、その不変性は何か、C#でどのように開発されたかについてのレポート。 さらに、不変のオブジェクト/状態を実装するためのさまざまなオプション、それらの長所と短所(特に言語またはプラットフォームがそれを奨励していない場合)、およびこの概念に今後何が起こるかについて説明します。










イゴール・ラブチン-プロセス間会話:原因と方法



ますます多くの最新のアプリケーションは、単純な1プロセスモデルを超えています。 開発者は、1つのプロセスでは不十分な多くの理由を見つけます。 そして、それらのいくつかがある場合、それらの間で情報を転送する問題が発生します。 .NETは、この対話を整理するためのいくつかの方法を提供します。 プロセスを通信するタスクがどこから来たのかを検討し、それを解決する方法を議論し、すべての方法が等しく便利で有用ではないことも確認します。






そして何か他の...



Mikhail Samarin-Xbox OneおよびHoloLens、.NET開発者向けのプラットフォーム



Visual Studioの最新バージョンがインストールされている場合、特別なSDKやツールキットをインストールすることなく、HoloLensとXbox Oneの両方で開発できることをご存知ですか? これらは、ユニバーサルWindowsプラットフォーム用の通常のWindows 10デバイスです。 トークに来て、実際のハードウェアでのライブデモなど、Xbox OneとHoloLensの開発の基本について学びます。 Windows 10 Creators Updateの革新を含め、Unity 3DとWindows Mixed Realityで何ができるかを学びます。






Adam Sitnik-オープンソースでの素晴らしい旅



最近まで、.NETコミュニティは閉鎖されていましたが、すべてが変更されました。 これで、コンパイラ、ランタイム、GCなどがオープンになりました。 密輸を試みましたか? いかがですか?どこから始めればいいのかわかりませんか? OSSから何を得て、なぜそれが必要なのですか? 何をする価値はありませんが、何よりもまず注意を払う価値はありますか? どのプロジェクトがあなたを優れた開発者にしますか? Adamは、Core CLR、BenchmarkDotNet、corefxlabでの開発経験に基づいてこれらの質問に答えます。






Damir Beilkhanov-Xamarin.Forms:モバイルアプリケーションのクロスプラットフォーム開発の機能



.NET + C#スキルの使用方法、XAML、Visual Studio、Xamarin.Formsの使用方法について簡単なツアーを行って、一般的なプラットフォーム向けのネイティブモバイルアプリケーションを開発しましょう。 シンプルなクロスプラットフォームアプリケーションの例を使用して、その構造に精通し、UIがどのように機能するかを確認し、Xamarin.Formsでのクロスプラットフォーム開発のプロセスで発生するさまざまな種類の問題について説明します。 DIとMVVMの素晴らしいカップルを思い出してください。その後、開発者の作業と開発プロセス全体を促進するツールに脱線します。 レポートの最後に、Xamarin開発者にとって便利なIDEを選択します。






Grigory Koshelev-.NETとJava仮想マシンの統合



.NETサービスのタスクはXMLをPDFに変換することですが、同時にJavaで実績のあるソリューションであるApache FOPがすでに存在すると仮定します。 C#ですべてを書き換えたり、クロスコンパイルを使用したり、JavaからJavaライブラリを直接使用したりできます。 Javaサービスを選択して、.NETアプリケーションから操作したり、.NETプロセス内で同じJavaサービスを選択したりできます。 最初のオプションは常に適切であるとは限りません。.NETでは、インフラストラクチャ、監視などを強化でき、運用上の問題が発生します。 Marshal、rake、およびこの種の統合のその他のニュアンスに対処する方法に沿って、.NETプロセス内でJava仮想マシンを起動しましょう。






それだけです。 レポートが3つのトラックにどのように配置されているかに関心がある場合は、会議Webサイトのプログラム参照してください。



All Articles