先月の LT で「R流・3分で覚える WCF」というタイトルで登壇したのですが、この内容を何回かに分けてまとめたいと思います。
最初は、WCF とは何か、どのような時に使えるのかをまとめます。
WCFとは?
Windows Communication Foundation の略で、SOA(サービス指向アーキテクチャ) 構築のための Microsoft の統一プログラミングモデルとなっています。
サービス指向アーキテクチャとは、大規模なシステムを「サービス」の集まりとして構築する設計手法のことです。
まぁ、簡単に言うと「アプリケーションの一部のロジックを別のマシンに実行させるといった、分散処理が簡単に実現できますよ」ってことです。
じゃあ、アプリケーションの一部のロジックを別のマシンに実行させたい時って、どんな時なんでしょう?
自分としては、以下の条件に一致する時だと思います。
-
戻り値・引数のデータ量が少ない
-
汎用性が高い
-
可変性が高い
-
速度を重要視しない
-
高コストな処理を分散させたい
つまりは、分離したロジックを手元で集中管理できるメリットと、戻り値・引数をアプリケーション間で通信することで高速な処理が実現できないデメリットとのバランスが大切になるということです。
例えば、編集画面から呼び出される「住所から郵便番号を取得する」処理を考えてみます。
この処理は、汎用性も可変性も高く、戻り値や引数のデータ量は少ないので、このロジックを WCF によってライブラリ化する価値はあると思います。
しかし、大量のレコードをバッチ処理するような場合、住所から郵便番号を求める処理コストよりも、アプリケーション間の通信コストが上回る可能性があります。
このような場合は、WCF によるライブラリ化は向かないかもしれません。
・・・(続く)