問題タブ [nettcpbinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 非一方向メソッドを使用したWCFの競合状態
私はクライアントサーバーチャットアプリケーションを設計しています(実際はそうではありませんが、私がそうであるふりをしましょう:))、そして私は私が経験したいくつかの競合状態に少し戸惑っています。
次のコードがあるとしましょう。
そして、ここにバインディング構成の抜粋があります:
これはもちろん、ある種の疑似c#です。わかりやすくするために、関連性のないコードをたくさん削除しました。
要点:このコードは機能しません。BroadcastMessageを呼び出すと、メソッドが返されることはなく、最終的にクライアント側でタイムアウトが発生します。サーバー側でデバッグすると、すべてが正常に見えます(BroadcastMessageメソッドから期待どおりに戻り、ReceiveMessageの片道呼び出しをブロックしていません)
このコードを修正する2つの方法があります:
- FaultContractを削除し、BroadcastMessageメソッドをoneway=trueとして宣言します
- メッセージを全員にブロードキャストしますが、最初の送信者
私の最初の推測では、クライアント側はサーバーが戻るのを待っていたため、サーバーからの着信ReceiveMessage呼び出しを処理できなかったため、サーバーがブロックされましたが、ReceiveMessageは一方向として宣言され、サーバーをデバッグすると次のようになります。 ReceiveMessageへの呼び出しをブロックしません
さて、私の質問:
どうしたの?
これを修正する他の方法はありますか?(おそらくバインディング構成を調整することによって?)
修正2を選択したとしましょう(つまり、送信者にブロードキャストしないでください)。自分のBroadcastMessage呼び出しが終了するのを待っている間に、サーバーがReceiveMessageコールバックを呼び出した場合(他の誰かが私にメッセージを送信したため)はどうなりますか?
OneWay呼び出しは完全に一方向ではなく、サーバーはまだ反対側からのHTTP応答を待機していることを読みました。これについての詳細はありますか?具体的には、クライアントは、遠隔通話でブロックされたときに、そのようなhttp応答に応答できますか?
編集:サーバー側でConsole .net 3.5、クライアント側でWinforms .net 3.5
wcf - WCF の NetTCPBinding は Socks Proxy をサポートしていますか?
企業環境にデプロイしたいクライアント/サーバー WCF アプリケーションがあります。
彼らは通常、インターネットへの直接接続を許可していないため、SOCKS プロキシを使用する必要があります。
ソックス プロキシ経由で netTcpBinding チャネルを使用することは可能ですか?
wcf - netTcpBindingと証明書トランスポートセキュリティを備えたWCF
netTcpBindingを使用し、Windowsフォームベースのアプリケーションに直接接続するWCFサービスを保護する必要があります。トランスポート層で固定するだけで済みます。
私はそれがローカルで機能していることをかなり確信しています。つまり、サービスをローカルで実行し、クライアントと接続することができます。
ローカルマシンではなくサーバーで実行されるようにサービスをセットアップしようとすると、証明書の問題が発生します。エラーログには、証明書に鍵交換が可能な秘密鍵が必要であり、プロセスに秘密鍵へのアクセス権が必要であることが示されています。
makecertを使用して作成された開発証明書を使用しています。
私は証明書の使用に非常に慣れていないことを認めなければなりません。誰かがこれを修正する方法、または証明書を使用してnetTcpBindingを使用してWCFサービスにトランスポートセキュリティを追加するためのより良い方法についてのポインタを持っていますか?
ありがとう。
wcf - WCF に接続する匿名クライアント
Microsoft のこの記事では、匿名クライアントを使用してトランスポート セキュリティを実装する方法について詳しく説明しています。
http://msdn.microsoft.com/en-us/library/ms729789.aspx
WsHttpBindingの代わりにnetTcpBindingを使用し、サービスを Windows サービスとしてホストすることで、同じ目標を達成できるかどうかを知りたいです。
wcf - WCFセルフホスティングパフォーマンス
私は、WCFおよびNetTCPサービスを利用するエンタープライズレベルのアプリケーションを作成中です。私は最初は好奇心からNetTCPを選択しましたが、データ処理の量が多いために結果を返すのに5時間以上かかると呼ばれるサービスを利用できるため、後でそれが最善の選択肢であると判断しました。
私が現在サービスを生み出す方法は、複数のステップからなるプロセスです。いくつかのデフォルトのもの(ポート番号、接続しているクライアントのサーバー名、HTTPとNetTCPを有効にするかどうかなど)を指定し、その下に「サービス」のコレクションがある構成ピース(System.Configurationを使用)がありますそれ。たとえば、基本的なものは次のようになります。
基本的に、ここで起こっていることは、私のWindowsサービスが開始され、<services />コレクション内のすべてを調べて、サービスごとにスレッドを生成し、起動時間を短縮します。各スレッドには、サービスが実際に存在するAppDomainが含まれているため、サービスに何らかの種類がある場合障害が発生しても、システムはダウンしません。
私が直面している「問題」は、このアプリケーションが約20のサービスをホストしており、すべてのサービスが稼働するまでに15〜20秒かかることです。スレッド化とAppDomainの部分を実行して、その値に下げました(各サービスが順番に開かれるため、1分以上かかりました)が、実際にははるかに高速になる可能性があります。
誰か提案がありますか?Google Bingには、1つのサービスをホストするための例がたくさんありますが、実際のアプリケーションについてはあまりわかりません(残念ながら、「HelloWorld」はエンドユーザーにとって魅力的ではありません)。現在、WindowsサービスとNetTCPを介して複数のサービスをホストしている場合、どのように行っていますか?
wcf - netTcpBindingを使用してIIS7.0でWCFサービスをホストするには、正確に何をする必要がありますか?
私は、netTcpBindingを使用して非常に単純なHelloWorldのようなwcfサービスをホストするために、まったく成功せずに1週間以上試みてきました。
httpを使用すると、すべてがOKです。リモートマシンからでもサービスにアクセスできます。しかし、tcpでは問題が発生します。
WASでサービスをホストするために、想定されているすべての手順を実行しました。
httpおよびhttp以外のアクティベーションを含む.Net3.0機能が有効になっている
「ネットワークサービス」と「IIS_IUSRS」に、サイトを含むフォルダーに次のアクセス許可を付与しました。
- 読み取りと実行
- フォルダの内容を一覧表示
- 読む
ファイアウォールでポート8100および8086を開きました。
IISマネージャー/アクション/バインディングでは、次のバインディングが設定されています。
- http 8100:*
- net.tcp 8086:*
IISマネージャー/Webサイトの管理/詳細設定で、httpプロトコルとnet.tcpプロトコルの両方が有効になっています。
私が抱えていた元々の問題は、http経由でサービスにアクセスできたということでしたが、tcpを試してみると、次のエラーが発生しました。
「エンドポイントアドレス'net.tcp://myDomain/HelloWorld.Hello.svc'のサービスがプロトコルアドレスで使用できないため、メッセージをディスパッチできませんでした。」
このサイトで、作成者が同じ問題を抱えている投稿を見つけました。これは、.net3.0の機能を再インストールすることで解決しました。だから私はそれを試しました。また、念のため、IIS7.0を再インストールしようとしました。今、状況は当初よりも悪化しています。Web.ConfigでtcpBindingを使用してエンドポイントを構成すると、IEを使用してそのhttpアドレスでサービスに到達することさえできません。次のメッセージが表示されます。
NetTcpBindingをバインドしているエンドポイントのスキームnet.tcpに一致するベースアドレスが見つかりませんでした。登録されているベースアドレススキームは[http]です。
Web.Configファイルは次のとおりです。
.svcファイルは次のようになります。
誰かが私に何が起こっているのかについての手がかりを教えてもらえますか?私は本当に他に何をすべきかわかりません。httpバインディングを使用することはオプションではないため、これは本当の問題です。前もって感謝します。
wcf - Windows資格情報なしでnetTcpBinding?
1 台のクライアント コンピューターと 5 台のサーバー ボックスがマシンのサブネット上で通信しているマシン制御アプリケーションがあります。ドメイン コントローラはありません。信頼性とトランザクションのサポートを可能にするために、 netTcpBindingを使用したいと考えています。
ドメインコントローラーが存在しない場合、このバインドでユーザー名/パスワード認証を使用することは可能ですか? オフィスの LAN に接続されていない 900 台のコンピューター (150 台のマシン) で証明書を管理したくないので、証明書を使用したくありません。
c# - .net分散グリッドコンピューティングの移行、ライブラリに関する推奨事項、アーキテクチャ
私はc#マルチスレッドモンテカルロシミュレーションを持っています、アプリケーションはすでに独立して実行されるタスクに分割できるように構造化されています、TaskControllerはタスクを実行し、中間結果を集約し、収束(早期終了基準)をチェックしてから最終結果を返します、これは現在ThreadPoolを使用して実装されています。
この計算を支援するために、複数のコンピューターを活用したいと思います。IISを使用するための承認またはインフラストラクチャがありません(これはポリシーは変更されません)が、たとえばNetTcpBindingエンドポイントバインディングでWCFを使用できます。サーバー間でこの通信をテストし、適切なアクセス許可と動作を持っています。
まず、1つのマスターexe(コンソールアプリ)と複数のスレーブを専用ワーカーとして他のサーバーに配置することを考えています(これらはexeですか?それともWindowsサービスですか?)、最終的にはこれを数百のワークステーションで実行するように設定できます(同様に)サーバーとして)アイドル時間中(またはスクリーンセーバーがアクティブなとき)の社内。
これは自分で書くこともできますが、コミュニケーションを処理する必要があります、1、2ウェイ?早期終了(中間コンバージェンス結果チェック)、不要になったタスクのキャンセル、作業の展開、作業の展開に使用できる準備が整ったマシンの検出、ワークステーションがアイドル状態でなくなった場合の作業の調整/一時停止?分散システムに入る他のすべて?
マスター(タスクコントローラー)がすべてのスレーブワーカーのアドレス(ip)を知っていて、作業を行うように指示する必要がありますか(使用可能な場合)、またはスレーブワーカーがマスターアドレスを知っているだけで、そうするか、コミュニケーションは双方向に流れる必要がありますか?これは24時間制で実行され、さまざまなビジネス地域をサポートするために1日あたり約9回の実行が開始されます。
この取り組みに役立つ.netグリッド/分散ライブラリの推奨事項とアーキテクチャに関するアドバイスを探しています。
アップデート
次のいずれかを使用した経験はありますか?
または、JavaSpaces、.netのJiniを使用したか、同等の.netテクノロジーを見つけました
ありがとう
wcf - netTcpBindingの可能な限り最速のセキュリティ構成は何ですか?
とりわけ、Webサイトのバックエンドとして使用されるWCFサービスを実行しています。WebサイトとWCFサービスの両方が同じマシン上で実行されているため、パフォーマンスの観点から、netTcpBindingを使用してセットアップしました。
つまり、これらは同じボックスに存在するため、トランスポートレベルのセキュリティやメッセージレベルの暗号化についてはまったく気にしません。メッセージが傍受される可能性がある唯一の方法は、誰かがWebサーバー自体に侵入した場合です。侵入した場合、私はすでに大きな問題を抱えています。
だから私の質問は、クライアントとサーバーがすでに信頼できるサブシステム上にある場合、netTcpBindingを可能な限り高速にするためにどのような構成を使用できるかということです。
もちろん、答えは「なし」のセキュリティを使用することかもしれません。しかし、私の特定のケースでは、カスタムデータベースに対してUserName認証を使用する必要があります。UserName認証を引き続き使用するように構成できますが、証明書やエンドポイント間のデータの保護に煩わされることはありませんか?または、ユーザー名/パスワードを格納するためにカスタムSOAPヘッダーを使用してカスタム動作を実装する必要があるのでしょうか。そうすれば、セキュリティを「なし」に設定できますか?
サーバー構成
カスタムUserName認証を使用します-基本的に、すべての呼び出しはカスタムデータベースに対して認証および承認します。サービス側は、証明書を使用してクライアントとネゴシエートします。例:
クライアント構成