2011年10月1期プログラム【.NET】WCF〜Windows通信基盤技術【通信】 TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
新しい言語は要らない
【論理パズル】intelが天才を求めているようです
全国高専プログラミングコンテスト part3
今もっとも最新のプログラム言語は?


【.NET】WCF〜Windows通信基盤技術【通信】


1 :09/10/14 〜 最終レス :11/11/20
Windows Communication Foundation(WCF)は、
.NET Framework 3.0 における新しい通信サブシステムであり、
アプリケーション同士をネットワーク経由で接続する仕組みである。
                                wikipediaより
<関連URL>
■Windows Communication Foundation (WCF)
http://msdn.microsoft.com/ja-jp/netframework/aa663324.aspx

2 :
三文字テクノロジは流行らない法則。

3 :
なんかさ、最近のMicrosoftって宗教みたいじゃね?
信じる者は救われる〜〜〜〜みたいにw

4 :
スレ違い

5 :
"874"はみす

6 :
>>847
でも、ここってMicrosoft教WCF宗派が集うスレじゃね

7 :
正しくは.NET宗WCF派だ

8 :
>>7
ちなみにアプリ間の通信に関しては
他にどんな宗派があるの?

9 :
>>8
まず業界標準のOMG/CORBAがある。
また、CORBAと互換性(相互運用性)があるのか否かが最大の注目点。
もし無ければ、ブリッジ(or ゲートウェイ)が標準提供される必要がある。
このブリッジはプログラミングレスであることが重要。
さもなければ、MSの宗教(MS教.NET宗WCF派)であると見なす。

10 :
WCF vs CORBA
WCF vs xml-rpc
WCF vs SOAP
WCF vs socket
WCF vs RPC

11 :
WCFはサービス指向だからCORBAとはあまり合わんかも。
ちなみにWCFは通信プロトコルじゃないよ。
WCFのモデル上で各種通信プロトコルが実装される。
Webサービスとかその他諸々。
CORBA対応するとしてもそういうイメージ。

12 :
元々あらゆる通信プロトコルを
単一のプログラミングモデルで扱えるようにするのが目的だから。

13 :
>>11
>CORBA対応するとしてもそういうイメージ。
・CORBA対応は後発であるWCF側で対応する
・その対応により、既存システム側に変更は不要
・上記はMSが保証する
>>12
>元々あらゆる通信プロトコルを
>単一のプログラミングモデルで扱えるようにするのが目的だから。
・その「あらゆる」という言葉には、当然、CORBAも含まれている
・.NET系以外のシステムであっても、相互運用可能である
・上記はMSが保証する
これらは、すべてYESですか?もしそうであれば宗教扱いを止めます。

14 :
・コンポーネント指向プログラミング
 − 再利用方法:分散環境でのコンポーネント、部品再利用
 − 再利用環境:同じ開発環境および同じぷラットフォーム
 − 代表する技術:ActiveX、COM/DCOM、JavaBeans、EJB、CORBA/COM
 − インタフェイス定義:IDL
 − 問題点:特定プラットフォームへ依存、ファイヤウォールの透過は困難

・サービス指向アーキテクチャ
 − 再利用方法:分散環境でのサービスの再利用
 − 再利用環境:サービス指向アーキテクチャ環境
 − 代表する技術:SOAP Webサービス、*WCP*
 − インタフェイス定義:WSDL
 − 問題点:業界共通の定義は、まだ存在しない
 「これからはじめるWCFプログラミング」(秀和システム)より

15 :
ABC
A:アドレス
B::バインディング
C:コントラクト

16 :
>>11
CORBAとかその辺がやってたことを再実装して売り出すというやつですか。

17 :
>>14
>− 代表する技術:ActiveX、COM/DCOM、JavaBeans、EJB、CORBA/COM
> − インタフェイス定義:IDL
> − 問題点:特定プラットフォームへ依存、ファイヤウォールの透過は困難
問題点が特定プラットフォームへ依存ってあるけど、それはActiveX、COM/DCOMのこと?
Windowsシステム上でしか動かないし、他のシステムと相互運用性ないし。
自分から原因を作っておきながら、さも全体に問題があるように語るの?
もしも、それでWCFを拝んでいるようなら、やっぱ MS教.NET宗WCF派 だよwww
>− 代表する技術:SOAP Webサービス、*WCP*
えーと、"WCP" って、まさか Windows Communication Protocol じゃないよね。
今時、特定プラットフォームへ依存するプロトコルなんてありえないし。

