問題タブ [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.
wcf - デュプレックスに net.tcp を使用して、Silverlight クライアントの接続がまだ有効であることを確認するにはどうすればよいですか?
私は、net.tcp と netTcpBinding を使用して WCF サービスをまとめ、Silverlight クライアントとの二重通信を取得しています。Silverlight アプリからサービスを呼び出すと、サービスは別のサーバーを呼び出し、WCF サービス クラスでコールバック メソッドを渡します。リモート サーバーは何度かコールバックし、そのたびに WCF サービスはコールバック チャネルを使用してデータを Silverlight クライアントに送信します。ほとんどの場合、すべてうまく機能します。
ユーザーが大きなリクエストを送信すると、多数のコールバックが既に機能した後で TimeoutException が発生します。(明らかに、これを防ぐために他の場所でやるべきことがいくつかありますが、まずサービスを強化したいと思います。)
Silverlight クライアントにコールバックする前に、何らかの「if (client.ConnectionState == faulted)」チェックを行うことを期待していましたが、接続の状態を保持するオブジェクトが見つからないようです。ありますか?私は間違った側からこれに近づいていますか?
これは、サービス net.tcp と duplex への私の最初のベンチャーです。家を引っ越したばかりで、WCF バイブルはまだ箱に入っています。どこか。:-) だから、私はいつもの背景を読むことができません。
どんな指摘もありがたく受け取るだろう。私の説明があまりにも厄介な場合に備えて、ここにいくつかの裸のコードがあります:
wcf - セルフホストWCFとMVCで同じタスクを実行した場合のパフォーマンスの大きな違い
クライアントからジョブを受け取り、それを処理して結果を返すカスタムThreadPoolを作成しました。現在、これはMVCアプリケーションで実行されています。ユーザーがフォームを使用して実行するジョブをアップロードする場合、サーバーはそれを処理してレポートを返します。この処理には、SOAP要求を複数の外部サービスに送信し、応答を蓄積することが含まれます。
最近、アップロードタスクを自動化し、ジョブの現在のステータスのコールバックを処理できるWindowsベースのアプリケーションを作成しました。したがって、netTCPBindingとコールバックコントラクトを使用してWCFサービスを実装し、コンソールアプリケーションでホストしました。すべてが正常に機能しており、Windowsアプリケーションはコールバックなどを受信しています。しかし、大きな問題はパフォーマンスです。WCFリクエストを介して同じジョブを処理するには、MVCアプリケーションを介した手動アップロードの4倍の時間がかかります。
当初、私はそれがコミュニケーションの遅れであるとは思っていなかったので、各ステップの期間を見つけるためにストップウォッチを実装しました。驚いたことに、遅延は通信の遅れによるものではなく、外部サービスにSOAP要求を行う最後のルーチンで発生しています。私の意見では、これはクライアントからサーバーへのジョブの転送モードとは無関係であり、カスタムThreadPoolの個別のスレッドでも実行されます。
MVCアプリケーションとWCFサービスで同じAPIを使用しています。ロジック、ルーチンすべてが同じです。私の2番目の疑問は、WCFが実行中のスレッドを停止/一時停止して新しい要求を処理するかどうかでした。
誰かが理由が何であるかについて洞察を得ることができますか?必要なものに基づいて、さらに情報を提供できます。
ヘルプを事前にありがとう
wcf - TCP接続とファイアウォール
インターネット上で、高速で安全なサーバー間通信が必要であり、開いているファイアウォールポートを指定できる場合、NetTcpBindingは非常に価値があります。
a)HTTPなどの他の接続プロトコルでは、ファイアウォールポートが開いているかどうかを確認する必要がないことをテキストで示していますか?
b)NetTcpBinding
サーバー間通信にのみ有用であり、クライアント間通信には有用ではないのはなぜですか?
ありがとうございました
jquery - netTcpBinding を使用して WCF サービスから JSON データを返す
JSON データを返す WCF サービスを作成しています。また、サービスを呼び出して、jQuery を使用してデータを取得したいと考えています。私の問題は、私の会社が WCF プロジェクトをホストするときに netTcpBinding のみを許可することです。WCF から JSON データを返すことについて私が読んだことはすべて、webHttpBinding を使用することを示しています。そう
- netTcpBinding を使用する WCF サービスから JSON を返すことは可能ですか?
- 同じサービスを指す異なるバインディングを使用して、複数のエンドポイントを追加できますか?
- 他の子クラスを含む複雑なクラスがある場合、JSON を使用してこれを返すことができますか?
(余談ですが、私はWeb サービス ソフトウェア ファクトリを使用してサービスを作成しているので、これによりメッセージ コントラクトやその他すべてを使用することがより困難になるかどうかはわかりません)。
ティア。
wcf - WCFを介して大きなメッセージを送信できません
あらゆる種類のメッセージを送信するためにWCFを使用していますが、特にこのメッセージは約3200000バイトに加えて、いくつかの文字列とヘッダーです。ラージペイロードは、あらゆる面で模倣しようとした構成を持つ別のサービスを介してホストから取得されたシリアル化されたオブジェクトです。
パフォーマンスのためにnetTcpバインディングを使用しており、多くのコールバックを使用しています。クライアント側とサーバー側の両方で、見つけることができるすべてのオプションを最大レベルに設定しました。
クライアントで次の説明のないエラーメッセージが表示されます。
ソケット接続が中止されました。これは、メッセージの処理エラー、リモートホストによる受信タイムアウトの超過、または根本的なネットワークリソースの問題が原因である可能性があります。ローカルソケットのタイムアウトは「00:00:59.9979996」でした。
そして内面の脱出:
既存の接続がリモートホストによって強制的に閉じられました
トレースを実行すると、もう少し多くの情報が得られます(スタックトレースの最上位):
System.ServiceModel.Channels.SocketConnection.Write(Byte []バッファー、Int32オフセット、Int32サイズ、ブール値即時、TimeSpanタイムアウト)スタックトレースの最上位内部拡張:System.Net.Sockets.Socket.Send(Byte []バッファー、Int32オフセット、Int32サイズ、SocketFlags socketFlags)
スタックトレース内部例外の最上位:
System.Net.Sockets.Socket.Send(Byte []バッファー、Int32オフセット、Int32サイズ、SocketFlags socketFlags)
ペイロードをnullに設定した場合(3.2 MBのオブジェクトを送信しない場合)、メッセージは大騒ぎせずに通過します。
オブジェクトが別のサービスから発信されているという事実は、私の問題と関係がありますか?私の目には、問題はメッセージのサイズですが、構成のオプションを増やしても、これまでのところ役に立ちませんでした。
運が悪かったので、クライアントに設定しようとしました。ストリーミングを使用すると、リクエスト/レスポンスに切り替えたり、すべてのコールバックを削除したりします...
何か案は?
wcf - WCFTCPバインディングエンドポイントのリモートアクセス可能なホスト名
として定義されたローカルエンドポイントnet.tcp://localhost:<port>/MyRemoteApp
は、ローカルシステムからのみアクセスできます。
- すべてのリモートネットワークインターフェイスからWCFサービスにアクセスできるようにするには、どのホスト名またはIPを使用する必要がありますか?
- そのような名前を取得するための最も互換性のある方法は何ですか?
- または、複数のエンドポイントが必要ですか?
authentication - WCF TCP エンドポイントを管理者に制限する
リモートでアクセス可能な WCF エンドポイントへのアクセスをローカル/ドメイン管理者に制限するにはどうすればよいですか?
編集: WCF チャネル メソッドの実装に追加[PrincipalPermission(SecurityAction.Demand, Name = "AdminUser")]
した後、クライアントからサービス メソッドを呼び出そうとすると、SecurityAccessDeniedException
進行中の がスローされます。
正しいユーザーとしてWCF 接続を再開できるように、Windows がユーザーに新しいユーザーの詳細 (またはセキュリティ トークン) を求めるようにするにはどうすればよいですか?
wcf - 制限付きリモートWCFサービス:Windows認証プロンプト
リモート管理者(ローカルまたはドメインの資格情報を持つ)がWCFTCPバインディングを介してWindowsサービスを制御できるようにしたい。これを行うには、リモートユーザーを管理者として認証する必要があります。プリンシパルユーザー/ロールを確認できますが、リモートユーザーに正しいユーザーの詳細/トークンを要求する方法がわかりません。
これは、 WCFTCPエンドポイントを管理者に制限することに関する私の以前の質問に関連しています。[PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]
制限付きサービスメソッドに追加してをキャッチする代わりに、次の方法でSecurityException
チェックできるようです。
別のプリンシパルとして接続を再開できるように、アクセス拒否の結果が返された場合、リモートユーザーにWindows認証を求めるにはどうすればよいですか?
もちろん、変更はリモートユーザーのクライアントアプリケーションに影響を与える必要があります。おそらく、それを行うためのよりクリーンなWCFの方法がありますか?
編集: 「。netのなりすまし」を検索すると、CodeProjectでこれにたどり着きました。見る機会がありませんでしたが、これが進むべき道かもしれません。
wcf - LN のクライアントで netTCPBinding を介した WCF サービスがタイムアウトになり、米国のクライアントでは正常に動作する
ニューヨークのサーバーで実行されている TCPbinding を介して公開されている WCF サービスがあります。サービスへの接続に問題はなく、アメリカからこのサービスに接続しているクライアントから結果を取得できますが、ロンドン/ヨーロッパからのクライアントには問題があります。このタイムアウトの問題が発生する理由はよくわかりませんが、以下はクライアントとサーバーの設定によるものです。
サーバ
私のクライアントには、C# コードで次の設定があります
WCF タイムアウトの問題を経験したことがある人は、これに光を当てることができますか? 私はさまざまなフォーラムで無数の投稿をフォローしようとしていますが、私が集めた理解とコードと構成の形での実装はあまり役に立ちません.
TIA、シュラヴァン
c# - WCFTCPはHTTPよりどれくらい速いか
TCPはWCFのHTTPよりも高速であることを理解していますが、どれだけ知りたいのでしょうか。HTTPを使用する大規模なアプリケーションでパフォーマンスの問題があり、netTcpに移行することで、投資を価値あるものにするのに十分なパフォーマンスの向上が得られるかどうかを検討しています。
Httpバインディングと比較してnetTCPによって送信されるデータの量の違いを知っている人はいますか?