西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索
缂侇垵宕电划鍝勵啅閵夈儱寰�
U濠㈠爢鍐憥v4.7.37.56 闁哄牃鍋撻柡鍌涘婢э拷U濠㈠爢鍐憥v4.7.37.56 闁哄牃鍋撻柡鍌涘婢э拷
HD Tune  Prov5.75 婵懓顦€佃尙绱掗懗顖氼棌闁绘鎳撻崺鍡涙偋閿燂拷HD Tune Prov5.75 婵懓顦€佃尙绱掗懗顖氼棌闁绘鎳撻崺鍡涙偋閿燂拷
DiskGenius 濞戞挻鎸风粭鐔兼偋閸︼拷5.2.1.941 閻庤蓱閺岀喖鎮ч敓锟�DiskGenius 濞戞挻鎸风粭鐔兼偋閸︼拷5.2.1.941 閻庤蓱閺岀喖鎮ч敓锟�
360閺夌儐鍨▎銏㈢不閳ユ剚鍟€v7.5.0.1460 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�360閺夌儐鍨▎銏㈢不閳ユ剚鍟€v7.5.0.1460 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Cpu-Z濞戞搩鍘介弸鍐偋閸э拷1.98.0 缂備浇鍎绘竟濠冪▔椤撶喐鐎柣妤嬫嫹Cpu-Z濞戞搩鍘介弸鍐偋閸э拷1.98.0 缂備浇鍎绘竟濠冪▔椤撶喐鐎柣妤嬫嫹
缂傚啯鍨圭划璺侯啅閵夈儱寰�
闁煎灚宕橀鍡涙偨娴e啫澹嬬紒鐘偓鎰佸晙V15.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闁煎灚宕橀鍡涙偨娴e啫澹嬬紒鐘偓鎰佸晙V15.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
office2016婵犵鍋撴繛鑼额嚙娴兼劙宕楃粚鏀巗v19.5.2 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�office2016婵犵鍋撴繛鑼额嚙娴兼劙宕楃粚鏀巗v19.5.2 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
閺夆晛鎳樺ù锟�11闁哄牃鍋撻柡鍌涘婢ф11.3.6.1870 閻庤蓱閺岀喖鎮ч敓锟�閺夆晛鎳樺ù锟�11闁哄牃鍋撻柡鍌涘婢ф11.3.6.1870 閻庤蓱閺岀喖鎮ч敓锟�
360闁稿繐绉烽崹鍊僫fi5.3.0.5000 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�360闁稿繐绉烽崹鍊僫fi5.3.0.5000 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
360閻庣懓顦崣蹇撁硅箛姘兼綌闁革綇鎷�2022v13.1.5188.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�360閻庣懓顦崣蹇撁硅箛姘兼綌闁革綇鎷�2022v13.1.5188.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
濠㈣埖鑹鹃悰鐔告媴閹炬儼顫�
闂佷即鏀遍崹婊堟閸忓懐顔囬柣鈺嬫嫹2022v9.1.6.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闂佷即鏀遍崹婊堟閸忓懐顔囬柣鈺嬫嫹2022v9.1.6.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁哄棙鎸抽ˉ鎾广亹闁秶鍙�2021V5.81.0202.1111閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闁哄棙鎸抽ˉ鎾广亹闁秶鍙�2021V5.81.0202.1111閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闊浂鍋呴幐锟�5.0婵﹢鏅茬粭澶愬础閸モ晠鐛撻柣妤嬫嫹5.0.80 濡ょ姰鍔岄妵鏃堟偋閿燂拷闊浂鍋呴幐锟�5.0婵﹢鏅茬粭澶愬础閸モ晠鐛撻柣妤嬫嫹5.0.80 濡ょ姰鍔岄妵鏃堟偋閿燂拷
濞村吋锕㈤崣锟�2022閻庡箍鍨洪崺娑氱博閻わ拷8.0.9.11050 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�濞村吋锕㈤崣锟�2022閻庡箍鍨洪崺娑氱博閻わ拷8.0.9.11050 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁绘牕宕〃宀勬嚌妤︽娼掑Λ鐗堝弳13.1.5閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闁绘牕宕〃宀勬嚌妤︽娼掑Λ鐗堝弳13.1.5閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁搞儲鍎抽懜浼村炊閹冨壖
photoshop cs6 濞戞搩鍘介弸鍐偋閿燂拷13.1.2.3 闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹photoshop cs6 濞戞搩鍘介弸鍐偋閿燂拷13.1.2.3 闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹
Autodesk 3ds Max 2012閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢ф32&64]Autodesk 3ds Max 2012閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢ф32&64]
CAD2007闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹CAD2007闁稿繐绉烽崹鍌涚▔椤撶喐鐎柣妤嬫嫹
vc閺夆晜鍔橀、鎴炴償閿燂拷2019闁哄牃鍋撻柡鍌涘婢ф2019.3.2(32&64濞达綇鎷�)vc閺夆晜鍔橀、鎴炴償閿燂拷2019闁哄牃鍋撻柡鍌涘婢ф2019.3.2(32&64濞达綇鎷�)
.NET Framework 4.8閻庤蓱閺岀喖鎮ч敓锟�4.8.3646.NET Framework 4.8閻庤蓱閺岀喖鎮ч敓锟�4.8.3646
闁煎崬锕ら妵澶愭嚂閺冨倻鎹�
QQ2022v9.5.6.28129 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�QQ2022v9.5.6.28129 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
鐎甸偊鍠曟穱濠囨偨娴e啫澹嬮柣妤嬫嫹2022v3.5.0.44 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�鐎甸偊鍠曟穱濠囨偨娴e啫澹嬮柣妤嬫嫹2022v3.5.0.44 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁告鍟版晶浼村础閺嵮屽晙鐎规悶鍎扮紞鏃堢嵁閸愭彃閰眝9.02.02N 閻庤蓱閺岀喖鎮ч敓锟�闁告鍟版晶浼村础閺嵮屽晙鐎规悶鍎扮紞鏃堢嵁閸愭彃閰眝9.02.02N 閻庤蓱閺岀喖鎮ч敓锟�
QT閻犲浂鍙冮悡绂�4.6.80.18262閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�QT閻犲浂鍙冮悡绂�4.6.80.18262閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
濡炲鍋樻穱锟�2018V6.2.0700 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�濡炲鍋樻穱锟�2018V6.2.0700 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁告柣鍔嬬紞鏂裤€掗崨濠傜亞
濞撴氨濮峰ú宥嗩槹閻愯埖绨犵紓鍐句簼娴兼捇鏌堥挊澶岊伋
濡ょ姵鍨块埞鍫熺▔鎼达絿鍩嗛柡澶嗗亾缂備胶绻濋崥顐㈩嚗娴h绠�
闁惧繑鍔栧ḿ鍐储閻旂柉鍩�2
濞寸姰鍎查幏濠氭儍閸曨厾娉㈤柛姘炬嫹
闁哄鍋撻柟纰夋嫹5閻犙嶇畱閸橈拷
FPS閻忓繐瀚崵锟�
H1Z1濞戞搩鍘介弸鍐偋閿燂拷
閻庢稏鍊曢惌婵嬪箚婵犲洨鎼�3
濞戞挸顦抽~妤€煤閼碱剙顥楃紒澶婄Ч閸庢挳姊奸敓锟�6闁瑰瓨锕㈠Σ锔界▕鐎n亜鐎�
濞达絽鐏濋幊锟犲矗椤掆偓閺侊拷8:闁绘粓顣﹂崬顒勫箣濡湱鎸�3
闁告艾鐗撻崳鍓ф啑閸涱収妲�5:妤犵偠宕靛Λ锟�
缂佹梻鍋ら埀顒傚枑閻栧爼骞嬮敓锟�
婵炲柌鍕哎闁告銈嗙盃婵☆垪鍓濈€氾拷2
闁哄啫顑堝ù鍡樻姜椤斿灝鍓�
闁哄绀侀幖褎顦伴悙鑸电盃18
缂佷胶鍋涙慨蹇曠矓閹达絽绗�
F1 2015
闁告劖甯″▍鎾斥柦濞嗘垶纾�
闁瑰瓨鍨瑰▓鎴炵▔閺嶎偅娅�1.8.2
婵炲澧楁刊娲偡閻愭壆鑲�
濡ゆぜ鍎村畷锟�:婵炲鍏樺В锟�
闁哄嫮鍠撻弲顐f綇閻熼偊鏆�
闁哄牃鍋撻柛姘捣閺佹挻娼诲Ο搴撳亾閸栫徎闁绘鎷�
缂佹稒鐗滈弳鎰€掗崨濠傜亞
闁哄倸娲﹀Σ锟�5:缂傚洤绨奸梽鍕棘妫颁胶鐟柣锝忔嫹
濞戞挸顦ù妤勭疀閿燂拷12濠电偘绀佹慨蹇涘礉閻樻彃绻侀柣妤嬫嫹
濞e浄绻濋弳杈ㄧ▕鐎n喖娅i柡鍫嫹14濠电偘绀佹慨蹇涘礉閻樻彃绻侀柣妤嬫嫹
闂傚啯瀵цぐ渚€骞忛敓锟�:闁稿繈鍔戝ḿ浼村箣濡湱鎸�
閻㈩垱绻傚ù妤呭籍閺堥潧鏁�2鐎甸鐒﹀﹢鍥嚀閿燂拷
闁汇垻鍠愬鍧楀嫉瀹ュ懎顫�
闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷
闁谎勫劤鐎规娊宕烽弶鎸庣閻庝絻澹堥崺锟�2022V15.12.10 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹闁谎勫劤鐎规娊宕烽弶鎸庣閻庝絻澹堥崺锟�2022V15.12.10 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹
闁归潧顑嗗┃鈧繛锝喢悿鍌溾偓骞垮灪閸╂稓绮╅惀锟�10.8.40閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁归潧顑嗗┃鈧繛锝喢悿鍌溾偓骞垮灪閸╂稓绮╅惀锟�10.8.40閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁伙絽鎳橀埀顒佹⒒缂嶅骞嶇€n偅绨氶悗骞垮灪閸╂稓绮╅惀锟�5.6.9 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁伙絽鎳橀埀顒佹⒒缂嶅骞嶇€n偅绨氶悗骞垮灪閸╂稓绮╅惀锟�5.6.9 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁告鍟虫禍浼存儗閵夈劎妲曢柡鍫濈Т婵剬ppv4.5.1閻庤蓱閺岀喖鎮ч敓锟�闁告鍟虫禍浼存儗閵夈劎妲曢柡鍫濈Т婵剬ppv4.5.1閻庤蓱閺岀喖鎮ч敓锟�
鐟滀即浜堕悡鍫曞箻椤撶喐鏉�
p2psearcher閻庣懓顦畷婊堟偋閿燂拷7.3  闁归潧顑嗗┃鈧柣妤嬫嫹p2psearcher閻庣懓顦畷婊堟偋閿燂拷7.3 闁归潧顑嗗┃鈧柣妤嬫嫹
闂佷即顥撶€氬秹妫呴崗鍛唶2022閻庤蓱閺岀喖鎮ч崷锟�11.0.8 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闂佷即顥撶€氬秹妫呴崗鍛唶2022閻庤蓱閺岀喖鎮ч崷锟�11.0.8 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁绘牕宕〃宀勬嚌閻戞ê顤侀柡鍫f婢ф13.1.0闁绘牕宕〃宀勬嚌閻戞ê顤侀柡鍫f婢ф13.1.0
闁谎勫劤鐎瑰疇銇愰柆宥囧従7.13.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁谎勫劤鐎瑰疇銇愰柆宥囧従7.13.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
鐟滀即浜堕悡鍫曞礂閸儲鏁眝6.9.0 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹鐟滀即浜堕悡鍫曞礂閸儲鏁眝6.9.0 閻庣懓顦畷婊堝箥鐎n偅绨氶柣妤嬫嫹
闂傚啫鎳撻鏉款啅閵夈儱寰�
闁煎灚宕橀鍡涘礉閵婏附鐎琕9.11.5 閻庣懓顦畷婊堟偋閿燂拷闁煎灚宕橀鍡涘礉閵婏附鐎琕9.11.5 閻庣懓顦畷婊堟偋閿燂拷
濞戞棑闄勫Λ妤冧焊韫囨凹鍤涢柛蹇撶Х閸ㄥ倿鎮ч崼鐔告嫳v11.5.5.153 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�濞戞棑闄勫Λ妤冧焊韫囨凹鍤涢柛蹇撶Х閸ㄥ倿鎮ч崼鐔告嫳v11.5.5.153 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
QQ闂傚啫鎳撻浼村闯閳烘及pV7.7.1.910 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�QQ闂傚啫鎳撻浼村闯閳烘及pV7.7.1.910 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁硅櫕甯婂Ч澶愭偩閸涱厽鍎旈柛姘煎厸閸旂剬ppv7.1.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闁硅櫕甯婂Ч澶愭偩閸涱厽鍎旈柛姘煎厸閸旂剬ppv7.1.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
閻犙囶棑閸嬶絿鎷犵拋鍐插app闁哄倹澹嗘晶妤呭嫉閿燂拷20227.9.186 閻庣懓顦畷婊堟偋閿燂拷閻犙囶棑閸嬶絿鎷犵拋鍐插app闁哄倹澹嗘晶妤呭嫉閿燂拷20227.9.186 閻庣懓顦畷婊堟偋閿燂拷
闂佸弶鍨奸悗娲偠閸℃艾鍋�
妤犵偛鍟块悾銊ф嫚娴gǹ鐓栭悗鐟扳€﹂柣鐐叉閸屸晵9.1.0.1 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷妤犵偛鍟块悾銊ф嫚娴gǹ鐓栭悗鐟扳€﹂柣鐐叉閸屸晵9.1.0.1 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
婵炲鍏橀埀顒佷亢閻﹀宕氶崨濠傤杹闁哄牐娅f晶锟�(e婵炲鍏橀埀顒佷亢閸岋拷)8.71 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷婵炲鍏橀埀顒佷亢閻﹀宕氶崨濠傤杹闁哄牐娅f晶锟�(e婵炲鍏橀埀顒佷亢閸岋拷)8.71 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
濞戞挻绮嶉幑锝囨嫚娴gǹ鐓栧☉鎾寸矋閹癸綁鎮堕崱姘亶4.0.5 閻庣懓顦畷婊堟偋閿燂拷濞戞挻绮嶉幑锝囨嫚娴gǹ鐓栧☉鎾寸矋閹癸綁鎮堕崱姘亶4.0.5 閻庣懓顦畷婊堟偋閿燂拷
濞戞搩鍙冮幗杈╂嫚娴gǹ鐓栫紒澶庮嚙婵晠鎮堕崱姘亶閺夌儐鍨▎锟�6.02.010 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷濞戞搩鍙冮幗杈╂嫚娴gǹ鐓栫紒澶庮嚙婵晠鎮堕崱姘亶閺夌儐鍨▎锟�6.02.010 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁告閰g欢宕囨嫚娴gǹ鐓栭悘蹇撶箻閸i箖骞嶇€n偅绨氶柣鐐叉閸屻劍娼娆愵偨3.2.4 閻庣懓顦畷婊堟偋閿燂拷闁告閰g欢宕囨嫚娴gǹ鐓栭悘蹇撶箻閸i箖骞嶇€n偅绨氶柣鐐叉閸屻劍娼娆愵偨3.2.4 閻庣懓顦畷婊堟偋閿燂拷
闁归潧顑嗗┃鈧梺鐐劶椤拷
缂佸倸绻愮紓鎾诲礃濠婂嫭缍戝ǎ鍥风磿閺併倗绮堥悙顒€顤侀柡鍫熸そ閹借京鎮扮仦绛嬪悅闁规挳顥撻锟�2.3.4 閻庣懓顦畷婊堟偋閿燂拷缂佸倸绻愮紓鎾诲礃濠婂嫭缍戝ǎ鍥风磿閺併倗绮堥悙顒€顤侀柡鍫熸そ閹借京鎮扮仦绛嬪悅闁规挳顥撻锟�2.3.4 閻庣懓顦畷婊堟偋閿燂拷
闁哄嫭鎸搁崺妤佹媴濠婂棭娼掑Λ鐗堝灥婢光偓閺夊牊鍙p4.1.16閻庣懓顦畷婊堟偋閿燂拷闁哄嫭鎸搁崺妤佹媴濠婂棭娼掑Λ鐗堝灥婢光偓閺夊牊鍙p4.1.16閻庣懓顦畷婊堟偋閿燂拷
闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷闁衡偓椤栨瑧甯涢悗瑙勭箞閹稿爼宕犻敓锟�(Alipay)V10.2.53.7000 閻庣懓顦畷婊堟偋閿燂拷
濞戞搩鍘煎ù妤€顔忛妷銉︽珜闂佺偓鍎奸、鎴﹀箥鐎n偅绨氶梺鐐劶椤㈡叧ppV7.0.1.2.5 閻庣懓顦畷婊堟偋閿燂拷濞戞搩鍘煎ù妤€顔忛妷銉︽珜闂佺偓鍎奸、鎴﹀箥鐎n偅绨氶梺鐐劶椤㈡叧ppV7.0.1.2.5 閻庣懓顦畷婊堟偋閿燂拷
濞戞搩鍘煎ù妤呮煣閹偊鏀介柟闈涱儐濠р偓闂佺偓鍎奸、鎴犫偓骞垮灪閸╂稓绮╅敓锟�7.2.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷濞戞搩鍘煎ù妤呮煣閹偊鏀介柟闈涱儐濠р偓闂佺偓鍎奸、鎴犫偓骞垮灪閸╂稓绮╅敓锟�7.2.5 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
濞村吋鍨垮Λ浠嬫儎婵犲啯顏�
闁煎灚宕橀鍡涙偖鎼淬劌顨欓弶鍫濆綖濮瑰骞嶇€n偅绨氶柣妤€婀�2.3.0.0 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷闁煎灚宕橀鍡涙偖鎼淬劌顨欓弶鍫濆綖濮瑰骞嶇€n偅绨氶柣妤€婀�2.3.0.0 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁告棁灏崹鍫曞炊閵忕姷鏆柡鍌濐潐椤掓粓鎮ч崼鐔奉杹婵炴挾顏�1.2.1閻庤蓱閺岀喖鎮ч敓锟�闁告棁灏崹鍫曞炊閵忕姷鏆柡鍌濐潐椤掓粓鎮ч崼鐔奉杹婵炴挾顏�1.2.1閻庤蓱閺岀喖鎮ч敓锟�
濡ゆぜ鍎甸妶鎸庛仈閵娾晛顨欓弶鈺傜☉鐎垫煡寮悩缁橆€欓梺鍊熷吹閻撳爼鎮ч崸锟�7.8.0.0閻庣懓顦畷婊堟偋閿燂拷濡ゆぜ鍎甸妶鎸庛仈閵娾晛顨欓弶鈺傜☉鐎垫煡寮悩缁橆€欓梺鍊熷吹閻撳爼鎮ч崸锟�7.8.0.0閻庣懓顦畷婊堟偋閿燂拷
婵$偛绉舵晶鎸庡緞瑜庨崹顒勫磽闂堟稒顢嶉柛蹇嬪妽濡叉垿寮伴敓锟�1.0.91 閻庣懓顦畷婊堟偋閿燂拷婵$偛绉舵晶鎸庡緞瑜庨崹顒勫磽闂堟稒顢嶉柛蹇嬪妽濡叉垿寮伴敓锟�1.0.91 閻庣懓顦畷婊堟偋閿燂拷
闁告柣鍔嬬紞鏃備焊閸曨偄姣�
闁革箓顣︾粭鍛村春鎼达絿宕愰柛鎴炴閳ь剙宕憈闁绘鎷�1.6.3 閻庤蓱閺岀喖鎮ч敓锟�闁革箓顣︾粭鍛村春鎼达絿宕愰柛鎴炴閳ь剙宕憈闁绘鎷�1.6.3 閻庤蓱閺岀喖鎮ч敓锟�
閻熶礁鎳愰弫鎶芥嚂閺冨倹绀�1.325.157 閻庣懓顦畷婊堟偋閿燂拷閻熶礁鎳愰弫鎶芥嚂閺冨倹绀�1.325.157 閻庣懓顦畷婊堟偋閿燂拷
闁革讣绲鹃弸鐔哥珶椤愶絾袝闁活厹鍨藉▔锔剧磼閹硷拷4.2.1 閻庣懓顦畷婊堟偋閿燂拷闁革讣绲鹃弸鐔哥珶椤愶絾袝闁活厹鍨藉▔锔剧磼閹硷拷4.2.1 閻庣懓顦畷婊堟偋閿燂拷
闂侇剦鍠栭妵锟�3D闁归潧顑嗛悥锟�1.0.9閻庣懓顦畷婊堟偋閿燂拷闂侇剦鍠栭妵锟�3D闁归潧顑嗛悥锟�1.0.9閻庣懓顦畷婊堟偋閿燂拷
濠靛妫冨Σ璇层€掗崨濠傜亞
閻庣懓顦畷婊冾渻瀹ュ洤鈷栧鍫嗗嫬鐏涢柛宥夋涧濡楋拷2濮掓稒鍨跺▓顐﹀籍閺堥潧鏁╁ǎ鍥跺枟閺佸ジ鎮ч崷锟�1.9.5 闁哄牃鍋撻柡鍌涘婢э拷閻庣懓顦畷婊冾渻瀹ュ洤鈷栧鍫嗗嫬鐏涢柛宥夋涧濡楋拷2濮掓稒鍨跺▓顐﹀籍閺堥潧鏁╁ǎ鍥跺枟閺佸ジ鎮ч崷锟�1.9.5 闁哄牃鍋撻柡鍌涘婢э拷
濞戞棁椴搁弸鐔烘啿閹稿海鍩�2v1.0.150閻庣懓顦畷婊堟偋閿燂拷濞戞棁椴搁弸鐔烘啿閹稿海鍩�2v1.0.150閻庣懓顦畷婊堟偋閿燂拷
濞e洦绻傚畷濂告媰濠靛棗妞�3闁哄啰濞€濡炬椽鏌﹂懡銈囧従闁哄牃鍋撻柡鍌涘婢ф2.0.0.1 閻庣懓顦畷婊堟偋閿燂拷濞e洦绻傚畷濂告媰濠靛棗妞�3闁哄啰濞€濡炬椽鏌﹂懡銈囧従闁哄牃鍋撻柡鍌涘婢ф2.0.0.1 閻庣懓顦畷婊堟偋閿燂拷
闁告瑱缍€椤d即鎳熼柆宥嗙闁告娲樺┃鈧柣妤嬫嫹1.2.0 閻庣懓顦畷婊堟偋閿燂拷闁告瑱缍€椤d即鎳熼柆宥嗙闁告娲樺┃鈧柣妤嬫嫹1.2.0 閻庣懓顦畷婊堟偋閿燂拷
閻忓繐绻愰惃顒勫礃濞戞ɑ绀嬮悗鐟邦槸瀹曟粓鎮ч敓锟�2.7.4 闁哄啰濞€濡炬椽鏌岄幋婵堫伈濞e浂鍠楅弫濂告偋閿燂拷閻忓繐绻愰惃顒勫礃濞戞ɑ绀嬮悗鐟邦槸瀹曟粓鎮ч敓锟�2.7.4 闁哄啰濞€濡炬椽鏌岄幋婵堫伈濞e浂鍠楅弫濂告偋閿燂拷
閻犙勭濠у懐绮╅悙鏉懳�
闁谎嗩嚙閸栨鎸у☉婊勭盃2闁归潧顑嗛悥锟�1.47.1  閻庣懓顦畷婊堟偋閿燂拷闁谎嗩嚙閸栨鎸у☉婊勭盃2闁归潧顑嗛悥锟�1.47.1 閻庣懓顦畷婊堟偋閿燂拷
濞戞挴鍋撻悹褔鏀卞ḿ鍨槹閻愯埖绨犻悗鐟邦槸瀹曟粓鎮ч崸锟�2.9.14 闁哄牃鍋撻柡鍌涘婢э拷濞戞挴鍋撻悹褔鏀卞ḿ鍨槹閻愯埖绨犻悗鐟邦槸瀹曟粓鎮ч崸锟�2.9.14 闁哄牃鍋撻柡鍌涘婢э拷
閻犵儤鍨肩粣鍥础閳ヨ尙顏查弶鐑囬檮婢ф粓寮甸搹鐟邦暭閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣紇1.16.2 閻庣懓顦畷婊堟偋閿燂拷閻犵儤鍨肩粣鍥础閳ヨ尙顏查弶鐑囬檮婢ф粓寮甸搹鐟邦暭閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣紇1.16.2 閻庣懓顦畷婊堟偋閿燂拷
闁绘瑥鍊块崳瑙勵槹濞嗘帗绨�8闁哄绶氶埀顒傚枎閸i攱绂嶉幋婊勫弿闁衡偓閸︻厼顣�(闁稿繐绉甸弳鐔煎箲椤旂厧鐦�)v4.6.0j 闂佸弶鍨电粩鐢稿籍閻樼粯顎欓柣妤嬫嫹闁绘瑥鍊块崳瑙勵槹濞嗘帗绨�8闁哄绶氶埀顒傚枎閸i攱绂嶉幋婊勫弿闁衡偓閸︻厼顣�(闁稿繐绉甸弳鐔煎箲椤旂厧鐦�)v4.6.0j 闂佸弶鍨电粩鐢稿籍閻樼粯顎欓柣妤嬫嫹
闁谎冨綖缁犱即宕¢崘顏勪粡闁硅娲熸總锟�2021闁哄牃鍋撻柡鍌涘婢э拷5.78 閻庣懓顦畷婊堟偋閿燂拷闁谎冨綖缁犱即宕¢崘顏勪粡闁硅娲熸總锟�2021闁哄牃鍋撻柡鍌涘婢э拷5.78 閻庣懓顦畷婊堟偋閿燂拷
閻熸瑦甯熸竟濠囧箥椤旂晫宸�
婵⿵绠戞径鐔煎礈閹达絽鐏﹂柤鏉挎噹瑜板骞€娴e搫顣�1.0.1.2閻庣懓顦畷婊堟偋閿燂拷婵⿵绠戞径鐔煎礈閹达絽鐏﹂柤鏉挎噹瑜板骞€娴e搫顣�1.0.1.2閻庣懓顦畷婊堟偋閿燂拷
濞寸姵鐟ラ。銊﹀閻樹警鍤況o濠㈣泛绉撮崣瀵糕偓鐟邦槸瀹曟粓鎮ч敓锟�1.20.3闁哄牃鍋撻柡鍌涘婢э拷濞寸姵鐟ラ。銊﹀閻樹警鍤況o濠㈣泛绉撮崣瀵糕偓鐟邦槸瀹曟粓鎮ч敓锟�1.20.3闁哄牃鍋撻柡鍌涘婢э拷
婵⿵绠戞径鐔烘嫚濞戞鑸堕柟闈涱儐閻栧爼鎮ч敓锟�1.3.6 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷婵⿵绠戞径鐔烘嫚濞戞鑸堕柟闈涱儐閻栧爼鎮ч敓锟�1.3.6 閻庤蓱閺岀喓鈧懓顦畷婊堟偋閿燂拷
闁绘粌顑堥埀顒€鎳撳畷鎶芥嚀閳х悤3.72.1.1 閻庣懓顦畷婊堝嫉閳ь剟寮弶璺ㄦ毉闁哄倸婀辨晶锟�闁绘粌顑堥埀顒€鎳撳畷鎶芥嚀閳х悤3.72.1.1 閻庣懓顦畷婊堝嫉閳ь剟寮弶璺ㄦ毉闁哄倸婀辨晶锟�
閻犲绀侀宥囦焊韫囨碍绨犵€殿喚鍎ゆ晶婊堝嫉閾忕懓顣紇1.0.49 閻庣懓顦畷婊堟偋閿燂拷閻犲绀侀宥囦焊韫囨碍绨犵€殿喚鍎ゆ晶婊堝嫉閾忕懓顣紇1.0.49 閻庣懓顦畷婊堟偋閿燂拷
缂侇垵宕电划鐑樻姜椤栨瑦顐�
mac缁惧彞鑳跺ú蹇涘礆閸℃闅樼€规悶鍎遍崣锟�(Paragon Camptune X)V10.8.12閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�mac缁惧彞鑳跺ú蹇涘礆閸℃闅樼€规悶鍎遍崣锟�(Paragon Camptune X)V10.8.12閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁兼槒顫夐悘澶愬箼瀹ュ嫮绋婄紒顖濆吹缁瘲ACOSX 10.9.4 Mavericks閻庣懓鑻崣蹇涘礂瀹ュ牆鐎柣妤嬫嫹闁兼槒顫夐悘澶愬箼瀹ュ嫮绋婄紒顖濆吹缁瘲ACOSX 10.9.4 Mavericks閻庣懓鑻崣蹇涘礂瀹ュ牆鐎柣妤嬫嫹
Rar閻熸瑱绲界敮鍥礆閳轰焦鐝ac闁绘婢�1.4 閻庤蓱閺岀喖宕楀鍫濈€柣妤嬫嫹Rar閻熸瑱绲界敮鍥礆閳轰焦鐝ac闁绘婢�1.4 閻庤蓱閺岀喖宕楀鍫濈€柣妤嬫嫹
Mac閻庣懓顦畷婊兾熼埄鍐ㄧ彲闁革綇鎷�(ARC Welder)v1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�Mac閻庣懓顦畷婊兾熼埄鍐ㄧ彲闁革綇鎷�(ARC Welder)v1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Charles for MacV3.9.3閻庤蓱閺岀喖鎮ч敓锟�Charles for MacV3.9.3閻庤蓱閺岀喖鎮ч敓锟�
缂傚啯鍨圭划璺侯啅閵夈儱寰�
闁瑰吋绮庣€氬秴霉韫囨凹娼旈柛锝傛殨ac闁绘婢�5.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闁瑰吋绮庣€氬秴霉韫囨凹娼旈柛锝傛殨ac闁绘婢�5.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闂佹寧鍔栧畵搴b偓骞垮灪閸╂稓绮╅惀鐞闁绘婀�1.33閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闂佹寧鍔栧畵搴b偓骞垮灪閸╂稓绮╅惀鐞闁绘婀�1.33閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闊浂鍋嗘晶鐢縜c闁绘婢�1.3.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闊浂鍋嗘晶鐢縜c闁绘婢�1.3.2 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁哄鑳堕崑锝嗙閺冨倻鎳塎ac闁绘鎷�7.13婵繐绲界槐锟犳偋閿燂拷闁哄鑳堕崑锝嗙閺冨倻鎳塎ac闁绘鎷�7.13婵繐绲界槐锟犳偋閿燂拷
濠殿垱甯婄紞瀣啅閵夈儱寰�
Apple Logic Pro xV10.3.2Apple Logic Pro xV10.3.2
Adobe Premiere Pro CC 2017 mac闁绘婢�11.0.0 濞戞搩鍘介弸鍐偋閿燂拷Adobe Premiere Pro CC 2017 mac闁绘婢�11.0.0 濞戞搩鍘介弸鍐偋閿燂拷
闁告鍟畷鍫ユ濞嗗繑鍎擬ac闁绘婀�9.1.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁告鍟畷鍫ユ濞嗗繑鍎擬ac闁绘婀�9.1.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Mac缂傚啯鍨圭划鍫曟儎鐎涙ɑ灏¢弶鐑嗗灟濞嗭拷(MacTV)v0.121 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�Mac缂傚啯鍨圭划鍫曟儎鐎涙ɑ灏¢弶鐑嗗灟濞嗭拷(MacTV)v0.121 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Adobe Fireworks CS6 Mac闁绘婀慡6閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢э拷Adobe Fireworks CS6 Mac闁绘婀慡6閻庤蓱閺岀喓绮婚埀顒佹媴閹捐尪鍘柡鍌氭川婢э拷
闁搞儲鍎抽懜浼村炊閹冨壖
AutoCAD2015 mac濞戞搩鍘介弸鍐偋閸喐鎷眝1.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�AutoCAD2015 mac濞戞搩鍘介弸鍐偋閸喐鎷眝1.0 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
Adobe Photoshop cs6 mac闁绘婢�13.0.3 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹Adobe Photoshop cs6 mac闁绘婢�13.0.3 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹
Mac闁活厹鍨介崳铏圭磼濡儤绂堥弶鐑嗗灟濞嗭拷(Sketch mac)v3.3.2 濞戞搩鍘介弸鍐偋閿燂拷Mac闁活厹鍨介崳铏圭磼濡儤绂堥弶鐑嗗灟濞嗭拷(Sketch mac)v3.3.2 濞戞搩鍘介弸鍐偋閿燂拷
Adobe After Effects cs6 mac闁绘婢�1.0濞戞搩鍘介弸鍐偋閿燂拷Adobe After Effects cs6 mac闁绘婢�1.0濞戞搩鍘介弸鍐偋閿燂拷
Adobe InDesign cs6 mac1.0 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹Adobe InDesign cs6 mac1.0 閻庤蓱閺岀喐绋夐鐔哥€柣妤嬫嫹
閹煎瓨姊婚弫銈嗘姜椤栨瑦顐�
Mac闁绘鐗嗛幓鈺呭箻閿燂拷1.1.26 閻庤蓱閺岀喎顫㈤敐鍛闁绘婧俤mg]Mac闁绘鐗嗛幓鈺呭箻閿燂拷1.1.26 閻庤蓱閺岀喎顫㈤敐鍛闁绘婧俤mg]
Mac閻犲洩顕ч崯鎻楾FS(Paragon NTFS for Mac)12.1.62 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�Mac閻犲洩顕ч崯鎻楾FS(Paragon NTFS for Mac)12.1.62 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
閺夆晛鎳樺ù锟�10 for macv3.4.1.4368 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�閺夆晛鎳樺ù锟�10 for macv3.4.1.4368 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
Mac濞戞挸顑嗗〒璺侯嚕閸濆嫨浜i柣銊ュ闁绱掗悢鍝ヮ伕闁荤偛妫楁导鎰板礂閿燂拷(CleanMyMac for mac)v3.1.1 婵繐绲界槐锟犳偋閿燂拷Mac濞戞挸顑嗗〒璺侯嚕閸濆嫨浜i柣銊ュ闁绱掗悢鍝ヮ伕闁荤偛妫楁导鎰板礂閿燂拷(CleanMyMac for mac)v3.1.1 婵繐绲界槐锟犳偋閿燂拷
闁兼槒顫夐悘濉€ootCamp5.1.5640 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁兼槒顫夐悘濉€ootCamp5.1.5640 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
ios缂佲偓閸欍儲鍞夐柤鍗烇工閵囷拷
鐎甸偊鍠曟穱濂縫ad闁绘鎷�2020v7.0.12 閻庤蓱閺岀喖鎮ч敓锟�鐎甸偊鍠曟穱濂縫ad闁绘鎷�2020v7.0.12 閻庤蓱閺岀喖鎮ч敓锟�
iphone闁归潧顑嗗┃鈧琿q2021v8.5.0 閻庤蓱閺岀喖鎮ч敓锟�iphone闁归潧顑嗗┃鈧琿q2021v8.5.0 閻庤蓱閺岀喖鎮ч敓锟�
闁哄嫭鎸锋穱濂縊S闁绘婢�7.3.13 iPhone闁绘鎷�闁哄嫭鎸锋穱濂縊S闁绘婢�7.3.13 iPhone闁绘鎷�
闂傚嫬鐭傚锟� iphoneV8.32.4 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�闂傚嫬鐭傚锟� iphoneV8.32.4 閻庤蓱閺岀喎顫㈤敐鍛闁绘鎷�
闁告鍟版晶锟� iphone闁绘鎷�9.2.5 閻庤蓱閺岀喖鎮ч敓锟�闁告鍟版晶锟� iphone闁绘鎷�9.2.5 閻庤蓱閺岀喖鎮ч敓锟�
ios闁汇垻鍠愬鍧楀嫉瀹ュ懎顫�
99濞戞挶鍎甸埀顒€顦板〒鍫曞棘閹殿喖顣糣1.3.699濞戞挶鍎甸埀顒€顦板〒鍫曞棘閹殿喖顣糣1.3.6
闊浂鍋嗘晶鐢禤hone闁绘鎷�5.7.3 閻庤蓱閺岀喖鎮ч敓锟�闊浂鍋嗘晶鐢禤hone闁绘鎷�5.7.3 閻庤蓱閺岀喖鎮ч敓锟�
婵烇絾锚閻わ拷 for iPhonev9.5.15 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�婵烇絾锚閻わ拷 for iPhonev9.5.15 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
濠⒀佸姀閹舵寰勯埡鍌滄瘻 for iphoneV7.5.3閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣糏PA濠⒀佸姀閹舵寰勯埡鍌滄瘻 for iphoneV7.5.3閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣糏PA
閻犲鏀遍悺鏇㈠捶閺夋寧绂坕phone(Google Maps)4.54  濞戞搩鍘介弸鍐偋閿燂拷閻犲鏀遍悺鏇㈠捶閺夋寧绂坕phone(Google Maps)4.54 濞戞搩鍘介弸鍐偋閿燂拷
ios鐟滀即浜堕悡鑸电箾閸欐ḿ顔�
闊浂鍋呴幐閬嶆嚐鐟欏嫮浜柣妤€婀�3.3.35 閻庤蓱閺岀喖鎮ч崷绯筽a]闊浂鍋呴幐閬嶆嚐鐟欏嫮浜柣妤€婀�3.3.35 閻庤蓱閺岀喖鎮ч崷绯筽a]
闁告艾顦幃蹇氥亹闁秶鍙鹃柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�1.0.1017 闁兼槒顫夐悘濉眕ad闁绘鎷�闁告艾顦幃蹇氥亹闁秶鍙鹃柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�1.0.1017 闁兼槒顫夐悘濉眕ad闁绘鎷�
鐟滀即浜堕悡鍫曞礂閸儲鏁遍柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�2.8.0 閻庤蓱閺岀喖鎮ч敓锟�鐟滀即浜堕悡鍫曞礂閸儲鏁遍柟缁㈠幗閺備線宕抽埡顧祍闁绘鎷�2.8.0 閻庤蓱閺岀喖鎮ч敓锟�
闁哄倹顨婃總鏃堟儎鐎涙ɑ灏¢悗骞垮灪閸╂稓绮╅惀鐖媠闁绘鎷�7.0.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁哄倹顨婃總鏃堟儎鐎涙ɑ灏¢悗骞垮灪閸╂稓绮╅惀鐖媠闁绘鎷�7.0.1 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闂佷即顥撶€氬秹妫呴崗鍛唶 for iPhonev10.9.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闂佷即顥撶€氬秹妫呴崗鍛唶 for iPhonev10.9.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
ios闁搞儲鍎抽懜浼村炊閹冨壖
How old do I look ios闁绘鎷�1.02 閻庤蓱閺岀喖鎮ч敓锟�How old do I look ios闁绘鎷�1.02 閻庤蓱閺岀喖鎮ч敓锟�
缂傚洤楠稿ù妯肩矓閳ь剛绮旈埀鐞睵hone闁绘婀�8.6.62 闁哄牃鍋撻柡鍌滃椤掓粌顕h箛鏇烆暭缂傚洤楠稿ù妯肩矓閳ь剛绮旈埀鐞睵hone闁绘婀�8.6.62 闁哄牃鍋撻柡鍌滃椤掓粌顕h箛鏇烆暭
婵ɑ娼欏畵鍐⒓閻斿吋姣愰柤鏄忣潐閻忓鎮ч崸锟�1.0.0婵ɑ娼欏畵鍐⒓閻斿吋姣愰柤鏄忣潐閻忓鎮ч崸锟�1.0.0
濠㈠灈鏅涢妵濉搁柛銉х┉pad闁绘鎷�5.7.4 閻庤蓱閺岀喖鎮ч敓锟�濠㈠灈鏅涢妵濉搁柛銉х┉pad闁绘鎷�5.7.4 閻庤蓱閺岀喖鎮ч敓锟�
闊浂鍋呮晶娓媜s闁绘婀�9.6.30 閻庤蓱閺岀喖鎮ч敓锟�闊浂鍋呮晶娓媜s闁绘婀�9.6.30 閻庤蓱閺岀喖鎮ч敓锟�
ios婵炴潙绻楅~宥咁啅閵夈儱寰�
闁煎啿鑻€垫﹢宕烽弶鎸庣ios闁绘鎷�1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁煎啿鑻€垫﹢宕烽弶鎸庣ios闁绘鎷�1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
闁归潧顑嗗┃鈧悗鐟邦槸閸欏繘宕濋埡鍌氼杹闁兼槒顫夐悘澶愭偋閸э拷1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�闁归潧顑嗗┃鈧悗鐟邦槸閸欏繘宕濋埡鍌氼杹闁兼槒顫夐悘澶愭偋閸э拷1.0 閻庤蓱閺岀喖寮甸埀顒勫棘閹殿喖顣�
UC婵炴潙绻楅~宥夊闯閳猴拷113.5.5.1555濞戞搩鍘介弸鍐偋閿燂拷UC婵炴潙绻楅~宥夊闯閳猴拷113.5.5.1555濞戞搩鍘介弸鍐偋閿燂拷
360婵炴潙绻楅~宥夊闯閳╁ for iPadV4.1.3  婵繐绲界槐锟犳偋閿燂拷360婵炴潙绻楅~宥夊闯閳╁ for iPadV4.1.3 婵繐绲界槐锟犳偋閿燂拷
iPhone闁归潧顑嗗┃鈧琎Q婵炴潙绻楅~宥夊闯閳猴拷8.9.1 閻庤蓱閺岀喖鎮ч敓锟�iPhone闁归潧顑嗗┃鈧琎Q婵炴潙绻楅~宥夊闯閳猴拷8.9.1 閻庤蓱閺岀喖鎮ч敓锟�

首页编程开发ASP.NET → ASP.NET中的Session怎么正确使用

ASP.NET中的Session怎么正确使用

相关文章发表评论 来源:ULiiAn·竹 译时间:2013/12/8 9:59:29字体大小:A-A+

作者:Abhijit Jana点击:2779次评论:2次标签: Session

  • 类型:AVG冒险游戏大小:684M语言:中文 评分:10.0
  • 标签:
立即下载

Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。
对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。  Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。 

最近这两天被一个Web Farm环境下的Session处理问题虐得很痛苦,这是一个ASP.NETSession基础知识的一个合集,有的地方感觉是有重复,比较啰嗦,我基本上按照原文将他翻译出来了,小弟程序水平不高,英语水平更差(09年高考英语65分,满分150),自我感觉Session基础内容是讲清楚了,我粗浅的理解下,没有发现有什么错误了,文章较浅,请各位发现有什么不对的地方告诉我,我一定尽快处理,这篇文章很适合初学者看,作者说的很清楚,能把ASP.NET下Session的玩法看得较为清晰。另外我会在我另一篇博文中将我所遇到的问题以及解决办法和大家共享。原文地址:http://www.codeproject.com/Articles/32545/Exploring-Session-in-ASP-Net

这篇文章将使你非常好地理解Session,在这篇文章中,我会包含Session的基础知识,用不同的方式储存Session对象,包含Web园(Web Farm)和Web农场(Web Garden)以及负载均衡等等情境。我也将详细阐明Session在实际生产环境中的应用。希望您能喜欢这篇文章,欢迎您反馈您的看法和建议。

什么是Session

Web是无状态的,他提供了一种新的方式:每次都通过用户对服务器提交请求而渲染新的网页。众所周知,HTTP是一种无状态协议,他不能通过页面和客户端保持连接。如果用户需要增加一些信息和跳转到了另外的页面,原有的数据将会丢失,用户将无法恢复这些信息。我们需要这玩意儿干嘛呢?我们需要保存信息!Session提供了一个在服务器端保存信息的方案。他能支持任何类型对象和用户对象信息作为对象保存起来。Session为每一个客户端都独立地保存,这意味着Session数据存储着每个客户端的基础信息。请看下图:

每一个客户端都有一份独立的Session

用Session进行状态管理是ASP.NET最好的特性之一,因为它是安全的,对于客户端是透明的,并且他能存储任何类型的对象。而在这些优点之外,有时Session会导致一些对性能要求较高的网站的性能问题。因为他消耗服务器的内存存储用户访问网站所需的数据,现在让我们来看一看Session对于您Web 应用的利弊。

Session的利弊

接下来我们讨论普通情况下使用Session的利弊,我会描述每一种Session的使用情境。

优点:

他能在整个应用中帮助维护用户状态和数据。

他能让我们简单地实现存储任何类型的对象。

独立地保存客户端数据。

对于用户来说,Session是安全的、透明的。

缺点:

因为Session使用的是服务器的内存,所以在用户量大的时候会成为性能瓶颈。

在序列化和反序列化的过程中他也会成为性能瓶颈,因为在StateServer(状态服务)模式和SQL Server模式下我们需要对我们存储的数据进行序列化和反序列化我们所存储的数据。

除此之外,Session的各种模式都有其利弊。接下来我们将讨论各种Session模式。

对Session进行读/写

读/写Session是非常简单的,就像使用ViewState一样,我们能使用System.Web.SessionState.HttpSessionState这个类来与Session进行交互,这个类在ASP.NET页面内内建(提供)了Session。下面的代码就是使用Session进行存储的例子:

//Storing UserName in Session

Session["UserName"] = txtUser.Text;

接下来让我们来看如何从Session读取数据:

//Check weather session variable null or not
if (Session["UserName"] != null)
{
    //Retrieving UserName from Session
    lblWelcome.Text = "Welcome : " + Session["UserName"];
}
else
{
 //Do Something else
}

我们也能存储其他对象,下面的例子展示了如何存储一个DataSet到Session里

//Storing dataset on Session
Session["DataSet"] = _objDataSet;

下面的代码展示了如何从Session内读取DataSet

//Check weather session variable null or not
if (Session["DataSet"] != null)
{
    //Retrieving UserName from Session
    DataSet _MyDs = (DataSet)Session["DataSet"];
}
else
{
    //Do Something else
}