18 :
だからWCFは単なるプログラミングモデルだってのに。
サービス指向の考え方がわりと根底にあるっていう特徴はあるにしても。
メインはWebサービスだし、MS教とか関係ないっつの。
WCFに関してはね。

19 :
>>13
通信プロトコルではないの意味が分かってないのか?
.NETでは通信のプログラムはこういうモデルで書こうというだけの話に、
宗教もくそもない、既存の標準のしくみを置き換えるものでも何でもない。

20 :
>>14
× WCP
○ WCF

21 :
>宗教もくそもない
すべての宗教、思想、道徳をあたたかくつつみこんでくれるわけですね。
しかし、それはいっいどんなものなのでございましょう?

22 :
通信のインフラストラクチャ

23 :
>>18
>メインはWebサービスだし、
というよりも、WCFはWindowsプラットフォーム上でしか緊密な相互運用性が保証されず、
他のプラットフォームとの間は、Webサービス(SOAP)みたいな粗結合な仕掛けでしか
相互運用できないってのが事実だろが。まったく信者はこれだから....。
>19
>.NETでは通信のプログラムはこういうモデルで書こうというだけの話に、
で、そのモデルとやらは、Windows以外のプラットフォームを包含しているのか?と指摘しているんだよ。
漏れはMSを全否定する気はない。特に、MSの持つXML関連の技術は、高く評価している。
たとえばWPFは、MSらしいXML応用技術だ。そして、WPFはWindowsプラットフォーム(.NET)上で
閉じているから、その世界の中で信者達が信仰している分には、何をしようと無問題だ。
でもな、MS教がネットワーク、あるいは分散システムに進出するとなれば、話は大きく変わるんだよ。
それが何度も言っている「他プラットフォームとの相互運用性」という課題。

24 :
WSDLだってば

25 :
>>24
DCOMもCORBAも共にインターフェイス定義にはIDLを採用してた。
では、DCOMとCORBAとの相互運用は可能だったのか?
WSDLは相互運用性を実現する技術要素の一つでしかない。
WSDL採用だけでは相互運用性は保証されないんだよ。
まったく、これだから信者は始末に負えない。
教祖MS様の言う事は、全て正しいと思い込んでる。

26 :
もったいぶってないで「相互運用性が保証される」ための「十分条件」をいえよ

27 :
>>26
>>13の前段を嫁

28 :
おれにあわせれば、それでいいんだよってことか
CORBAやってるやつはそれをすててWCF使えばいいってのも同様に十分条件となるってことだな
まあ、、、時間を無駄にした

29 :
>>28
>>23でWPFを例えにしたけど、WCFも同じ。
Windowsプラットフォームだけの閉じたシステムを構築するなら、WCFでも無問題。
ただし、CORBAでもなんでもいいが、他のプラットフォームが存在しているシステムにWCFベースの
Windowsサブシステムを追加しようとした場合、相互運用性が課題になる。
既存の(メインフレーム/UNIX/Linuxで動く)基幹システムを、すべてWindowsに置き換えろってか?
笑われるぞ。もしそれを正気で言ってるとしたら、それこそMS教の狂信者だぜ。宗教って怖いね。
>>28がWindowsだけで閉じた世界に生きているなら、時間の無駄だよ。
というか、相互運用性という言葉の意味を知らずにカキコしているのか?

30 :
だから、WSDLだってば

31 :
>>30
>>25

32 :
WCFは、「Windowsでのプログラミングモデル」であって、
他の環境でWCFのプログラミングモデルを使う必要などない
という大前提をなんで無視するの?
ってかなんでそんな大げさな仕組みと思いたがるの?
勝手に思い込んで信者とか?
もう気色悪いんだよ。
しんでもCORBAがい言ってんならそういうのはWebサービス信者に言えよ。

33 :
WCFは.NETでの通信プログラミングモデルにすぎないって
何回いわせるんだよ。

34 :
他のプラットフォームにしても現在、相互運用性を保障する技術がない。
だからこれからMSも他プラットフォームもWSDLを使っていこうってことなんだよ。
MSはCOM/DCOMをすてる。他のプラットフォームにいるやつもCORBAをすてる。
今からWSDLに集結しましょうっていう話だと思うよ。
CORBAを使いたがってるやつは、その行為自体も相互運用性を保障するものではないってわっかってんのかね?

