ここに私の問題があります。私は、booking.com や expedia.com などと同じように、ユーザーが世界中のホテルを予約できる Web サイトを開発しています。
ユーザーが特定の都市のホテルを検索すると、Web サービスを介してさまざまなプロバイダーに接続し、結果を表示します。ほとんどすべてのプロバイダーで、これは次のことを意味します。
1) WS でメソッドを呼び出して、選択した日付で市内の利用可能なホテルを返します。これらの各ホテルについて:
- 2) 非常に大きな XML ファイル (通常は 2 つ以上) から読み取り、住所、電話、ファックス、説明、サービスなどの静的情報を取得します。
- 3) WS で 2 番目のメソッドを呼び出して、利用可能な部屋の情報を取得します。
- 4) 結果表示
私が抱えている問題は、これらの Web サイトの重要な要素であるページの読み込み時間に関係しています。
WS への最初の呼び出し (ポイント 1)、それは必要なことであり、私にできることはあまりないので、今回は受け入れなければなりません。他の 2 点も必要ですが、私の意図は、読み込み時にホテルを表示することで、ユーザー エクスペリエンスを向上させることです。
ブエノスアイレスのホテルを探しているとしましょう。目的地に「Buenos Aires」と入力し、「Buscar」ボタンを押します。お気づきかもしれませんが、次のページが完全にロードされるまで、ロード中のメッセージが表示されます。すべてのホテルが読み込まれるのを待つ代わりに、私がやりたいことは、ユーザー エクスペリエンスを向上させることだと思います。
- ユーザーが「Buscar」ボタンを押すと、すぐにユーザーを HotelList ページに送ります
- 各ホテルの情報が取得されると表示され、上部に「XXX ホテルの 1 つを読み込み中」...「XXX ホテルの 2 つを読み込み中」のようなメッセージが表示されます...
これを達成する方法を説明する ajax の例を探していましたが、明確な記事は見つかりませんでした。誰かが私を正しい方向に向けることができれば、本当に感謝しています。
ありがとう!
-------------------------------------------------- -------------------------
マルチスレッドを使用しようとしましたが、結果が表示されません。リテラル コントロールを使用して結果を表示しています。コードの一部を次に示します。
ホテルリスト.aspx
<asp:Literal ID="HotelesResultadoBusqueda" runat="server"></asp:Literal>
HotelList.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
...
...
ThreadStart job = new ThreadStart(CargarHoteles);
Thread thread = new Thread(job);
thread.Start();
}
private void CargarHoteles()
{
// Load Hotels
ArrayList hotels = WebService......
foreach(Hotel hotel in hotels)
{.....}
....
this.HotelesResultadoBusqueda.Text = "...";
}