37714
WindowsフォームアプリケーションからODP.NET等で直接データベース(Oracle）に接続する場合とWCF経由でデータベースにアクセスする場合では、前者のほうがパフォーマンスは高いでしょうか？  
（WCF経由の場合はWCFのサービスがデータベースにアクセスします。）

WCF経由のほうが直感的には、パフォーマンスが低くなると考えております。
CC BY-SA 3.0
2017-09-04T11:57:35.773
37712
2017-09-04T13:34:48.707
9228
question
winforms wcf
Windows Form からデータベースにアクセスする場合のアーキテクト毎のパフォーマンスについて教えてください。
一般論としては通信とWCFの初期化/出力にかかる時間だけ遅延します。ですが設計によって高速化が期待できる場合もあります。

まず検索結果やデータの加工結果をWCFサービスのメモリ上にキャッシュする場合が考えられます。キャッシュを利用できれば2度目以降の処理はDBアクセス自体が不要になります。もちろんキャッシュされているデータがDBより古くなっている可能性もありますが、すべてのDB処理をWCFサービスを通して行うようにすれば更新時にキャッシュを破棄できます。

上記のようにWCFサービスではWCF経由のDB更新が発生したかどうかを把握することができます。これによって数秒おきにDB更新の有無を検索するような処理を効率化することができますし、さらにはサーバーからのプッシュ配信に変更し、リアルタイムにクライアントを更新することも可能になります。

また1個の処理で.NETからDBに複数回アクセスする場合、クライアント⇔DBの往復通信時間×Nの待ち時間が発生します。もしWCF⇔DBの通信が高速であればWCFで処理を行った方が効率が良いことも考えられます。

いずれにせよ漫然とWCFを導入しただけで高速化することは考えにくいので、サービスを挟むことで何ができるかを考えて、実際の構成に即した環境で検証した方が良いでしょう。余談ですがサービス経由でDBにアクセスする構成の最大のメリットは「DBのセキュリティ向上」だと思います。
CC BY-SA 3.0
2017-09-04T13:34:48.707
37714
2017-09-04T13:34:48.707
5750
37712
answer