35 :
>>29
誰も言ってないことを妄想語り。
これだから基地外は。

36 :
こいつはもちろんWebサービスが出てきたとき発狂しまくったんだろうな。
基幹のシステムをみんなWebサービスに置き換えるのか、とか言って。

37 :
Webサービスなどの相互運用を意識した標準に則ったサービスを
Windows上で構築したり呼び出したりするときは、
WindowsではWCFのプログラミングモデルを使って構築する。
Windows同士のネイティブな通信でもWCFを使う。
Windows以外のシステムではそちらで都合のいいプログラミングモデルを使って
やっぱりWebサービスやCORBAやその他要件に合わせた技術で構築する。
これの一体どこにMS信者とか狂信者とかそんな言葉が出てくるんだか。

38 :
WCFはプロトコルスタックとプログラミングモデルが独立してるのがミソ。
標準的な通信方式でもネイティブなローカルな方式でも
デファクトになってきた新しい方式でも
今後新しい方式が出てきても、
基本的にプログラミングモデルは変えなくて良い。
ただ対応するプロトコルスタックを提供するだけ。
まあそういう考え方はは昔からないわけではないが、
実質的にあまりうまくいかなかった。
何でだろうな。

39 :
Microsoftが考えたフレームワークに沿って作業しない奴が多いから。

40 :
このスレは良スレの予感

41 :
>>39
つ WindowsDNAでも使ってろ!HailStormでも使ってろ!

42 :
パフォーマンスやら性能とかってどうなんでしょう?

43 :
>>38
.NET で閉じてるうちは自由にトランスポート層を選択できるけど、
非.NET な世界と会話しようとした途端に
WebService を選択せざるをえなくなって、
それ以降は WebService と言う制限を受ける。
サービス実装が透過してるから
「速度が重要になったらあとでソケットにしよう」
なんてことが設定レベルで出来るはずだったのに
そのうまみがまったくない。
だったら外と通信する部分は最初からソケットで組めって話になる。

44 :
Webサービス(SOAP)前提ってことは、要するにセマンティクスとして
リクエスト&レスポンス(コール&リターン)しか使えないRPCと大差無しという事。
MS/DCOM、OMG/CORBA、それにOSF/DCEさえ満足に使えないプログラマが大半だったのに、
それが教祖MSの考案した新教典WCFだからという理由だけで、
>>37,38みたいな能天気な発言で盛り上がれるんだから、
ここのミサに集っている連中の宗教狂いレベルも分かる。
ましてや>>39なんて狂信者の発言なのに、それを誰も咎めない。
やっぱりMS/WCFは宗教だろ。wwwww

45 :
自分のカキコを読み返してみると、>>38はMS教典WCFの矛盾に気が付きかけているから、
引き合いに出すのは不適切だった。>>44のカキコから削除する。失礼した、ゴメソ>>38
逆に、>>44へ追加するのは>>32,34あたりか。

46 :
>>44
>Webサービス(SOAP)前提ってことは、要するにセマンティクスとして
>リクエスト&レスポンス(コール&リターン)しか使えないRPCと大差無しという事。
SOAPってリクエスト&レスポンス(コール&リターン)前提だったのか。
初めて知ったよw

47 :
>>43
詰まるところ何が言いたいの?
最初からみんなソケットで組めってか?

48 :
>>44
つまり何が言いたいのか分からない。
お前らみんな狂信者だって言ってるだけだな。

49 :
>>44
Windowsでの汎用的な通信プログラムが
それなりに楽な共通プログラミングモデルでできるってだけの話に
一体何を言ってるんだ?

50 :
44は無視していいけど、
とっとと具体的な話題に入らない方も悪いと思う。
で、議題募集。
前にでてるパフォーマンスとかいいんじゃない?
あとこんなの作ってみたとか、作り方教えてとか、ここがうまくいかないとか。
手を動かさないと始まらないよ。

51 :
> 前にでてるパフォーマンスとかいいんじゃない?
MSの宣伝ではRemoting以上の速度(つまり、パフォーマンスはかなり良い)って事になってるね。
実際、使ってみてパフォーマンスで困るような事はなかった。
ただ、ChannelFactory<T>を使う場合は動的コード生成を行うせいか、初動が遅かった。
(といっても、1秒程度だが、コマンドラインツール等で使用すると微妙に気になるかも)
svcutilで生成したコードはを使えば、動的コード生成なし使えるかもしれないが、
そこは試していないので不明。

52 :
ついでに、うちがWCFを採用した理由も書いておこう。
「silverlightに対応しているから」
この一点に尽きる。
現状では、
.Net3.5とsilverlightの両方に対応したコードで使える通信フレームワークというと
WCFしか選択肢がない。

53 :
>>52
何を開発しているのか書いてくれないと、だから何?って感じでつ

54 :
だれかなんか作った?

55 :
Windows2000がまだあるっていう理由でWCF使えてません。
.NET Framework4.0なんて夢のまた夢…。orz

56 :
>>55
何を作ろうとして、つかえてないの?

57 :
そういう話じゃないだろ

58 :
>>57
いや、そういう話だろ。
2000じゃなかったらWFCで作れるプロダクツがこの世に存在するってことはまだあたりまえのことじゃないからな。

59 :
情報クレクレ君が多いな

60 :
Mr. Okure

61 :
>>56
宣伝になるから嫌だけど。
一応成果物はあるんですがね。
http://intra-master.giga-works.com/
社内or客先に2000がまだあるから .NET2.0 -> .NET3.5/.NET4.0 に移行出来ないってだけで。
ttp://community.giga-works.com/windows/wcf-apache-cxf-ws-security.html
ttp://community.giga-works.com/c-sharp/wcfgzipwcf-client-apache-cxf-pjl-comp-filter.html
ttp://community.giga-works.com/c-sharp/wcfgzipwcf-client-apache-cxf-pjl-comp-filter---2.html
なんで自前で暗号化実装しないとダメなのよ。WCFで良いやん…みたいなね。
んで、2000から7までカバーしろとか。もうね…。orz
SQLServerもExpressEditionですら使わせてくれないしー。Silverlightも出る前だったしー。
データの受け先もApacheCXFにしちゃったしね。あーあ。
開発は全部一人でやってますよ。えぇ。DB設計から画面設計から何から何までね。
ちなみにボランティアですな。ははっ。本業はプログラマーじゃないです。

62 :
>>61
でも、そういう環境って貴重だよ。
あたりまえにできそうなことができるってわかっただけでも貴重な情報。
こまかなトラップいっぱいあるからね。この世界。

63 :
>>62
乙ですね。
落とし穴…いっぱいありましたよ。
スレ違いになるからコレ以降はカキコしませんが。
ActiveDirectory環境下でWindowsサービス使ってログオンをHookする時とかに、うぎゃーとか。
Apacheで展開する時に、SSLとVirtualHostを同時に運用しないといけなくて、うぎゃーとか。
最初は鯖側をASP.NETで作成してたのですが、ソースをIISへ転送しないとダメで、
こりゃ実装としてマズーでうぎゃーとか。
Javaで再実装後、1台のJ2EEサーバーで同一アプリを同時展開するために、うぎゃーとか。
んで、本業じゃないんで漏れの睡眠時間がうぎゃーとか。www
プログラマーじゃないんです、ハンコ屋なんですとか言っても信じてもらえないし。
えぇ。友人のためにボランティアで作りました。

64 :
これ設計したやつ天才だな

65 :
hoshu

66 :
age

67 :
ルック

68 :
最近始めた。これ面白いね。
プロトコルや通信路によってコードを変えなくていいのが良い。

69 :
これって、JavaでいうRMIとかも含んでいますか?
JavaのRMIのシステムをWCFで再構築しなおすことってできますか?

