国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于Roslyn的遠程任務平臺

2019-11-17 03:14:14
字體:
來源:轉載
供稿:網友

基于Roslyn的遠程任務平臺

前一段時間,有一個天真的想法。我想將一個Action或者Func傳輸到遠程機器上執行。有很多問題。委托執行的上下文怎么復制。開始是想將委托所在的DLL和引用的DLL一起傳輸到遠程機器上。這樣一來,上下文環境不就有了嗎。當然在GAC里的DLL就不用傳輸了,傳輸對象只限于自定義的DLL。可是這樣做十分的麻煩也沒有必要。后來在微軟成立基金會的那天,偶然看到了Roslyn。它可以將一段字符串解析,編譯。利用Rolyn的擴展,甚至可以直接執行一段字符串代碼。太神奇了。于是就有了下面這個項目的想法。首先,先給各位看張圖。看看我的大概思路。

  1. 首先,會發送一個消息對象到服務端監聽程序。這個對象里包含有任務ID、要被動態編譯的字符串代碼、及引用的程序集(GAC中的不再其中)、路由信息。目前所有任務都是統一的一種處理方式,將字符串代碼編譯生成DLL。保存到本地文件系統中,然后經過一些列管道中自定義模塊的處理。將任務信息最終分發到指定的進程中去處理。以后可能會添加其他的任務處理方式。比方說,不持久化生成DLL。直接將字符串代碼經過Roslyn和其擴展動態執行。也可以不經過路由平臺將任務分發到指定的進程中。暫時沒有想到其他的。
  2. 其中應用到的設計理念有類似于asp.net路由機制、管道設計、對象池(每一個請求就會new一個RemoteTaskAppliction,為了減輕壓力,所以就有了對象池的設計。如果對象池中的對象超過了對象池最大容量,那么該請求就會排隊等待有對象被釋放到池中再進行處理。)、對于請求的隊列控制(和對象池搭配使用,只有當有空閑空對象可以進行處理的時候,才會將請求出隊)。類似于IHttpModule的實現(在整個RemoteTaskapplication的生命周期內,定義了一系列的事件可供自定義的Module注冊,達到對請求的控制。目前可能就有日志模塊、安全模塊)

這個項目還沒完全寫完。最后引用Github的一句話。Build software better, together。該項目,我已經放在github上。地址是 https://github.com/freestyleSago/RemoteTaskPlatform

這個項目呢,對我來說,它的鍛煉目的大于它的實際價值。所以也希望各位大神多多指點。蔣金楠(Artech)老師真是太牛了。多看他的文章,相信大家也會有收獲。目前Roslyn和C#6.0的資料都太少,不過我覺得,有了Roslyn就可以將C#變成腳本語言了。解析執行。也許意義不大,性能很差。但是很酷啊。也算是圓了我的一個夢啊,給你一段字符串,你就給我執行。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉寿县| 田东县| 石楼县| 马公市| 永丰县| 普陀区| 大城县| 西畴县| 洪江市| 九龙城区| 五华县| 新蔡县| 乐平市| 凤翔县| 纳雍县| 阿克苏市| 抚远县| 勃利县| 称多县| 彭阳县| 四川省| 淮安市| 读书| 吴川市| 闽清县| 富顺县| 邢台市| 贵德县| 辉县市| 马边| 朝阳区| 汾西县| 青州市| 汨罗市| 马龙县| 樟树市| 凤冈县| 贞丰县| 怀化市| 泾川县| 德安县|