参考文献:

MSDN (read the session variable section)

Session ID

ASP.NET使用了120bit的标识符用以标识每个Session。这是足够安全的、不可逆的设计。当客户端和服务端进行通信的时候,在他们之间需要传输这个Session ID,当客户端发送request(请求)数据时,ASP.NET搜索Session ID,通过Session ID检索数据。这个过程通过以下步骤进行:

客户端点击网站->客户端信息被Session储存

服务端为客户端创建一个唯一的Session ID,并在服务端存储这个ID

客户端通过发送带有SessionID的请求以获取在服务端保存的信息

服务器端通过Session Provider从状态服务(State Server)中获取序列化后的数据并且进行类型强制转换成对象

以下为流程图片:

客户端、Web服务器、Session Provider的通信

参考文献:

SessionID in MSDN

Session模式和Session Provider

在ASP.NET中,有以下几种Session模式可以使用

InProc

StateServer

SQLServer

Custom

每一种Session State都有一种Session Provider。以下的图形将展示他们的关系:

Session state体系图

我们能在这些基础的Session State Provider中进行选择。当ASP.NET接收到带有Session ID的信息请求时Session State和他相应的Provider负责提供和存储对应的信息。下面的表展示了Session 模式以及Provider的名称:

Session State模式State Provider
InProcIn-memory object(内置对象)
StateServerAspnet_state.exe
SQLServerSQL Server Database
CustomCustom provider

