2011-12-17 13 views
0

Oracle Reportsをコールするためにアプリケーション・サーバーを使用していますが、レポートを呼び出すためのURLがあります。レポートが呼び出されると、サーバはそれをPDFに変換しますが、レポートに大量のデータが含まれていると読み込みに時間がかかります。 asp.netでレポートURLを呼び出すと、PDFファイルが開き、Webフォルダのルートにコピーされます。次にURLを呼び出すと、PDFファイルが開き、次の呼び出しのためにバックエンドに新しいPDFが作成されます。Webアプリケーションでのマルチスレッドの使用

私は、ファイル

Sub DownloadFile_Sap() 
     Dim remoteuri As String = "http://appsrv01.shakarganj.com.pk:7778/reports/rwservlet?reptest&report=sap_dashboard" 
     Dim filename As String = Server.MapPath("~/Files/rwservlet_reptest&report=sap_dashboard.pdf") 
     Dim mywebClient As New Net.WebClient() 
     mywebClient.DownloadFile(remoteuri, filename) 
    End Sub 

をダウンロードするには、この機能を作っていると私は、LinkBut​​tonコントロールの上に呼ばれる - コードが

Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LinkButton1.Click 
    ClientScript.RegisterStartupScript(Me.GetType(), "openfile", "window.open('http://202.125.144.34:83/Files/rwservlet_reptest&report=sap_dashboard.pdf');", True) 
     DownloadFile_Sap() 

    End Sub 

を下回っている。しかし、私はリンクボタンにこのメソッドを呼び出したときには、同じ時間を取得それはダウンロードファイルを取得しました。 Linkボタンがフォルダからファイルを1秒間に呼び出し、バックエンドでファイルをダウンロードするようにするにはどうすればよいですか?

リンクボタンのコードはここに

<asp:linkbutton ID="Linkbutton1" runat="server" PostBackUrl="~/Files/rwservlet_reptest&report=sap_dashboard.pdf" OnClick="DownloadFile_Sap" >LinkButton</asp:linkbutton> 

答えて

0

Multithreading asp.netのWebアプリケーションでは良い考えではありません。

IIS thread poolのソースが限定されています。このような操作でこれを使用しようとすると、 の生産に深刻な問題が発生します。

だから何をすることができますか?Windows serviceに分割してください。すべての高価な操作をWindowsサービスアプリケーションで行います。あなたのWebアプリケーションとWindowsサービスアプリの間の通信をsql tableで行います。

EDIT:このためここでは

パス:

あなたは、Visual Studioに
1 - ウェブアプリ(あなたがalradyそれを持っている)
2 - として実行される新しいプロジェクトを投影していますWindowsサービス。あなたは、SQLテーブル含む必要があります次に


REPORT_NAMEを、Ready_Flag

ウェブアプリからあなたがあれば、ウェブアプリReady_Flagから照会でき作製し、真
にReady_Flagに設定されているWindowsサービスのレポートからREPORT_NAME
を埋めますtrueに設定されていると、 あなたはクライアントにサービスします

+0

私はどのようなビット例を教えてくださいので、私はコードが次に行うことを考えています –

+0

私はデータベースフラグメソッドを理解しましたが、Windowsサービスは何ですか? –

+0

私はバックエンドではなく、ユーザーの前 –

0

あなたが事前PDFを作成し、ディレクトリに保管しても、あなたは、ダウンロード時間を短縮することができないです。ダウンロード時間は短縮できないと思っていますが、あなたが言ったように、PDFはリクエストの前に作成してディレクトリに置くことで減らすことができます。

+0

私は1つのトリガーでディレクトリからファイルを呼び出したいと同時に、バックエンドでファイルをダウンロードしたいのですが、これを行うイベントや方法を教えてくださいダウンロード時間はバックエンドで使用しないでください –

関連する問題