2

アクセス データベースに接続するアプリケーションを更新していますが、これにはセキュリティがありません。

将来的には、SQL データベースを備えた IIS サーバー上にあるため、セキュリティ レイヤーを追加する Web サービスを作成することにしました。アプリケーションは、Web サービスと .NET 開発サーバーで正常に動作します。

1 か月でサーバーにアクセスできるようになりますが、アプリケーションは 1 週間でリリースする必要があるため、アプリケーションでサービスを自己ホストし、サーバーの準備が整うまでアクセス データベースを使用することにしました。

実際、私のソリューションには 2 つのプロジェクトがあります。AppServer と AppClient (AppServer への Web サービス参照を含む) です。アプリケーションの実行中は、Web ブラウザーを使用してサービスにアクセスできます。

準備ができたときにホストを IIS に切り替えるのが難しくないように、サービスを簡単に自己ホストするにはどうすればよいですか?

ServiceHost で遊んでみましたが、Windows フォーム アプリであり、ラグとタイムアウトが発生するため、うまく機能しませんでした。

Uri httpUrl = new Uri("http://localhost:53333/AppServer.svc");
ServiceHost host = new ServiceHost(typeof(AppServerClient), httpUrl);
host.AddServiceEndpoint(typeof(IAppServer), new WSHttpBinding(), "");

ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);

host.Open();

別のスレッドでサービスを実行するコードを見つけました: http://www.codeproject.com/Articles/16299/Hosting-WCF-services-in-a-Windows-Forms-Applicatio

このコードをアプリケーションに追加しました (URL はサービス参照と同じです)

ThreadedServiceHost<AppServerClient, IAppServer> host = new ThreadedServiceHost<AppServerClient, IAppServer>("http://localhost:53333/AppServer.svc", "", new WSHttpBinding());

アプリケーションを実行すると、メッセージが表示されます

Http://localhost:53333/AppServer.svc connection impossible. 
TCP error code 10061: No connection could be made because the target machine 
actively refused it 127.0.0.1:53333.

Web ブラウザーを使用すると、次のメッセージが表示されます。サービスが作成されました。このサービスをテストするには、クライアントを作成し、それを使用してサービスを呼び出す必要があります。

サービスを a から z まで自己ホストする場合に適していると思われるチャネル ファクトリについて少し読みましたが、すぐに別のサーバーでホストされるため、アプリケーション内のサービスへのすべての呼び出しを変更する必要は避けたいと考えています。 .

その問題を解決するための助けをいただければ幸いです。

4

0 に答える 0