除此之外,还有另一个模式:“OFF”,如果我们选择这个选项,Session将不能为这个应用提供服务。但是我们的目标是使用Session,所以我们将讨论上面四种的Session模式。

Session States

Session State模式基本上可以认为把所有的Session配置、维护都交给了Web应用。Session State他本身就是一个大东西,他基本上意味着你所有关于Session 的配置无论实在web.config或者页面后端代码。在web.config里元素被用作Session的配置。在元素中可以配置的有Mode(模式),Timeout(超时),StateConnectionString(State连接字符串),CustomProvider(自定义的Provider)等等。我们已经讨论过了每个部分的连接字符串在我们讨论Session mode之前,接下来我们简述以下Session的一些事件:

Session事件

在ASP.NET中有两个可以使用的Session事件:

Session_Start

Session_End

你能处理应用中的这两个事件在global.asax这个文件里,当一个新的Session开启时session_start事件被触发,当Session被回收或是过期时Session_End被触发:

void Session_Start(object sender, EventArgs e) 
{
    // Code that runs when a new session is started
}
 
void Session_End(object sender, EventArgs e) 
{
    // Code that runs when a session ends. 
}

参考文献:

Application and Session Events

Session 模式

我们已经讨论过Session模式,接下来说说这些模式的不同:

Off

InProc

StateServer

SQLServer

Custom

如果我们在web.config内设定Session Mode="off",Session将在应用中不可用,他的设置是这样的:

InProc Session 模式:

这是ASP.NET默认的Session模式,他在当前的应用程序域中存储Session信息。这是性能最好的Session模式。但是他最大的缺点在于:当我们重启服务的时候Session数据将会丢失。InProc模式有一些优缺点,接下来我们将详细这些点。

InProc概述:

我们已经说过,InProc模式Session数据将会储存在当前应用程序域中,所以他是最简单、快速、好用的。

InProc模式Session数据保存在应用程序域内的一个集合对象,他在一个应用程序池中进行工作,如果我们重启服务,我们将丢失Session数据。正常情况下客户端发送请求,State Provider从内存对象中读取数据并返回给客户端,在web.config中我们必须提供Session模式和设置过期时间:

上面的设置中,设置了Session的过期时间为30分钟,这也可以从后台代码中进行配置。

Session.TimeOut=30;

在ASP.NET中有两个Session事件可以进行使用:Session_Start()和Session_End()而这种模式(后端代码控制)只支持Session_End()事件。这个事件在Session超时时被调用,一般情况下,InProc Session模式是这样的:

当Session过期时Session_End()事件被调用。InProc是一个非常快的处理机制,因为没有序列化地读/写过程,并且数据保存在相同的域内。

什么时候我们使用InProc模式呢?

InProc是默认的Session模式,他对小型应用程序和用户量比较小的程序非常合适,我们应尽量避免在Web园(Web Garden)和Web农场(Web Farm)情境下使用他(以后我会讲到这个情境)

优缺点:

优点:

他把Session数据存储在当前应用程序域内,所以访问数据会非常的快速、简单、高效。

在InProc模式中不需要对对象进行序列化存储。

使用起来非常简单,就像ViewState一样。

缺点:

虽然InProc是最快的,最通用的,也是默认的机制,但是他有许多限制:

如果工作的应用进程被回收,Session数据将全部丢失。

虽然他是最快的,但是当Session数据太大和用户过多时,他会由于内存的大量使用而影响整个程序的性能。

我们不能在Web园环境中使用这种模式。

这种模式不适合用于Web农场(Web Farm)环境中。

现在,我们来看看其他可用的方法来规避这些缺点,首先是StateServer模式:

StateServer Session模式

StateServer模式概述

这也叫做Out-Proc Session模式。StateServer使用了一个独立的Windows服务来提供Session服务,他独立于IIS,也能独使用一台服务器。StateServer的服务来自于aspnet_state.exe提供。这个服务也能和您的应用服务共同运行在同一台服务器上,注意他是独立于Web应用程序域的一个服务。这意味着你重启你的Web服务后Session数据依然存在。这个方案的缺点在于有一个性能瓶颈:数据读写需要进行序列化和反序列化,因为不是同一个应用程序域,所以他也增加了数据读写的性能消耗,因为他们是两个不同的进程。

配置StateServer Session模式

在StateServer模式里,Session数据存储在独立于IIS的一个服务里。这个进程作为一个Windows服务运行,你能在Windows服务管理器(MMC)或者命令行中进行启动。

默认情况下,ASP.NET StateServer(中文名:ASP.NET状态服务)默认情况下启动方式是“手动”我们必须将他设置为自动。

如果从命令行启动的化只需要输入:"net start aspnet_state";默认情况下,这个服务监听TCP端口42424,但是我们可以在注册表里改变这个设置,如图:

现在,我们来看一看web.config对StateServer的设置,在StateServer的设置里我们需要指定StateServer连接字符串stateConnectionString:指向运行StateServer的系统。默认设置下,StateConnectionString使用IP127.0.0.1(localhost)端口使用42424。

当我们使用StateServer,我们还能设置超时stateNetworkTimeOut特性指定等待服务响应的秒数,即发出请求到取消响应的事件时间间隔。默认情况下是10秒。

当使用StateServer进行存储时对象将被序列化进行储存,而读取对象时,将对数据进行反序列化,我们来看下面的例子:

StateServer是如何工作的

我们使用StateServer来避免当重启Web服务时无谓的Session数据丢失。StateServer是在aspnet_state.exe进程作为一个服务来进行维护的,这个进程维护着所有的Session数据,但是在存储到StateServer之前我们需要对数据进行序列化。

