2

私はいくつかのWCFの例に取り組んでいます。現在、売上台帳付きの注文入力アプリケーションがあります。ユーザーが最新のトランザクションを取得するには、手動でレジスタを更新して DB から取得する必要があります。

WCF とパブリッシャー/サブスクライバー フレームワークを介してイベント モデルを実装し、ユーザーがエントリを注文すると、その画面が開いている場合にアプリの他のすべてのインスタンスにトランザクション レジスタを更新するよう通知します。

したがって、これまでの例ではすべて、以下のような構成を使用しています。

<configuration>
   <system.serviceModel>
      <services>
         <service name="TrafficLightSubscriptionService">
            <endpoint address="net.tcp://localhost:8001/TrafficLightSubscriptionService" binding="netTcpBinding" contract="ITrafficLightSubscription"/>   
         </service>
         <service name="TrafficLightEventService">
            <endpoint address="net.tcp://localhost:8002/TrafficLightEventService" binding="netTcpBinding" contract="ITrafficLightEvents"/>
         </service>
      </services>
   </system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

これは、IIS を備えた単一のマシンでの学習などには問題なく機能しますが、「一部」のクライアントが rdp セッションを介してリモートで接続し、他のクライアントが LAN を介して接続している小さな Windows Server 2003 ドメイン (1 サーバー、4 ~ 5 クライアント) に実装する必要があります。 .

サービスを IIS ではなく Windows サービスとしてホストしたいと考えています。したがって、このシナリオのバインディングを構成する方法を教えてください。

  1. http://loca.lhostを IP 番号に置き換えるだけの簡単なものですか。
  2. その場合、IP が動的に割り当てられている場合はどうすればよいですか?
  3. アクセスに関するセキュリティ上の考慮事項はありますか? 認証されたユーザーがサービスに接続できるようにするにはどうすればよいですか?
4

1 に答える 1

1

RDP 境界のトラバースは簡単ではありません。リモート接続を作成するときによく見ると、オーディオ、プリンター、ファイル システムなど、共有するローカル リソースのオプションがあります。これらは IP を共有せず、ターゲットの rdp ホスト内からクライアント IP にアクセスすることもできません。 . しかし、実際にこれが必要かどうかはわかりません-RDPセッションを介して接続するクライアント-ローカルコンピューター上のアプリクライアントですか、それともrdpデスクトップ内で接続後にクライアントを開いているだけですか? クライアントが「ホーム」PC にある場合は、問題があります。それ以外の場合は、クライアントが同じネットワーク上にある限り、接続方法に違いはありません。

質問の他の部分については、WCF を自己ホストしないことを強くお勧めします。なぜなら、IIS は信頼性を提供するため、自分でホストすると真似するのが難しいからです。
次に、各クライアントで IIS が必要な場合は、ソフトウェア アーキテクチャに問題がある可能性があります。サーバーのみがIISを必要とし、サーバーはデフォルトで静的IPを持っていると思います(そうでない場合は、ドメインコンピューター名で参照すると、DNSがルーティングを行います)。クライアントは、サブスクライブするたびに現在の IP を提供する必要があります。

お役に立てれば...

于 2013-08-21T11:08:41.963 に答える