锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
1錛夋蹇碉細瀵逛簬鏍戜腑鐨勬瘡涓妭鐐筺錛屽叾宸﹀瓙鑺傜偣涓繚瀛樼殑鎵鏈夋暟鍊奸兘灝忎簬n淇濆瓨鐨勬暟鍊鹼紝鍙沖瓙鑺傜偣淇濆瓨鐨勬暟鍊奸兘澶т簬n淇濆瓨鐨勬暟鍊箋?/p>
2錛変簩鍙夋煡鎵炬爲鍙互瀹炵幇鏇翠負浼樿秺鐨勬煡鎵炬ц兘錛屼富瑕佸疄鐜版柟寮忔湁鏁扮粍鍜岄摼琛ㄧ粨鏋勶紝鐩告瘮杈冭岃█錛岄摼琛ㄥ疄鐜版洿涓哄鏄擄紝鍥犱負鏁扮粍瀹炵幇鍒犻櫎鍜屾坊鍔犲姛鑳介渶瑕佺Щ鍔ㄦ暟緇勫厓绱狅紙濡傚~琛ュ垹闄ょ┖浣嶇瓑錛?/p>
浠婂ぉ涓嬪崍鍦ㄦ墦鍗伴棶棰樻悶瀹氬悗鐢–#瀹炵幇浜嗕竴涓嬶紝姣攋ava鐗堟湰姣旇緝鏈夎叮鐨勪嬌鐢–#鐨刣elegate鏉ヤ唬鏇塊亶鍘嗕簩鍙夋爲鏃剁殑visit鏂規(guī)硶錛岃繖鏍蜂竴鏉ュ彲浠ュ湪閬嶅巻鏃跺鑺傜偣榪涜浣犳墍鎯寵鐨勪換浣曟搷浣溿傛垜浠煡閬揅#鐨刣elegate鏄被鍨嬪寲鐨勫嚱鏁版寚閽堬紝鑰孋++鐨勫嚱鏁版寚閽堝彲浠ユā浠垮姩鎬佽璦鐨勯棴鍖呮垨鑰呭尶鍚嶅嚱鏁般傝繖閲屼篃鏈夎繖鏍風殑鍛抽亾銆?br>
浠g爜濡備笅錛屽彧瀹炵幇浜嗘暣鏁板瀷鐨勶紝鑺傜偣瀹氫箟錛?br>
鍙互鐪嬪埌錛孋#鐨刣elegate鏈哄埗闈炲父鏈夎叮錛屽鏋滃湪java涓亹鎬曢渶瑕佺敤inner class鏉ュ疄鐜頒簡銆?br>
闂細
鎵撴壈涓涓嬶紝璇烽棶MarshalByRefObject涓殑"Marshal"搴旇鎬庢牱鐞嗚В錛?/span>
鍥炲錛?/span>
鎸夌収package鐨勬剰鎬濈悊瑙?/span>鈥斺?/span>褰撲竴涓璞¢渶瑕侀暱閫旇穻娑夊埌鍙︿竴涓幆澧冧腑鏃訛紝闇瑕佸皢鍏?/span>marshal鎴愪竴涓彲浠ヤ紶杈撶殑褰㈡侊紙姣斿鍦?/span>.NET Remoting涓璞″皢琚墦鍖呮垚涓涓?/span>serializable鐨?/span>ObjRef瀹炰緥鈥斺?/span>榪欎釜ByRef灝辨槸鎸?/span>ObjRef榪欑褰㈡侊級錛涘悓鐞嗭紝褰撴墦鍖呬互鍚庝紶杈撳埌鐩爣鍦扮偣錛岃繕瑕佹墽琛?/span>unmarshal鐨勬搷浣滃皢鍏惰繕鍘熶負鍐呭瓨涓殑瀵硅薄銆傦細錛?/span>
闂細
璋㈣阿錛?/span>
MarshalByRefObject鏄笉鏄彲浠ヨ繖鏍風悊瑙o細瀵硅寮曠敤鐨勫璞¤繘琛?/span>Marshal銆傚鏋滄寜鐓?/span>package鐨勬剰鎬濈悊瑙o紝閭?/span>package鐨勮繃紼嬫槸鎬庢牱鐨勶紵
聽
MSDN涓婅繖鏍瘋錛?/span>
MarshalByRefObject鏄氳繃浣跨敤浠g悊浜ゆ崲娑堟伅鏉ヨ法搴旂敤紼嬪簭鍩熻竟鐣岃繘琛岄氳鐨勫璞$殑鍩虹被.
MarshalByRefObject瀵硅薄鍦ㄦ湰鍦板簲鐢ㄧ▼搴忓煙鐨勮竟鐣屽唴鍙洿鎺ヨ闂傝繙紼嬪簲鐢ㄧ▼搴忓煙涓殑搴旂敤紼嬪簭棣栨璁塊棶MarshalByRefObject鏃訛紝浼氬悜璇ヨ繙紼嬪簲鐢ㄧ▼搴忎紶閫?/span>浠g悊銆傚璇ヤ唬鐞嗗悗闈㈢殑璋冪敤灝嗗皝閫佸洖椹葷暀鍦ㄦ湰鍦板簲鐢ㄧ▼搴忓煙涓殑瀵硅薄銆?/span>
聽
鍦?/span>Marshal涓紝涓婇潰鎵璇寸殑浠g悊鏄粈涔堬紵鏈変粈涔堢敤錛?/span>
聽
MSDN涓婅繕璁插埌錛?/span>
褰撹法搴旂敤紼嬪簭鍩熻竟鐣屼嬌鐢ㄧ被鍨嬫椂錛岀被鍨嬪繀欏繪槸浠?/span>MarshalByRefObject緇ф壙鐨勶紝鑰屼笖鐢變簬瀵硅薄鐨勬垚鍛樺湪鍒涘緩瀹冧滑鐨勫簲鐢ㄧ▼搴忓煙涔嬪鏃犳硶浣跨敤錛屾墍浠?/span>涓嶅緱澶嶅埗瀵硅薄鐨勭姸鎬?/span>銆?/span>
聽
鏃㈢劧瀵硅薄鐨勭姸鎬佷笉鑳戒紶閫掕繃鍘伙紝閭d紶閫掕繖涓璞″張鏈変綍鎰忎箟錛?/span>
絎竴嬈″幓鐞嗚ВMarshalByRefObject錛屾湁鐨勯棶棰樺彲鑳芥彁鐨勬瘮杈冭偆嫻咃紝璇鋒偍鎸囩偣銆?/span>
鍥炲錛?/span>
MarshalByRefObject鏄墍鏈夊彲浠ュ湪AppDomain杈圭晫澶栭儴璁塊棶鐨勫璞$殑鍩虹被錛岄噸蹇冧笉鏄?/span>marshal錛岃屾槸object錛屽嵆object that could be marshaled by reference錛屼篃灝辨槸鍙互閫氳繃Ref錛堝疄闄呬笂鏄?/span>ObjRef瀵硅薄錛夌殑鏈哄埗榪涜鈥?/span>灝侀?/span>鈥?/span>錛?/span>MSDN涓枃鐗堝marshal涓璇嶇殑緲昏瘧錛夌殑瀵硅薄銆傚皝閫佺殑琛屼負鏄敱浠g悊鏉ュ仛鐨勶紝榪欓噷璇寸殑浠g悊灝辨槸鎴戞枃绔犱腑璁茶繃鐨?/span>.NET Remoting鐨勭湡瀹炰唬鐞嗭紙鍗?/span>RemotingProxy錛夈傜湡瀹炰唬鐞嗕笉鏄湁涓涓?/span>Invoke()鏂規(guī)硶鍚楋紵褰撲綘閫忚繃瀵逛竴涓?/span>MBRO鐨勯忔槑浠g悊璁塊棶璇ュ璞$殑鏂規(guī)硶鏃訛紝閫忔槑浠g悊灝嗘妸鍩轟簬鍫嗘爤鐨勬柟娉曡皟鐢ㄨ漿鎹負鏂規(guī)硶璋冪敤娑堟伅錛?/span>IMethodCallMessage錛夊茍杞彂緇欑湡瀹炰唬鐞嗭紙鍦?/span>Remoting鐨勫満鍚堜腑涔熷嵆RemotingProxy錛夛紝鑰?/span>RemotingProxy鐨勪換鍔″氨鏄妸瀵硅薄灝侀佸茍榪炲悓鏂規(guī)硶璋冪敤娑堟伅涓璧瘋漿鍙戠粰榪滅▼搴旂敤紼嬪簭鍩燂紱鍒拌揪鐩殑鍦頒互鍚庣殑鎿嶄綔綾諱技錛氳繙紼嬪簲鐢ㄧ▼搴忓煙涓殑鐩戝惉鏂瑰綋鏀跺埌鍙戞潵鐨勬柟娉曡皟鐢ㄦ秷鎭椂錛屽厛鍙栧嚭灝侀佸ソ鐨?/span>ObjRef錛堣繖涓璞¢噷闈繚瀛樼潃鍙戞潵璋冪敤鐨勯偅涓璞★紒錛夛紝灝嗗叾緇撳皝錛?/span>unmarshal錛変負鏈湴鐨勫璞★紝騫惰幏寰楀叾閫忔槑浠g悊錛岀劧鍚庡氨鍙互鎶婃柟娉曡皟鐢ㄦ秷鎭湪杞崲鍥炲熀浜庡爢鏍堢殑璋冪敤鍙戦佺粰榪欎釜瀵硅薄銆?/span>
聽
瀵硅薄鏄湪鏈湴緇存姢鐨勶紝浣嗘槸鏂規(guī)硶鍙互鍦ㄨ繙紼嬭皟鐢ㄣ備綘姣斿璇翠竴涓?/span>web搴旂敤紼嬪簭錛屼綘鏄氳繃鏈湴鐨勬祻瑙堝櫒榪滅▼璁塊棶榪欎釜搴旂敤紼嬪簭錛屼絾鏄簲鐢ㄧ▼搴忕殑鐘舵佷笉浼氱敱浣犵殑嫻忚鍣ㄨ礋璐o紙鎵浠ヤ綘鍙槸鍦ㄨ闂繖涓簲鐢ㄧ▼搴忔彁渚涚粰浣犵殑鍔熻兘鑰屽凡錛屼綘騫舵病浜庢嫢鏈夊簲鐢ㄧ▼搴忔湰韜紝鍖呮嫭鍏舵墍鏈夋暟鎹級錛屼綘鍙槸鍙戦佷竴涓釜鐨勮姹傦紝鏈嶅姟鍣ㄥ憡璇変綘澶勭悊鐨勭粨鏋溿傚湪Remoting涓?
涔熸槸涓鏍鳳紝褰撲綘鑾峰緱涓涓繙紼嬪璞$殑鏃跺欙紝浣犲疄闄呬笂鍙嫢鏈夊榪欎釜瀵硅薄鐨勪竴涓繙紼嬪紩鐢紝铏界劧浣犲彲浠ヨ皟鐢ㄥ畠鐨勬柟娉曪紝浣嗗疄闄呬笂榪欎簺鎿嶄綔閮芥槸鍙戠敓鍦ㄨ繙紼嬬殑錛堝氨鏄墠闈?
璁茶繃鐨勮繃紼嬶級錛屼綘鍙槸浼犲叆浜嗕竴浜涘弬鏁幫紝寰楀埌浜嗕竴涓粨鏋滐紝浣嗗璞$殑鐘舵佽繕鏄湪榪滅▼緇存姢鐨勶紙鎹㈠彞璇濊錛屽璞℃湰韜篃灝辨槸瀵硅薄鐨勬墍鏈夌姸鎬佸茍娌℃湁琚線榪斾紶閫掞紝浼犻掔殑
鍙槸浼犲叆浼犲嚭鐨勫弬鏁?/span>鈥斺?/span>褰撶劧錛屽鏋滃弬鏁版槸涓涓?/span>MBRO鐨勮瘽錛岃繕鏄紶閫掑璞¤灝侀佺殑寮曠敤錛夈?/span>聽
涔熻搴旇緇欎綘鍑嗗涓涓ソ鐞嗚В鐨勪緥瀛?/span>鈥︹?/span>浣犲氨浼氳眮鐒跺紑鏈椾簡銆傦細錛?/span>
闂細
鎴戣繖鏍風殑鐞嗚В瀵逛笉瀵癸紵
涓鑸殑瀵硅薄涓庝粠MarshalByRefObject緇ф壙鐨勫璞″尯鍒槸錛?/span>
涓鑸殑瀵硅薄鍙兘鍦ㄦ湰鍦板簲鐢ㄧ▼搴忓煙涔嬪唴琚紩鐢紝鑰?/span>MarshalByRefObject瀵硅薄鍙互璺ㄨ秺搴旂敤紼嬪簭鍩熻竟鐣岃寮曠敤錛岀敋鑷寵榪滅▼寮曠敤銆?/span>
鍥炲錛?/span>
Exactly! 褰撳璞¤法鍑?/span>AppDomain杈圭晫鐨勬椂鍊欙紝瀹為檯涓婂彧鏄畠鐨勪竴涓紩鐢紙ObjRef錛夈備綘姣斿璇村惂錛?/span>
聽
public class LocalObject
{
聽 public void CallRemoteObject(MarshalByRefObject mbro)
聽 {
聽聽聽 Console.WriteLine(mbro.ToString());
聽 }
}
聽
緇忚繃榪欐牱鐨勪竴鐣墿灞曪紝鎴戜滑瀵逛竴涓祫婧愮殑 CRUD 鎿嶄綔灝卞彲浠ラ氳繃鍚屼竴涓?URI 瀹屾垚浜嗐傞渶瑕佹敞鎰忕殑鏄疪EST鐨勬牳蹇冨氨鏄祫婧愶紙resources錛夎繖涓蹇點傛垜浠墍璇寸殑webservice鏄竴縐嶅緩绔嬪湪http鍗忚涓婄殑榪滅▼璋冪敤錛岃孯EST灝辨槸鎶婅繙紼嬭皟鐢ㄦ娊璞℃垚瀵硅繙紼嬭祫婧愮殑CRUD鐨勬搷浣滐紝姝eソ鍙互鐢℉TTP鐨凱UT GET POST DELETE鏉ュ搴旓紝鑰屼笉鏄噸鏂板彂鏄庝竴涓崗璁紙姣斿soap錛岀畝鍗曞璞¤闂崗璁級銆俁EST涓嶢JAX鐨勬祦琛岋紝鐢氳嚦榪滆嚦璁捐妯″紡鐨勫叴璧鳳紝閮藉厖鍒嗚鏄庝竴涓幇璞★紝鍦ㄦ垚鐔熺殑搴旂敤鐨勫熀紜涓婂垱鏂拌岄潪鎵╁睍鍑哄鏉傛墍璋撯滃垱鏂版р濇灦鏋勫湪杞歡琛屼笟鏄洿涓哄彲闈犮?/p>
聽聽聽 瀹炴垬浣撻獙REST鍙互浠嶪BM Developer鐨勮繖綃囨枃绔犲紑濮嬨?a >璺ㄨ秺杈圭晫錛歊est On Rails銆嬨傝繖綃囨枃绔犳槸鍦≧ails1.2鍙戝竷涔嬪墠鍑烘潵鐨勶紝鏈変簺鍦版柟宸茬粡鍙互淇敼鐨勬洿綆緇冿紝鎴戞妸鎴戠殑緇冧範榪囩▼璁板綍涓嬶紝騫舵坊鍔犱簡C#璋冪敤REST椋庢牸web service鐨勪緥瀛愩?/p>
聽聽聽 棣栧厛錛屼綘鐨勬満鍣ㄤ笂闇瑕佸畨瑁卹ails1.2錛屽茍涓斿亣璁句綘瀵箁ails鏈夊熀鏈殑浜嗚В錛屽緩绔嬩竴涓簲鐢ㄥ彨service,鍛戒護琛屾墽琛岋細
聽聽rails鑷姩甯綘鐢熸垚搴旂敤鐨勫熀鏈粨鏋勫拰鍩虹浠g爜錛岀劧鍚庣紪杈慶onfig涓嬮潰鐨刣atabase.yml璁劇疆鏁版嵁搴擄紝騫跺緩绔嬫暟鎹畇ervice_development錛屾垜鐢ㄧ殑鏄痬ysql鏁版嵁搴撱?/p>
鍒╃敤rails1.2鏂扮殑scaffold鍛戒護錛?/p>
榪欎釜鍛戒護灝嗚嚜鍔ㄧ敓鎴怉ctiveRecord,Controller浠ュ強View錛屽湪\app\models涓嬪彲浠ュ彂鐜拌嚜鍔ㄧ敓鎴愮殑Model鈥斺攑erson.rb銆傛墦寮service\db\migrate涓嬮潰鐨?01_create_people.rb錛岀紪杈戝涓嬶細
路聽聽聽聽聽聽聽聽 瀵逛簬鎵鏈?/span>simple-types錛?/span>榛樿鍊兼槸灝嗗叾鎵鏈変綅閮界疆闆剁殑浣嶆ā寮忔墍褰㈡垚鐨勫?/span>錛?/span>
o聽聽聽聽聽聽聽 瀵逛簬sbyte銆?/span>byte銆?/span>short銆?/span>ushort銆?/span>int銆?/span>uint銆?/span>long鍜?/span>ulong錛?/span>榛樿鍊間負0銆?/span>
o聽聽聽聽聽聽聽 瀵逛簬char錛?/span>榛樿鍊間負'\x0000'銆?/span>
o聽聽聽聽聽聽聽
瀵逛簬float錛?/span>榛樿鍊間負
o聽聽聽聽聽聽聽 瀵逛簬double錛?/span>榛樿鍊間負0.0d銆?/span>
o聽聽聽聽聽聽聽
瀵逛簬decimal錛?/span>榛樿鍊間負
o聽聽聽聽聽聽聽 瀵逛簬bool錛?/span>榛樿鍊間負false銆?/span>
路聽聽聽聽聽聽聽聽 瀵逛簬enum-typeE錛?/span>榛樿鍊間負0銆?/span>
路聽聽聽聽聽聽聽聽 瀵逛簬struct-type錛?/span>榛樿鍊兼槸閫氳繃灝嗘墍鏈夊肩被鍨嬪瓧孌佃緗負瀹冧滑鐨勯粯璁ゅ箋佸皢鎵鏈夊紩鐢ㄧ被鍨嬪瓧孌佃緗負null鑰屼駭鐢熺殑鍊箋?/span>
3.C#涓湁鎵璋撶殑綆鍗曠被鍨嬫蹇碉紙simple type錛夛紝綾諱技浜巎ava鐨勫熀鏈被鍨嬶紝浣嗗張涓嶅悓錛孋#鐨勭畝鍗曠被鍨嬫湰璐ㄤ笂閮芥槸緇撴瀯綾誨瀷錛堥瀹氫箟闆嗗悎鐨勭粨鏋勭被鍨嬶級錛屾墍浠ヨ繕鏄肩被鍨嬶紝浠?span class="Codefragment">System.ValueType緇ф壙鑰屾潵銆侰#鐨勭畝鍗曠被鍨嬪寘鎷細淇濈暀瀛?/span> | 鍖栧悕鐨勭被鍨?/span> |
sbyte | System.SByte |
byte | System.Byte |
short | System.Int16 |
ushort | System.UInt16 |
int | System.Int32 |
uint | System.UInt32 |
long | System.Int64 |
ulong | System.UInt64 |
char | System.Char |
float | System.Single |
double | System.Double |
bool | System.Boolean |
decimal | System.Decimal |
1.寮曠敤綾誨瀷鏄被綾誨瀷銆佹帴鍙g被鍨嬨佹暟緇勭被鍨嬫垨濮旀墭綾誨瀷銆?/span>
2.綾葷被鍨嬶細鍖呮嫭棰勫畾涔夌殑綾葷被鍨嬪拰鐢ㄦ埛閫氳繃class鍏抽敭瀛楃殑鑷畾涔夌被綾誨瀷
3.瀵硅薄綾誨瀷錛?/span>
object綾葷被鍨嬫槸鎵鏈夊叾浠栫被鍨嬬殑鏈緇堝熀綾匯?/span>C# 聽涓殑姣忕綾誨瀷閮芥槸鐩存帴鎴栭棿鎺ヤ粠object綾葷被鍨嬫淳鐢熺殑銆?/span>
鍏抽敭瀛?/span>object鍙槸棰勫畾涔夌被System.Object鐨勫埆鍚嶃?/span>
4.string綾誨瀷:綾葷被鍨?/span> | 璇存槑 |
System.Object | 鎵鏈夊叾浠栫被鍨嬬殑鏈緇堝熀綾匯?/span> |
System.String | C# 聽璇█鐨勫瓧絎︿覆綾誨瀷銆?/span> |
System.ValueType | 鎵鏈夊肩被鍨嬬殑鍩虹被銆?/span> |
System.Enum | 鎵鏈夋灇涓劇被鍨嬬殑鍩虹被銆?/span> |
System.Array | 鎵鏈夋暟緇勭被鍨嬬殑鍩虹被銆?/span> |
System.Delegate | 鎵鏈夊鎵樼被鍨嬬殑鍩虹被銆?/span> |
System.Exception | 鎵鏈夊紓甯哥被鍨嬬殑鍩虹被銆?/span> |
sealed class T_Box: System.ValueType
{
T value;
public T_Box(T t) {
聽聽聽聽 value = t;
}
}