如上图所示,客户端发送请求到Web服务器,Web服务器将Session数据存储在StateServer里,StateServer也许在当前的系统里,也可能在另一个系统里,但他一定是独立于IIS的,为了实现他,我们必须在web.config里进行配置stateConnectionString。例如我们设置指向127.0.0.1:42424,这将把数据存储在本地的系统内,为了实现改变StateServer指向的目的,我们改变了IP,并且确定aspnet_state.exe正常运行于这个系统上,接下来当你需要读写Session时(也就是通过修改IP来导致一个错误的指向),你就会引发下图这样的异常:

当我们存储一个对象到Session,对象将被序列化。系统利用State Provider将数据存储进StateServer。当读取数据时,State Provider将返回数据,完整的流程图如下图:

StateServer Session模式例子:

这是一个简单的使用StateServer Session模式的例子,我直接在IIS里创建这个例子,能轻松地明白他的用法:

步骤1:打开Visual Studio>文件>新建>网站。选择HTTP作为web应用的位置。

现在你打开IIS,你将会看到创建了一个虚拟目录,名字是你的应用名,在我的例子中是StateServer。

步骤2:创建一个简单的UI:他将获取一个学生的角色编号和名字,我们将保存名字和编号到StateServer Session里。我也将创建一个类:StudentInfo,这个类的定义如下:

[Serializable]
public class StudentInfo
{
    //Default Constructor
    public StudentInfo()
    {
       
    }
    ////// Create object of student Class
    //////Int RollNumber
    ///String Name
    public StudentInfo(int intRoll, string strName)
    {
        this.Roll = intRoll;
        this.Name = strName;
    }
 
    private int intRoll;
    private string strName;
    public int Roll
    {
        get
        {
            return intRoll;
        }
        set
        {
            intRoll = value;
        }
    }
 
    public string Name
    {
        get
        {
            return strName;
        }
        set
        {
            strName = value;
        }
    }
}

现在来看后端代码,我增加了两个Button:一个是保存Session,另一个是获取Session:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    StudentInfo _objStudentInfo = 
      new StudentInfo(Int32.Parse( txtRoll.Text) ,txtUserName.Text);
    Session["objStudentInfo"] = _objStudentInfo;
    ResetField();
}
protected void btnRestore_Click(object sender, EventArgs e)
{
    StudentInfo _objStudentInfo = (StudentInfo) Session["objStudentInfo"];
    txtRoll.Text = _objStudentInfo.Roll.ToString();
    txtUserName.Text = _objStudentInfo.Name;
}

步骤3:配置你的web.config的StateServer,在之前介绍过,请确保web.config在配置所指向的服务器上的State Server是处于开启并运行的状态。

步骤4:运行应用。

输入数据,点击Submit。

接下来的测试,我将完整的解释如何使用StateServer

首先:移除StudentInfo类[Serializable]特性,然后运行应用。当你点解Submit按钮,你将看到如下的错误:

清晰地指出了在存储之前你必须序列化你的对象。

第二:运行程序,在点击了Submit按钮保存数据后,重启IIS

如果在InProc中,我保证你的Session数据将会丢失,但是在StateServer中,点击Restore Session按钮,你将获取你的原始数据,因为StateServer数据不依赖于IIS,它独立地保存数据。

第三:在Windows 服务管理程序(MMC)中停止StateServer服务,你再点击Submit按钮,你将看到如下错误:

因为你的StateServer进程没有运行,所以当你在使用StateServer的时候,请牢记这三点。

优点和缺点

基于上述讨论:

优点:

StateServer独立于IIS运行,所以无论IIS出什么问题都影响不到StateServer的数据。

他能在Web Farm和Web Garden环境中使用。

缺点:

要进行序列化和反序列化,拖慢速度。

StateServer需要保证正常运行。

我在这里停止StateServer的讲述,你将在负载均衡中看到他更多更有趣的点,Web Farm,Web Garden情境下。

参考文献:

State Server Session Mode

ASP.NET Session State

SQL Server Session模式

SQL Server模式简介

ASP.NET这个Session模式提供给我们了更强的安全性和可靠性,在这个模式下,Session数据被序列化并存储到一个SQL Server的数据库中,这个模式缺点在于Session需要序列化和反序列化的读写方式成为了主要的性能瓶颈,他是Web Farm的最佳选择。

设置SQL Server,我们需要这些SQL脚本:

安装:InstallSqlState.sql

卸载:UninstallSQLState.sql

最简单的配置方式是利用aspnet_regsql命令。

之前已经解释过了如何配置,这是最有用的状态管理方法在web Farm模式里。

我们为何使用SQL Server模式?

SQL Server Session模式提供了更安全、更可靠的Session管理。

他保证了数据在一个集中式的环境中(数据库)。

当我们需要更安全地实现Session时就应该使用SQL Server模式。

假如服务器经常需要重启,这是一个完美的解决方案。

这是一个完美解决web Farm和web园的方案(这个我将在后面详细解释)。

当我们需要在两个应用间共享Session时我们需要使用SQL Server模式。

配置SQL Server Session模式

在SQL Server模式中,我们的数据保存在SQL Server中,所以我们首先要在web.config里提供数据库连接字符串,sqlConnectionString是被用来做这事的。

在连接字符串配置完成后,我们将要配置SQL Server,我将在这里演示如何用aspnet_regsql命令进行数据库配置。

第一步:进入命令行,进入到Framework version目录E.g. :c:\windows\microsoft.net\framework\

第二步,带参运行aspnet_regsql命令。

下面是参数的使用:

ParametersDescription
-ssadd增加 SQLServer 模式 session state.
-sstype pP 持久化.将这些数据持久化存储于数据库中
-S服务器名
-U用户名
-P密码.

运行结束后,你见看到如下的信息:

配置结束。

第三步:

打开SQL Server,查看数据库ASPState库,将有两张表:

ASPStateTempApplications

ASPStateTempSessions

更改设置中的连接字符串,建立一个像StateServer例子中那样的应用

点击Submit时保存Roll Number和用户名,打开数据库,进入ASPStateTempSessions表,这是你保存的Session数据:

现在我们再来讨论以下StateServer模式中所讨论的几个问题:

1、从StydentInfo类中移除Serialize特性(keyword)

2、重启IIS再读取Session数据

3、停止SQL Server服务

我想这些问题我已经在StateServer解释得很清楚了。

(注:第一种将导致无法序列化对象,会抛出异常,第二种无影响,第三种,在关闭数据库服务时会有影响,而重启数据库服务将找回Session内的数据,因为他是持久化储存的。)

优缺点

优点:

Session数据不受IIS重启的影响

最可靠和最安全的Session管理模式

他在本地中心化保存Session数据,能使其他应用方便地进行访问

在Web Farm 和Web Garden情境下非常实用

缺点:

和默认模式比较起来,会显得很慢

对象的序列化和反序列化会成为性能瓶颈

因为需要在不同的服务器上访问SQL Server,我们必须保证SQL Server的稳定运行。

参考资料:

Read more about SQLServer mode

自定义Session模式

通常情况下,我们使用InProc模式、StateServer模式、SQL Server模式就够了,可是我们还是需要了解一些用户自定义Session模式的相关知识。这是一种相当有趣的Session模式,因为用户的Session全部交由了我们进行控制,甚至Session ID,你都能通过自己写算法来生成Session ID。

你能够容易地从基类SessionStateStoreProviderBase开发出自定义的Provider,你也能通过实现ISessionIDManager接口来产生SessionID。

下图是自定义方法的处理过程:

在Initialize方法中,我们能设置一个自定义Provider。他将提供给Provider初始化连接。SetItemExpireCallback被用作提供SessionTimeOut(Session过期),当Session过期时我们能注册一个方法进行调用。InitializeRequest在请求发起的时候被调用,CreateNewStoreData在创建一个SessionStateStoreData(Session数据存储类)实例时候被调用。

我们何时使用自定义Session模式?

1、 当我们想将Session数据存储在SQL Server之外的数据库内时。

2、 当我们必须使用一个已存在的(特定的)表来存储Session数据的时候。

3、 当我们需要使用自定义的SessionID的时候

如何配置自定义Session模式?

我们需要在web.config里进行这样的配置:

如果你想了解更多的关于自定义模式的信息,请查阅参考资料。

优缺点:

优点:

1、 我们能使用一个已存在的表(指定的表)来存储Session数据。当我们使用一个之前使用的数据库时,这样做是很有用的。

2、 他独立于IIS运行,所以重启服务器对他也没有影响。

3、 我们能建立自己的Session ID逻辑来分配Session ID。

缺点:

1、 处理数据很慢。

2、 创建一个自定义的Session状态Provider是一个基础性(low-level)任务,他需要小心处理各种情况以及保证数据安全。

我推荐您使用第三方提供的Provider而不是自己写一套Provider。

参考资料:

Custom Mode

生产部署的概述:

在实际的生产工作环境中部署我们的应用对于一个Web开发者来说是一个非常重大的挑战。因为在大的生产环境中,有大量的用户数据需要处理,数据量大到一台服务器难以负载这么巨大的数据处理量。这个概念来自于Web Farm,Web Garden,负载均衡的使用。

在几个月前,我部署了一个实际环境:这个环境要处理百万级的用户访问以及超过10个域控制器,通过负载均衡搭载了超过10台服务器和服务数据库。例如交易服务器、LCS服务器。最大的挑战来自于跨多个服务器的Session管理。下图对这个生产环境展示了一个简单的图形:

我将试着解释并让您记住各个不同应用场景。

应用程序池

这是当您在创建一个实际生产环境时最重要的一个东西。应用程序池是用在IIS里用来分隔不同的工作进程的应用程序的,应用程序池能分隔我们的应用程序,使其获得更好的安全性,可靠性和有效性。应用程序池的应用在服务器中当一个进程出现问题,或者被回收时其他进程不受影响。

应用程序池的角色:

应用程序池的配置角色是一个重要的安全措施,在IIS6和IIS7里。因为当应用程序访问资源时他指定了应用程序的身份。在IIS7里,有三种预定义的身份指定方式,这和IIS6是一样的。

应用程序池角色描述
LocalSystem内建于服务器上管理权限的账户. 他能访问本地和远程资源. 任何服务器的文件或者资源, 我们必须把应用程序的身份设置为LocalSystem.
LocalServices内置的本地身份验证. 他不能进行任何网络访问。
NetworkServices这是应用程序池的默认身份,NetworkServices是一个经过验证的本地用户账户权限。

建立和指定应用程序池

打开IIS管理页面,右键单击应用程序池目录->新建

给应用程序池一个ID,然后点击OK。

现在,右键单击一个虚拟目录(我正在使用的StateServer站点)分配StateServerAppPool给StateServer虚拟目录。

现在这个StateServer站点运行在了一个指定的独立的应用程序池StateServerAppPool里。其他任何应用都不会影响到这个程序。这是独立应用程序池的主要优点。

Web Garden

默认情况下,每一个应用程序池都运行在一个独立的工作进程里(W3Wp.exe)。我们能分配多个进程给单个应用程序池,一个应用程序池跑多个进程,这样的情况叫做Web Garden(Web园),多个工作进程单个应用程序在很多情况下都能够有更优秀的输出性能和更少的相应时间,每一个工作进程都会有他们自己的线程和内存空间。

如上图所示,在IIS里,将会有多个应用程序池,并且每个应用程序池至少有一个工作进程,而一个Web Garden将有多个工作进程。

在你的应用程序里,使用Web园将必然出现一个限制条件:如果我们使用InProc模式,我们的应用程序将无法正确的工作,因为Session将工作在不同的进程里。为了避免这样的问题,我们将使用进程外(OurProc)的Session模式,我们可以使用State Server或者SQL Server Session模式。

主要优点:

在Web园内的工作进程对每个进程都共享请求,如果一个进程挂了,其他的进程还能正常工作,继续处理请求。

如何建立一个Web Garden?

右键单击程序池->Performance(性能?)选项卡->选择Web Garden(Web园)部分

默认情况下他的值为1,现在把他改为一个比1大的数字。

如何在Web园内指定Session?

我已经解释过InProc模式是在单个工作进程中进行处理,在进程内存储对象,现在,如果我们要处理多个进程,Session处理将会变得很困难,因为每个工作进程独享自己的内存。那么假如第一个请求数据到了WP1并且保存了Session数据,第二个请求到了WP2我将无法正确获得Session的数据,取值的话将会抛出异常。所以,请避免在Web Garden模式下使用InProc模式。

我们使用StateServer或者SQLServer模式对这种情况进行处理,之前解释过,这两种模式不依赖于工作进程,在之前的例子里也说过当IIS重启你依然能访问到Session数据。

Session模式是否推荐
InProcNo
StateServerYes
SQLServerYes

Web Farm和负载均衡

这是在生产环境中最常见的情形,当你需要在多台服务器上部署你的应用时,使用这种模式的主要原因是我们要将负载均衡到多台服务器上,一个负载均衡器被用于分发负载到多台服务器上。

我们来看上图,客户端通过URL发送请求时先到负载均衡器,然后通过负载均衡器将请求分发给服务器,负载均衡器将在不同的服务器之间进行请求的分发。

现在我们如何处理我们的Session呢?

在WEB Farm和负载均衡情况下处理Session

在Web Farm中处理Session是一个有挑战性的工作。

InProc:InProc Session模式,Session数据以对象形式被存储在工作进程中,每个服务器将有他自己的工作进程,并将保持Session数据在内存中。

假如一台服务器down了,那么请求将会访问其他服务器,而其他服务器里是不存在相应Session数据的。所以在Web Farm情形下不推荐使用InProc模式。

State Server:之前已经解释过如何使用和配置StateServer模式了,在WebFarm的环境下你将了解他是多么的重要,因为所有Session数据将在一个位置进行存储。

记住,在web Farm环境里,你必须保证你有相同的节在你所有的web服务器上,其他配置和之前描述的一致,所有的web.config文件都要有相同的配置属性(stateConnectionString)在Session State里。

SQL Server:这是另一个选择,这也是在Web Farm环境里的最佳选择,我们首先需要配置数据库,接下来的步骤之前已经说过了。

如上图所示,所有的web服务器Session数据都将被存储于一个SQL Server数据库。请记住一点,在StateServer模式和SQL Server模式下你都将把对象进行序列化存储。当一台Web服务器挂掉的时候,负载均衡器将把请求分发到其他服务器他将能从数据库里取出Session数据,因为所有Session数据都是存放于数据库里的。

总之,我们能用StateServer和SQL Server模式来进行Web Farm的部署,我们需要尽量避免使用InProc模式。

Session和Cookie

客户端使用Cookie来配合使用Session,因为客户端需要给每个请求提供合适的Session ID,我们可以使用下列的方法:

使用Cookie

ASP.NET使用了一个特定的Cookie名叫作:ASP.NET_SessionId这是当Session集合被创建的时候自动提供的,这是默认设置,Session ID通过Cookie进行传送。

Cookie Munging

当用户向服务器发送一个请求时,服务器解码Session ID并将他加入到每个页面的链接里,当用户点击链接,ASP.NET编码Session ID并传送到用户所请求的页面,现在,请求的页面可以获取Session变量了。这一切都是自动完成的,当ASP.NET发现用户浏览器不支持Cookie时。

如何实现Cookie Munging

为了这个,我们必须保证我们的Session State为Cookie-less。

移除Session

下面的方法被用来移除Session

方法描述
Session.Remove(strSessionName)从Session State中移除一个项目
Session.RemoveAll()从Session集合中移除所有项目
Session.Clear()从Session集合中移除所有项目. Note: Clear和RemoveAll.RemoveAll()没有区别Clear()是内部的.
Session.Abandon()取消当前的Session。

启用和禁用Session

从性能优化来说,我们可以启用或禁用Session,因为每个页面都进行读写Session会出现一些性能开销,所以,更合适地启用或者禁用Session,而不是使用他的默认配置:always。我们启用和禁用Session可以采取两种方式:

页面级

应用级

页面级

我们能禁用Session在页面指令的EnableSessionState属性中

同样的,我们可以让他成为只读的,这将只允许访问Session而禁止写入信息到Session

应用级

通过设置web.config的属性EnableSessionState可以让Session在整个应用程序内被禁用,

一般我们都是采用页面级的限制,这样能灵活控制Session的使用。

参考文献:

How to Disable ASP.NET Session State

总结

希望你现在能更熟悉Session了,如何使用Session,以及如何在Web Farm中使用,总结如下:

1、 InProc Session Provider是最快的,因为所有数据都存在应用程序的内存里,Session数据在IIS重启,或者站点被回收的情况下丢失,你可以在用户量较小的网站上使用这种模式,但别在Web Farm下使用。

2、 State Server模式:Session数据被存储于aspnet_state.exe应用中,他在Web服务之外保存Session数据,所以Web服务出现问题不会对他的Session数据造成影响,在将Session数据存储到StateServer之前需要序列化对象,在Web Farm中我们能安全地使用这个模式。

3、 SQL Server模式:他将Session数据保存到SQL Server中,我们需要提供连接串,我们存储时也需要对对象进行序列化,这种模式在实际Web Farm的生产环境中是非常有用的。

4、 我们也能使用自定义模式,当我们需要使用一个已经存在的表来存储Session数据时,在自定义模式中,我们也能创建自定义的Session ID,但是不推荐你自己来实现Provider,推荐使用第三方的Provider。

希望您能喜欢这篇文章,希望您能给我宝贵建议帮助大家共同提高,再次感谢您的阅读。

相关评论

阅读本文后您有什么感想? 已有人给出评价!

  • 8 喜欢喜欢
  • 3 顶
  • 1 难过难过
  • 5 囧
  • 3 围观围观
  • 2 无聊无聊

热门评论

最新评论

第 2 楼 本机地址中国 网友 客人 发表于: 2016/5/15 23:58:35
很好

支持( 0 ) 盖楼(回复)

第 1 楼 本机地址CZ88.NET 网友 客人 发表于: 2015/7/16 11:05:22
很好,很详细。

支持( 0 ) 盖楼(回复)

发表评论 查看所有评论(2)

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)