70 :
>>69
RMIに相当する機能(オブジェクトのマーシャリング)は含まれていない。
WCFは、RMIよりもSOAP/DCOM/CORBAと類似性のある仕掛け。
RMIと違い、提供するサービスを明示的に記述する必要がある。
遊びで触るくらいなら動かせると思うけど、ある程度の規模の
RMI応用システムを想定しているのなら、かなり苦労することになるだろね。
少なくとも上に書いた三つの類似技術のどれか一つを、
概念的にでも理解できていないと、WCFは使いこなせないよ。
結論:苦労してWCFを勉強しても、三つの類似技術と同様、普及することなく
   忘れ去られる技術だから、WCFを勉強しても無駄になるだけ(笑

71 :
WCFって普及するとかしないとかそういうもんじゃないだろう。

72 :
まったくだ。
WCFの勉強自体に苦労はない。WCFによるサービスをシステムを構築する上で
IISでどうホストするかが重要。セッションとか。

73 :
>>71,72
他人のレスに文句つけるくらいなら、質問者(>>69)に適切なレスしてみればいい。
システムをxxxからWCFへ移行したいなんて要望は、この先ありふれた質問になるよ。
底辺プログラマには無理な注文かな(笑

74 :
何がしたくてここに来てるのかなぁ。

75 :
>>73何が言いたいのかよくわからん。
お前WCFが何か分かってないだろ。
分かってたらそういう反応にはならない。

76 :
>>74,75
うるせーよ底辺。
早く質問者(>>69)に回答したら?

77 :
また基地外が暴れてんのかよ

78 :
ほしゅ

79 :
>>76
残念。私は高さだ。
さしずめ君は÷2かな。

80 :
じゃあ僕は円周率ちゃん!

81 :
もし面白いつもりで書いてるなら、絶望的に笑いのセンスが無いと思う

82 :
半径の俺に隙はなかった

83 :
あれよあれよと衰退する「Windows Mobile」に黄信号...
ttp://www.gizmodo.jp/2010/02/windows_mobile.html

84 :
最近使い始めたけど、何これ超楽w
もう他じゃ無理w

85 :
HTTPより簡単?

86 :
比較対象が違う
実際の通信にHTTP使ってる場合も多いし

87 :
HTTPの上のレイヤ

88 :
テストも兼ねて、.NET4.0のWCFを試してみたんだけど、4.0のWCFが使い物にならない…。ナニコレ。
BindingでCustomBindingを指定して、GZip有効にすると3.5でOKなのに4.0だとエラー吐くとか、もうね。orz
# SP1待ちか?
とりあえず3.5止まりッス。うぇうぇうぇ。

89 :
WCFってlinuxのpostgresとかのDBとは通信できないの?

90 :
>>89
PostgreSQLのDBサーバ〜クライアントライブラリ間は、TCP/IP上の「独自プロトコル」で会話している。
これはMySQLやDB2のような他のRDBも同じ構造。そして、この独自プロトコルをWCFのサービス定義に
対応付ける(マッピングさせる)ことは技術的に非常に困難だから、(対Linuxプラットフォームに限らず)
・WCFで外部世界のDBと直接通信する「汎用的な方法」は存在しない。
次に、現実に要望があった場合、実際にはどうやって実現させるについて。一般的な言い方をすれば、
・PostgreSQL上で構築されているデータモデルにSOAPサービスを追加実装&公開し、
 このSOAPサービスをWCF(Windows)側からアクセスさせる
ことによって実現できる。注意すべきは、個別のデータモデルごとにSOAPサービスを定義&実装する
必要があるということ(汎用的な方法は存在しない)。SOAPサービスの実装方法については、
Linuxであれば、たとえばRubyを使うのことを勧める。Rubyなら標準ライブラリにSOAPサーバ機能(SOAP4R)が
含まれているし、あるいはRuby on RailsのActiveResourceと呼ばれるSOAP向けフレームワークを利用できる。
などと、ここまで説明してきたけど、かなり面倒だよ。WCFは「Windows諸島という絶海の孤島」で
Win同士が会話することに特化して異常進化したものだから、外部世界との通信の実装には高いスキルが要求される。
だから、素直に(WCFではなく)C#向けPostgreSQL APIを使って開発するのが、単純/簡単/高速/トラブル無しで済む。
言い換えると、ガラパゴス諸島へ移住する気がないのなら、WCFの勉強は無駄・無駄・無駄www

91 :
WCF叩いてるように見えて、ちゃんと読むとマンセーしとるw

92 :
PostgreSQLのDBから取りだすものをGrassFishにNetBeansで作ってC#で読む、というのをやってる
まあ直接やった方が楽ではあるな

93 :
http://www.infoq.com/jp/news/2010/10/WCF-REST
単なるRESTフレームワーク化するらしいw

94 :
WCFなんて特に語ることないだろ。スレなんて立てるな。

95 :
WCFでP2Pファイル共有システムを構築したいのですが何かアドバイスください。
基本的にはユーザー側のアップロードが出来ない仕様でトップダウンという
形でファイルだけを受け取れる様にしたいです。
色々独自で調べたのですがいまいちピンと来ないです。

96 :11/11/20
ピンと来ないですね。
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
新しい言語は要らない
【論理パズル】intelが天才を求めているようです
全国高専プログラミングコンテスト part3
今もっとも最新のプログラム言語は?