プログラムコードにドメイン間サービスファイルを統合する

2953 ワード

silverlightクロスドメインファイルは、多くの分散アプリケーションの開発で非常によく使われているので、いくつかの簡単なアプリケーションでは、プログラムのリリース後にユーザーにクロスドメインのxmlファイルを動的に配置させる必要はありません.このようにプログラムディレクトリには、もう一つのxmlのクロスドメインファイルが必要ではなく、リリースの複雑さが増しています.だから、私は以下の方法でプログラムの中で直接にクロスドメインファイルをコードに統合することを実現しました.
クロスドメインサービスを開始すると同時に、クロスドメインファイルの定義をコードに統合しました.いくつかのカスタムプログラム機能によって、ドメインをまたぐファイルのダイナミック性を動的に生成することもできます.このようにして、ドメインをまたぐルールをユーザに設定させる機能を達成することができる.また、そのclientaccesspolicy.xmlファイルを持つ必要はありません.へへ
以下はクロスドメインサービスを開始する時のコードです.
 1:          // ? ? ′ ′ ? ·:http://funsl.com
 2:          internal void StartupPolicyServer(int maxOnlines)
 3:          {
 4:              _policyBuffer = new byte[371];
 5:              Stream str = new MemoryStream(System.Text.ASCIIEncoding.Default.GetBytes(
 6:  @"<?xml version=""1.0"" encoding =""utf-8""?>
 7:  <access-policy>
 8:    <cross-domain-access>
 9:          <policy>
10:              <allow-from>
11:                  <domain uri=""*"" />
12:              </allow-from>
13:              <grant-to>
14:                  <socket-resource port=""4502-4534"" protocol=""tcp"" />
15:              </grant-to>
16:          </policy>
17:      </cross-domain-access>
18:  </access-policy>"));
19:              // ? ? ′ ′ ? ·:http://funsl.com
20:              str.Read(_policyBuffer, 0, _policyBuffer.Length);
21:  
22:              _listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
23:              _listener.Bind(new IPEndPoint(IPAddress.Any, 943));
24:              _listener.Listen(maxOnlines);
25:  
26:              _listener.BeginAccept(new AsyncCallback(OnClientConnect), null);
27:          }
28:  
次に以下のコードで起動します.
1:  // ? ? - ′ ? ·:http://funsl.com
2:  jacSocket.crossDomain cd = new jacSocket.crossDomain();
3:  cd.StartupPolicyServer(200);
4:  
その中でStartpolicyServer()のパラメータはドメインを越えたサービス接続の最大のクライアント数です.実際の状況に従って記入してください.