Visual Studioで開発中にデバッグする際、デフォルトではIIS Expressが利用されます。
その際に匿名認証を無効にし、Windows統合認証を有効にする方法を記載します。
続きを読むASP.NET MVC 5で、DI ContainerのAutofacを使う方法を簡単に記載したいと思います。
続きを読むデータベースへのコネクションを生成する場合、次のような実装はソースに接続対象のDBへの依存を持ち込んでしまいます。
using(var connection = new SqlConnection(...))
App.configの接続情報を利用して、それを回避することができます。自分でもしょっちゅう忘れてしまうのでここにメモしておきます。
続きを読む皆さん、Dapper使っていますか?
私は比較的最近まで、オレオレMicro ORMを使っていたので、あまり使っていませんでしたが、いろいろと反省してDapperに移行中です。
さてDapper非常に良いと思うのですが、単品だとさすがに実装効率があまりよろしくありません*1。そこで活躍するのがDapperの拡張ライブラリです。
しかし、多くの拡張ライブラリが存在しているため、何を使うか悩みます。というかまだ悩み中です。何かお勧めがあれば教えてもらいたいところです。
とはいえ、自分で調べないという訳にもいきませんので、Dapper拡張ライブラリをいくつか比較してみました。
*1:主キー指定で1レコード取得したり、1レコードのアップデートしたりを都度SQL書くのは非効率ですよね
Prism for WPFではRegionという機能を利用することで、画面遷移実装する事ができます。具体的にはこちらをご覧ください。
さて、Regionを利用して画面遷移した場合、デフォルトの振る舞いではViewやViewModelのインスタンスは、一度生成されると以後はキャッシュされて再利用されます。この振舞は、画面のプロパティの初期化もれによる不具合を引き起こしがちです。*1
このため、個人的にはパフォーマンスを特別に気にする個所を除いて、インスタンスのキャッシュを無効化したいと思う事が良くあります。
本稿では非表示となったViewのインスタンスを破棄する方法を、二つのユースケースにたいして実現方法を紹介したいと思います。
*1:何らかの登録処理を連続して行うような業務アプリケーションを想像してください。メニュー画面から登録画面に遷移し、登録完了後メニュー画面に戻るとします。続けて登録画面に遷移すると、登録画面とそのViewModel(およびそれらが参照しているインスタンス)は再利用されるため、登録後から再度表示するまでの間に初期化処理していないと、以前の登録内容が表示されてしまうといった不具合を引き起こします。
本エントリーは、つぎの二つの機会に発表した内容をまとめ直したものです。
資料はこちらに公開しています。ただスライドは発表の補助資料な為、資料だけ見ても伝わり切りませんので、本エントリーもあわせてご覧ください。
https://www.slideshare.net/AtsushiNakamura4/app-center-analytics-97896393
続きを読む英語のブログですが良さげな比較記事を見つけました。
私が知らなかっただけで、DI Containerのパフォーマンス評価としては著名なもののようですが。
個人的にDI Containerへ基本機能や安定性は大前提として、つぎのような条件を満たしてほしいと考えています。
2.と3.は一見同じことのようですが、.NET Standardに対応していても動的コード生成が含まれているとXamarinでは動かないため厳密には異なります。
5.はContainer側でInterception機能が提供されていなくても、オブジェクト生成に関与できれば自前で対応が可能だからです。
これらを踏まえて、軽量な物を選ぶとぱっと見
あたりに興味を覚えました。ちゃんと調べれば他にも該当する者はありそうですし、UnityやAutofacも現在大幅な改修が行われているので速度的には今後改善されるかもしれません。またコードを見てる訳ではないので、上げたものが本当に良いかどうかも分かりません。
何にしろ前述のブログ記事は、世の中にあふれかえっているDI Containerを選択する指針の一つにはなるんではないかと思いました。
という訳で今回はこれだけです。