[回到版面]
回應模式
名 稱
內 文
附加圖檔[] []
  • 可附加圖檔類型:GIF, JPG, JPEG, PNG, WEBM,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 3072 KB。
  • 當檔案超過寬 125 像素、高 125 像素時會自動縮小尺寸顯示
  • 目前附加圖檔使用量大小: 151342 KB / 500000 KB
  • 回覆時程式碼縮排會被trim消掉,請善用[code][/code]標色或貼到ideone等網站
  • LaTeX記法可以用「$$」或「\( \)」包起來,例如「$\sum_{k=1}^{k=n} k^2 = \frac{n(n+1)(n+2)}{6}$」
  • 投稿時請點擊畫像認證後,再按下 [送出] 按鈕提交。
  • 鬧板、攻擊性發言、煽動性發言請無視(回應者也無視),並使用del或在貓管理部向管理員回報。
  • 新介面尚處於測試階段,如果有任何問題可以向管理員或於程設交流版反映。

檔名:1534761120424.png-(3052 KB, 3840x2160)
3052 KB
IIS上呼叫另一個程式執行轉PDF動作無名18/08/20(一)18:32:00 ID:ucuEAusANo.12835
我是之前問轉PDF的。因為客戶大概年底才要這功能,所以後來就沒再忙這邊。

本公司有一個頁面可以看到報表資料,內容大概是某種考試的成績之類,然後客戶
希望在網頁上按一個按鈕就可以把這個頁面原封不動的轉成PDF。
大致上已經確定是用pdfcrowd.com 或是 sejda.com' 的轉pdf工具。問題在於客戶一轉
可能就是一兩百個。目前的問題是我該如何讓web api通知電腦開始執行動作之後回傳進
行中的訊號給網頁?
無名18/08/20(一)21:17:22 ID:EBtTCS8UNo.12836
Websocket

或者舊時代的作法
前端一直(每秒打一次ajax之類的)去問server進度到哪或做好了沒
無名18/08/21(二)10:34:16 ID:hcg.5f0YNo.12837
XX.aspx


//收到請求
/*
有問題的是中間這段
*/
for(){
轉pdf N次
}

存檔
回傳在伺服器上的檔案網址


>>前端一直(每秒打一次ajax之類的)去問server進度到哪或做好了沒

有想過這樣做,寫出了像上面這段的程式碼。但是卡在ASPX沒執行完畢的
話不會回傳webRequest結束的訊號給前端,網頁也會一直卡在那邊(jQuery也不會進入success)。

目前可以寫出的虛擬馬大概是:

//某API

string type=Request.QueryString["type"]

switch(type){
case "request":
//像機器上的另一個APP或任何東西送出開始動作訊號 <= 這段最有問題
Response.Write("working on it");
Response.Flush();
Request.End();
break;
case "done?":
//檢查另一個APP或任何東西是否已完成任務
if(任務完成){
//回傳網址給前端下載
}else{
Response.Write("not yet");
Response.Flush();
Request.End();
}
break;
case "get_files":
//檢查檔案是否存在
//開啟stream,回傳之前產生的所有pdf
break;
}



目前有問題的部分就是要如何通知另一個程式或是讓系統在另一個執行緒
上處理轉pdf的動作然後回傳訊號。每幾秒發一個ajax基本上是必然,問題是
第一個送出的該如何處理...
無名18/08/21(二)19:33:30 ID:lQBaJENANo.12838
>>12837
關鍵字大概是 background job/ background task

// 接到轉換請求
// --> request in

// queue 這個 function 不會實際去做事所以不會卡住
// job_id 可以傳回前端 讓前端可以再拿來問
string job_id = SomeBackgroundServices.Queue('some job name', 'some job attributes')

// <-- response out
// -----------------------------------------------
// 詢問工作完成
// --> request in

// 利用前端傳來的 job_id 來找對應的 job 完成了沒 再把結果傳回前端
bool isDone = SomeBackgroundServices.CheckJobStatus(job_id)

// <-- response out


上面的 function 都是隨便寫的
實際請參考使用的library文件
無名18/08/22(三)23:01:29 ID:aBuUB/cgNo.12839
檔名:1534950089269.png-(82 KB, 600x550)
82 KB
關鍵字:
非同步、COOKIE
無名18/08/25(六)11:27:47 ID:j/kIgPyENo.12841
用SignalR啦
簡單的要命
你那種十幾二十年前的想法快丟到海裡去了啦
無名18/08/26(日)01:39:15 ID:4B40WjisNo.12843
>>12841
有的時候公司的架構不是說改就可以改的。
無名18/08/26(日)03:20:17 ID:2apH.mZ.No.12844
>>12843
HI
樓主提到webapi又提到aspx
很明顯他環境應該是OK的
就算SignalR2.x版run不了
也是能去用SignalR1.x版的
當然我不會去提到要他去玩出沒多久的SignalR Core版的
無名18/08/28(二)12:01:32 ID:RmeJrBrgNo.12845
>>No.12839

抱歉,我的重點是伺服器要做啥才能達成工作發下去
之後就回傳工作編號。

>>12841

感謝,我能理解那種想要推新技術的心情。不過我這邊上樑不正
,亂七八糟的程度非一般公司可比。要換要改也要等整理好。而且
舊技術沒甚麼不好。使用情境對了就對了。

>>你那種十幾二十年前的想法快丟到海裡去了啦

以前我也會這樣想。現在則是跟前面說的一樣,舊技術沒啥不好,
情境對了就對了。我是覺得這幾年的東西提昇都是方便開發為主,
實際上核心沒變過。基本上沒有硬要用新技術的需求。

>>No.12838
感謝關鍵字,幫大忙了,找到IIS API裡面這東西。
果然微軟就是存心寵壞開發者。
docs.microsoft.com/en-us/dotnet/api/system.web.hosting.hostingenvironment.queuebackgroundworkitem?redirectedfrom=MSDN&view=netframework-4.7.2#System_Web_Hosting_HostingEnvironment_QueueBackgroundWorkItem_System_Action_System_Threading_CancellationToken__

不過這陣子其他雜項又下來了,應該過一陣子才有機會再回來研究這
些吧。
無名18/08/28(二)17:30:38 ID:XF2cLvTINo.12846
>>12845
你在說的就是非同步你知道嗎?....
無名18/08/28(二)19:47:03 ID:RmeJrBrgNo.12847
>>12846

非同步這詞從網頁AJAX一路到多執行緒都有類似用
法,Google出來只會是通識層級的東西。AJAX更是
天天在用。
無名18/08/28(二)20:55:24 ID:WI15UshINo.12848
>>12847
感覺你有一點前後端混淆
無名18/09/12(三)17:18:08 ID:yQ8QZXMMNo.12859
>>12848
async現在還有分前後端?
無名18/09/19(三)11:53:42 ID:ve7tMz6QNo.12871
>>12845
山不轉路轉啊
不用伺服器批次轉檔
用流灠器一次發送一個轉檔訊號
完成就計次再發下一個
最後再發個製成壓縮檔訊號
然後提供下載網址


【刪除文章】[]
刪除用密碼: