"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[1168],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=c(n),k=a,d=u["".concat(p,".").concat(k)]||u[k]||m[k]||i;return n?r.createElement(d,o(o({ref:t},s),{},{components:n})):r.createElement(d,o({ref:t},s))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const i={id:"serializationselector",title:"\u5e8f\u5217\u5316\u9009\u62e9\u5668"},o=void 0,l={unversionedId:"serializationselector",id:"serializationselector",title:"\u5e8f\u5217\u5316\u9009\u62e9\u5668",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/serializationselector.mdx",sourceDirName:".",slug:"/serializationselector",permalink:"/touchsocket/docs/serializationselector",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/serializationselector.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675690367,formattedLastUpdatedAt:"Feb 6, 2023",frontMatter:{id:"serializationselector",title:"\u5e8f\u5217\u5316\u9009\u62e9\u5668"},sidebar:"docs",previous:{title:"\u8c03\u7528\u914d\u7f6e",permalink:"/touchsocket/docs/rpcoption"},next:{title:"\u751f\u6210\u3001\u83b7\u53d6\u4ee3\u7406",permalink:"/touchsocket/docs/generateproxy"}},p={},c=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u652f\u6301\u7684\u5e8f\u5217\u5316",id:"\u4e8c\u652f\u6301\u7684\u5e8f\u5217\u5316",level:2},{value:"\u4e09\u3001\u4f7f\u7528\u9884\u8bbe\u5e8f\u5217\u5316",id:"\u4e09\u4f7f\u7528\u9884\u8bbe\u5e8f\u5217\u5316",level:2},{value:"\u56db\u3001\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316",id:"\u56db\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316",level:2},{value:"4.1 \u5b9a\u4e49\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u5668",id:"41-\u5b9a\u4e49\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u5668",level:3},{value:"4.2 \u4f7f\u7528",id:"42-\u4f7f\u7528",level:3}],s={toc:c};function m(e){let{components:t,...i}=e;return(0,a.kt)("wrapper",(0,r.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u4ece\u4e0b\u56fe\uff08\u56fe\u7247\u6765\u6e90",(0,a.kt)("a",{parentName:"p",href:"https://www.jianshu.com/p/7d6853140e13"},"\u7f51\u7edc"),"\uff09\u53ef\u4ee5\u770b\u51fa\uff0c\u5e8f\u5217\u5316\u662fRPC\u4e2d\u81f3\u5173\u91cd\u8981\u7684\u4e00\u4e2a\u73af\u8282\uff0c\u53ef\u4ee5\u8bf4\uff0c\u5e8f\u5217\u5316\u7684\u4f18\u52a3\uff0c\u4f1a\u5f88\u5927\u7a0b\u5ea6\u7684\u5f71\u54cdRPC\u8c03\u7528\u6027\u80fd\u3002"),(0,a.kt)("img",{src:n(4831).Z}),(0,a.kt)("h2",{id:"\u4e8c\u652f\u6301\u7684\u5e8f\u5217\u5316"},"\u4e8c\u3001\u652f\u6301\u7684\u5e8f\u5217\u5316"),(0,a.kt)("p",null,"\u5728TouchRpc\u4e2d\uff0c\u5185\u7f6e\u4e86\u56db\u79cd\u5e8f\u5217\u5316\u65b9\u5f0f\uff0c\u5206\u522b\u4e3a",(0,a.kt)("inlineCode",{parentName:"p"},"FastBinary"),"\u3001",(0,a.kt)("inlineCode",{parentName:"p"},"Json"),"\u3001",(0,a.kt)("inlineCode",{parentName:"p"},"Xml"),"\u3001",(0,a.kt)("inlineCode",{parentName:"p"},"SystemBinary"),"\u3002\u8fd9\u56db\u79cd\u65b9\u5f0f\u7684\u7279\u70b9\uff0c\u5c31\u662f\u5176\u5e8f\u5217\u5316\u7684\u7279\u70b9\u3002"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null}),(0,a.kt)("th",{parentName:"tr",align:null},"FastBinary"),(0,a.kt)("th",{parentName:"tr",align:null},"Json"),(0,a.kt)("th",{parentName:"tr",align:null},"Xml"),(0,a.kt)("th",{parentName:"tr",align:null},"SystemBinary"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"\u7279\u70b9"),(0,a.kt)("td",{parentName:"tr",align:null},"\u5e8f\u5217\u5316\u65b9\u5f0f\u901f\u5ea6\u5feb\uff0c\u6570\u636e\u91cf\u5c0f\uff0c\u4f46\u662f\u517c\u5bb9\u7684\u6570\u636e\u683c\u5f0f\u4e5f\u6bd4\u8f83\u6709\u9650\u3002\u4ec5\u652f\u6301\u57fa\u7840\u7c7b\u578b\u3001\u81ea\u5b9a\u4e49\u5b9e\u4f53\u7c7b\u3001\u6570\u7ec4\u3001List\u3001\u5b57\u5178"),(0,a.kt)("td",{parentName:"tr",align:null},"\u517c\u5bb9\u6027\u597d\uff0c\u53ef\u8bfb\u6027\u5f3a\uff0c\u4f46\u662f\u53d7\u5b57\u7b26\u4e32\u5f71\u54cd\uff0c\u6027\u80fd\u4e0d\u51fa\u4f17\uff0c\u4e14\u6570\u636e\u91cf\u53d7\u9650\u5236"),(0,a.kt)("td",{parentName:"tr",align:null},"\u517c\u5bb9\u6027\u4e00\u822c\uff0c\u53ef\u8bfb\u6027\u5f3a\uff0c\u540c\u6837\u53d7\u5b57\u7b26\u4e32\u5f71\u54cd\uff0c\u6027\u80fd\u4e0d\u51fa\u4f17\uff0c\u4e14\u6570\u636e\u91cf\u53d7\u9650\u5236"),(0,a.kt)("td",{parentName:"tr",align:null},"\u5e8f\u5217\u5316\u901f\u5ea6\u5feb\u3002\u4f46\u662f\u517c\u5bb9\u6027\u4f4e\u3002\u4e14\u8981\u6c42\u7c7b\u5fc5\u987b\u4e00\u81f4\uff0c\u4e0d\u7136\u9700\u8981\u91cd\u65b0\u6307\u5b9a\u56fe\u6839\u3002")))),(0,a.kt)("h2",{id:"\u4e09\u4f7f\u7528\u9884\u8bbe\u5e8f\u5217\u5316"},"\u4e09\u3001\u4f7f\u7528\u9884\u8bbe\u5e8f\u5217\u5316"),(0,a.kt)("p",null,"\u5728TouchRpc\u4e2d\uff0c\u9009\u62e9\u5e8f\u5217\u5316\u662f\u975e\u5e38\u7b80\u5355\u7684\uff0c\u4e14\u5e8f\u5217\u5316\u65b9\u5f0f\u5b8c\u5168\u7531",(0,a.kt)("inlineCode",{parentName:"p"},"\u8c03\u7528\u7aef"),"\u51b3\u5b9a\u3002\n\u5728\u5b9e\u9645\u7684\u8c03\u7528\u4e2d\uff0c\u901a\u8fc7",(0,a.kt)("inlineCode",{parentName:"p"},"InvokeOption"),"\u7684\u53c2\u6570\u6307\u5b9a\u3002"),(0,a.kt)("p",null,"\u5b9e\u9645\u4e0a\uff0c\u53ea\u9700\u8981\u4f20\u5165\u76f8\u5173\u53c2\u6570\u5373\u53ef\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},'InvokeOption invokeOption = new InvokeOption() //InvokeOption\u662f\u7ed3\u6784\u4f53\uff0c\u6240\u4ee5\u6210\u5458\u5fc5\u987b\u5168\u90e8\u521d\u59cb\u5316\u3002\n{\n FeedbackType = FeedbackType.WaitInvoke,\n Timeout = 1000 * 10\n};\n;\ninvokeOption.SerializationType = SerializationType.FastBinary;\n//invokeOption.SerializationType = Serialization.SerializationType.Json;\n//invokeOption.SerializationType = Serialization.SerializationType.Xml;\nstring returnString = client.Invoke("TestOne", invokeOption, "10");\n')),(0,a.kt)("h2",{id:"\u56db\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316"},"\u56db\u3001\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316"),(0,a.kt)("h3",{id:"41-\u5b9a\u4e49\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u5668"},"4.1 \u5b9a\u4e49\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u5668"),(0,a.kt)("p",null,"\u60f3\u8981\u5b9e\u73b0\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\uff0c\u5fc5\u987b\u901a\u8fc7\u91cd\u5199\u5e8f\u5217\u5316\u9009\u62e9\u5668\uff0c\u5b9e\u73b0",(0,a.kt)("inlineCode",{parentName:"p"},"SerializeParameter"),"\u548c",(0,a.kt)("inlineCode",{parentName:"p"},"DeserializeParameter"),"\u51fd\u6570\u3002"),(0,a.kt)("p",null,"\u4e0b\u5217\u4ee3\u7801\u5c06\u4ee5",(0,a.kt)("inlineCode",{parentName:"p"},"MemoryPack"),"\u5e8f\u5217\u5316\u4f5c\u4e3a\u793a\u4f8b\uff0c\u5e76\u4e14\u4fdd\u7559\u4e86\u9884\u8bbe\u5e8f\u5217\u5316\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},"public class MemoryPackSerializationSelector:DefaultSerializationSelector\n{\n public override byte[] SerializeParameter(SerializationType serializationType, object parameter)\n {\n if ((byte)serializationType == 4)\n {\n return MemoryPackSerializer.Serialize(parameter.GetType(),parameter);\n }\n return base.SerializeParameter(serializationType, parameter);\n }\n\n public override object DeserializeParameter(SerializationType serializationType, byte[] parameterBytes, Type parameterType)\n {\n if ((byte)serializationType == 4)\n {\n if (parameterBytes==null)\n {\n return default;\n }\n return MemoryPackSerializer.Deserialize(parameterType,parameterBytes);\n }\n return base.DeserializeParameter(serializationType, parameterBytes, parameterType);\n }\n}\n")),(0,a.kt)("h3",{id:"42-\u4f7f\u7528"},"4.2 \u4f7f\u7528"),(0,a.kt)("p",null,"\u5fc5\u987b\u5728",(0,a.kt)("inlineCode",{parentName:"p"},"\u670d\u52a1\u5668"),"\u548c",(0,a.kt)("inlineCode",{parentName:"p"},"\u5ba2\u6237\u7aef"),"\u7684",(0,a.kt)("strong",{parentName:"p"},"Config\u914d\u7f6e"),"\u4e2d\u8bbe\u7f6e\u89e3\u6790\u5668\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},"var config = new TouchSocketConfig()//\u914d\u7f6e\n .SetSerializationSelector(new MemoryPackSerializationSelector());\n")),(0,a.kt)("p",null,"\u7136\u540e\uff0c\u56e0\u4e3a\u8d4b\u503c\u65f6\u662f",(0,a.kt)("inlineCode",{parentName:"p"},"SerializationType"),"\u7684\u679a\u4e3e\u7c7b\u578b\uff0c\u6240\u4ee5\u6267\u884c\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362\u5373\u53ef\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},'InvokeOption invokeOption = new InvokeOption()\n{\n FeedbackType = FeedbackType.WaitInvoke,\n SerializationType = (SerializationType)4,\n Timeout = 1000 * 10\n};\n\nvar msg = client.Login(new LoginModel() { Account = "Account", Password = "Password" }, invokeOption);\n')),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u56e0\u4e3a\u4f7f\u7528\u7684\u662f",(0,a.kt)("inlineCode",{parentName:"p"},"MemoryPack"),"\u5e8f\u5217\u5316\uff0c\u6240\u4ee5\u6700\u597d\u5c06Rpc\u7684\u6240\u6709\u53c2\u6570\u58f0\u660e\u5728\u5355\u72ec\u7684\u7a0b\u5e8f\u96c6\u4e2d\u3002\u8fd9\u6837\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u9879\u76ee\u90fd\u53ef\u4ee5\u76f4\u63a5\u5f15\u7528\u3002")),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/TouchRpc%E7%AE%80%E5%8D%95%E7%A4%BA%E4%BE%8B/%E5%BA%8F%E5%88%97%E5%8C%96%E9%80%89%E6%8B%A9%E5%99%A8"},"\u5e8f\u5217\u5316\u9009\u62e9\u5668\u793a\u4f8b\u4ee3\u7801")))}m.isMDXComponent=!0},4831:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/serializationselector-1-68b78a140237e0d5c54a0e445674a61c.png"}}]);