0

.net ベースの Web サービスを公開するために使用される asp.net システムを構築しています。

ロジックは単純です。App_Data フォルダーの下に、さまざまな種類の Web サービス テンプレートがあります。

たとえば、アプリケーションの URL は次のとおりです。http://localhost/serviceManager

そして、これは私たちのアプリケーションのフォルダです:

App_Data
   ws1.zip
   ws2.zip
Bin
modules
service
web.config

注: このシステムに最初にアクセスした場合、「サービス」ディレクトリが iis の「アプリケーション」であるかどうかを確認します。そうでない場合は、作成します。

私たちのシステムを通じて、ユーザーはいくつかの必要な情報 (特に「test」などのサービス名) を段階的に入力することができ、後で使用するためにそれらを収集します。

test次に、ディレクトリの下に名前の付いたフォルダーを作成しservice、それに応じて Web サービス テンプレート (ws1.zip など) を見つけ、testフォルダーのコンテンツを抽出し、取得した情報に応じて web.config ファイルを変更します。

最後に、IIS でtestを として設定します。application

これで、アプリケーションのフォルダーは次のように変更されます。

App_Data
   ws1.zip
   ws2.zip
Bin
modules
service
  test
    App_Data
    service.asmx
    web.config(filled with gathered information)
web.config

そして、新しい Web サービスがデプロイされ、これを使用してアクセスできます。

http://localhost/serviceManager/service/test/service.asmx (note,the service.asmx exist in every template)

これが私たちにできることです。

ただし、クライアントには現在、さらに要件があります。

1. 作成したサービスから管理者システムを分離します。

クライアントは、作成したサービスをインターネットにマッピングし、管理システムをイントラネットのみに保持したいので、これはセキュリティのためです。

ご覧のとおり、作成されたサービスはマネージャー アプリケーションの下に配置されます。それらを別のポートにデプロイする必要があります (iis では、別のポートは別の Web サイトを意味しますよね?)。

たとえば、アプリケーションの URL は変更されません。http://localhost/serviceManager

ただし、作成されたサービスは次のように変更されます。http://localhost:8888/service/test/service.asmx

2. クラスターを実装する (特に作成したサービスの場合)

作成するサービスはマス指向なので、パフォーマンスを考慮すると、クライアントにはクラスターが必要です。

ただし、IIS クラスターのようなものは見つかりませんでしweblogicた。そのため、サービスが作成されたらそのコピーを作成し、同じポートと仮想コンテキスト名を持つ別のサーバー (クラスター ノード) に配置する唯一の方法だと考えています。

もしそうなら、投稿トピックとして別のマシンのiisで「アプリケーション」を作成する必要があります。

今はわからないのですが、誰か提案してもらえますか?

ところで、iis6 - iis7.5 をサポートする必要があります。

4

1 に答える 1

0

私はこの質問の質問者です。

今のところ完全な解決策は見つかっていません。しかし、私たちはいくつかの仕事をしました。

asp.net アプリケーションは、ウィンドウ インストーラーとしてパッケージ化されています。アプリケーションがインストールされると、いくつかの必要なジョブが実行されます。

1 8000 (サービス マネージャー用) と 8001 (作成されたサービス用) のような異なるポートで 2 つの Web サイトを作成します。

2 8001 の Web サイトのルート ディレクトリを Windows 共有フォルダとして作成します。

3 という名前の iis アプリケーションをデプロイしますIISManager。このアプリケーションは、IIS アプリケーションとして、Web サイトのルート ディレクトリ配下にフォルダを作成する Web サービスです。

ユーザーがアクセスすると、次のようになります。

http://ip:8000/servicemanager、テンプレートに従ってサービスを作成します。

次のことを行います。

1 抽出および構成されたフォルダーを、ウィンドウ共有フォルダーによって別のクラスター ノードにコピーします。

2 サービスを1つずつ呼び出して、IISManagerステップ1のフォルダーをIISアプリケーションとして作成します。

ステップが成功すると、新しく作成されたサービスにアクセスできます。

http://ip:8001/servicename/service.asmx

それが私たちが今やったことです。

しかし、まだ多くの問題があります。

1IISManager毎回うまくいかず、iisアプリケーションの作成に失敗することがあります。

2 異なるノードで作成されたサービスは完全に別のアプリケーションであるため、一部のセッション共有ジョブを実行するのは困難です。

誰かがより良い解決策を持っていることを願っています、

于 2013-07-13T01:54:16.790 に答える