Skip to content

Commit 4ea6624

Browse files
authored
doc(TcpSocket): update TcpSokcet sample code (#6477)
* feat: 移动 Socket 相关代码到扩展包 * test: 更新单元测试 * doc: 更新示例 * chore: 增加对 TcpSocket 项目依赖
1 parent ca862b0 commit 4ea6624

File tree

6 files changed

+56
-47
lines changed

6 files changed

+56
-47
lines changed

src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
<PackageReference Include="BootstrapBlazor.SvgEditor" Version="9.0.3" />
7070
<PackageReference Include="BootstrapBlazor.SummerNote" Version="9.0.4" />
7171
<PackageReference Include="BootstrapBlazor.TableExport" Version="9.2.6" />
72+
<PackageReference Include="BootstrapBlazor.TcpSocket" Version="9.0.0-beta01" />
7273
<PackageReference Include="BootstrapBlazor.Topology" Version="9.0.1" />
7374
<PackageReference Include="BootstrapBlazor.UniverIcon" Version="9.0.1" />
7475
<PackageReference Include="BootstrapBlazor.UniverSheet" Version="9.0.5" />
@@ -85,6 +86,10 @@
8586

8687
<ItemGroup>
8788
<Using Include="BootstrapBlazor.Components" />
89+
<Using Include="BootstrapBlazor.DataAdapters" />
90+
<Using Include="BootstrapBlazor.DataHandlers" />
91+
<Using Include="BootstrapBlazor.DataConverters" />
92+
<Using Include="BootstrapBlazor.TcpSocket" />
8893
<Using Include="BootstrapBlazor.Server.Components.Components" />
8994
<Using Include="BootstrapBlazor.Server.Components.Layout" />
9095
<Using Include="BootstrapBlazor.Server.Data" />

src/BootstrapBlazor.Server/Components/Samples/SocketFactories.razor

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<h3>Tcp 套接字服务 <code>ITcpSocketFactory</code></h3>
55
<h4>组件库内置了 Socket 套接字通讯服务</h4>
66

7+
<PackageTips Name="BootstrapBlazor.TcpSocket" />
8+
79
<p class="code-label">1. 服务注入</p>
810

911
<Pre>services.AddBootstrapBlazorTcpSocketFactory();</Pre>
@@ -84,26 +86,26 @@ private async Task CreateClient()
8486
<p>数据适配器设计思路如下</p>
8587

8688
<ol class="ul-demo">
87-
<li>使用 <code>SocketDataTypeConverterAttribute</code> 标签约定通讯数据使用那个转换类型进行转换 指定类型需继承 <code>ISocketDataConverter</code>
89+
<li>使用 <code>DataTypeConverterAttribute</code> 标签约定通讯数据使用那个转换类型进行转换 指定类型需继承 <code>IDataConverter</code>
8890
接口
8991
</li>
90-
<li>使用 <code>SocketDataPropertyConverterAttribute</code> 标签约定如何转换数据类型 (Property) 属性值</li>
92+
<li>使用 <code>DataPropertyConverterAttribute</code> 标签约定如何转换数据类型 (Property) 属性值</li>
9193
</ol>
9294

93-
<Pre>[SocketDataTypeConverter(Type = typeof(SocketDataConverter&lt;MockEntity&gt;))]
95+
<Pre>[DataTypeConverter(Type = typeof(DataConverter&lt;MockEntity&gt;))]
9496
class MockEntity
9597
{
96-
[SocketDataPropertyConverter(Type = typeof(byte[]), Offset = 0, Length = 5)]
98+
[DataPropertyConverter(Type = typeof(byte[]), Offset = 0, Length = 5)]
9799
public byte[]? Header { get; set; }
98100

99-
[SocketDataPropertyConverter(Type = typeof(byte[]), Offset = 5, Length = 2)]
101+
[DataPropertyConverter(Type = typeof(byte[]), Offset = 5, Length = 2)]
100102
public byte[]? Body { get; set; }
101103

102-
[SocketDataPropertyConverter(Type = typeof(Foo), Offset = 7, Length = 1, ConverterType = typeof(FooConverter), ConverterParameters = ["test"])]
104+
[DataPropertyConverter(Type = typeof(Foo), Offset = 7, Length = 1, ConverterType = typeof(FooConverter), ConverterParameters = ["test"])]
103105
public string? Value1 { get; set; }
104106
}</Pre>
105107

106-
<Pre>class FooConverter(string name) : ISocketDataPropertyConverter
108+
<Pre>class FooConverter(string name) : IDataPropertyConverter
107109
{
108110
public object? Convert(ReadOnlyMemory&lt;byte&gt; data)
109111
{
@@ -114,15 +116,15 @@ class MockEntity
114116
<p class="code-label">针对第三方程序集的数据类型解决方案如下:</p>
115117
<p>使用 <code></code></p>
116118

117-
<Pre>builder.Services.ConfigureSocketDataConverters(options =>
119+
<Pre>builder.Services.ConfigureDataConverters(options =>
118120
{
119121
options.AddTypeConverter&lt;MockEntity&gt;();
120-
options.AddPropertyConverter&lt;MockEntity&gt;(entity =&gt; entity.Header, new SocketDataPropertyConverterAttribute()
122+
options.AddPropertyConverter&lt;MockEntity&gt;(entity =&gt; entity.Header, new DataPropertyConverterAttribute()
121123
{
122124
Offset = 0,
123125
Length = 5
124126
});
125-
options.AddPropertyConverter&lt;MockEntity&gt;(entity =&gt; entity.Body, new SocketDataPropertyConverterAttribute()
127+
options.AddPropertyConverter&lt;MockEntity&gt;(entity =&gt; entity.Body, new DataPropertyConverterAttribute()
126128
{
127129
Offset = 5,
128130
Length = 2

src/BootstrapBlazor.Server/Components/Samples/Sockets/DataEntities.razor

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,74 +8,74 @@
88
Introduction="@Localizer["NormalIntro"]"
99
Name="Normal" ShowCode="false">
1010
<p>
11-
通过 <code>SocketDataTypeConverterAttribute</code> 类标签与 <code>SocketDataPropertyConverterAttribute</code>
11+
通过 <code>DataTypeConverterAttribute</code> 类标签与 <code>DataPropertyConverterAttribute</code>
1212
属性标签可以将通讯数据自动转化为我们系统中需要的业务实体类,示例如下:</p>
13-
<Pre>[SocketDataTypeConverter(Type = typeof(SocketDataConverter&lt;MockEntity&gt;))]
13+
<Pre>[DataTypeConverter(Type = typeof(DataConverter&lt;MockEntity&gt;))]
1414
class MockEntity
1515
{
16-
[SocketDataPropertyConverter(Type = typeof(byte[]), Offset = 0, Length = 5)]
16+
[DataPropertyConverter(Type = typeof(byte[]), Offset = 0, Length = 5)]
1717
public byte[]? Header { get; set; }
1818

19-
[SocketDataPropertyConverter(Type = typeof(byte[]), Offset = 5, Length = 2)]
19+
[DataPropertyConverter(Type = typeof(byte[]), Offset = 5, Length = 2)]
2020
public byte[]? Body { get; set; }
2121

22-
[SocketDataPropertyConverter(Type = typeof(string), Offset = 7, Length = 1, EncodingName = "utf-8")]
22+
[DataPropertyConverter(Type = typeof(string), Offset = 7, Length = 1, EncodingName = "utf-8")]
2323
public string? Value1 { get; set; }
2424

25-
[SocketDataPropertyConverter(Type = typeof(int), Offset = 8, Length = 1)]
25+
[DataPropertyConverter(Type = typeof(int), Offset = 8, Length = 1)]
2626
public int Value2 { get; set; }
2727
}</Pre>
28-
<p class="code-label">1. <code>SocketDataTypeConverter</code> 参数说明:</p>
28+
<p class="code-label">1. <code>DataTypeConverter</code> 参数说明:</p>
2929
<ul class="ul-demo">
30-
<li><b>Type</b>: 自定义转换器类型,组件库内置了 <code>SocketDataConverter</code> 泛型类,建议看一下源码非常方便扩展出自己的转换器
30+
<li><b>Type</b>: 自定义转换器类型,组件库内置了 <code>DataConverter</code> 泛型类,建议看一下源码非常方便扩展出自己的转换器
3131
</li>
3232
</ul>
33-
<p class="code-label">2. <code>SocketDataPropertyConverterAttribute</code> 参数说明</p>
33+
<p class="code-label">2. <code>DataPropertyConverterAttribute</code> 参数说明</p>
3434
<ul class="ul-demo">
3535
<li><b>Type</b>: 转换目标数据类型</li>
3636
<li><b>Offset</b>: 数据偏移量,即在接收到的数据中起始位置</li>
3737
<li><b>Length</b>: 数据长度,即在接收到的数据中占的长度</li>
3838
<li><b>EncodingName</b>: 转成字符串时需要的编码名称,默认 null 使用 <code>utf-8</code> 编码</li>
39-
<li><b>ConverterType</b>: 自定义转化器类型,继承 <code>ISocketDataPropertyConverter</code> 接口</li>
39+
<li><b>ConverterType</b>: 自定义转化器类型,继承 <code>IDataPropertyConverter</code> 接口</li>
4040
<li><b>ConverterParameters</b>: 自定义转化器类型构造函数所需的参数,默认 null</li>
4141
</ul>
4242
<p>组件库内置了大量数据类型转换器</p>
4343
<ul class="ul-demo">
44-
<li><code>SocketDataByteArrayConverter</code> 转成 byte[] 数组类型</li>
45-
<li><code>SocketDataStringConverter</code> 转成 string 字符串类型</li>
46-
<li><code>SocketDataEnumConverter</code> 转成 enum 枚举类型</li>
47-
<li><code>SocketDataBoolConverter</code> 转成 bool 布尔类型</li>
48-
<li><code>SocketDataInt16BigEndianConverter</code> 转成 short 整形大端读取</li>
49-
<li><code>SocketDataInt32BigEndianConverter</code> 转成 int 整形大端读取</li>
50-
<li><code>SocketDataInt64BigEndianConverter</code> 转成 long 长整形大端读取</li>
51-
<li><code>SocketDataSingleBigEndianConverter</code> 转成 float 单精度浮点数大端读取</li>
52-
<li><code>SocketDataDoubleBigEndianConverter</code> 转成 double 双精度浮点数大端读取</li>
53-
<li><code>SocketDataUInt16BigEndianConverter</code> 转成 ushort 无符号整形大端读取</li>
54-
<li><code>SocketDataUInt32BigEndianConverter</code> 转成 uint 无符号整形大端读取</li>
55-
<li><code>SocketDataUInt64BigEndianConverter</code> 转成 ulong 无符号长整形大端读取</li>
56-
<li><code>SocketDataInt16LittleEndianConverter</code> 转成 short 整形小端读取</li>
57-
<li><code>SocketDataInt32LittleEndianConverter</code> 转成 int 整形小端读取</li>
58-
<li><code>SocketDataInt64LittleEndianConverter</code> 转成 long 长整形小端读取</li>
59-
<li><code>SocketDataSingleLittleEndianConverter</code> 转成 float 单精度浮点数小端读取</li>
60-
<li><code>SocketDataDoubleLittleEndianConverter</code> 转成 double 双精度浮点数小端读取</li>
61-
<li><code>SocketDataUInt16LittleEndianConverter</code> 转成 ushort 无符号整形小端读取</li>
62-
<li><code>SocketDataUInt32LittleEndianConverter</code> 转成 uint 无符号整形小端读取</li>
63-
<li><code>SocketDataUInt64LittleEndianConverter</code> 转成 ulong 无符号整形小端读取</li>
44+
<li><code>DataByteArrayConverter</code> 转成 byte[] 数组类型</li>
45+
<li><code>DataStringConverter</code> 转成 string 字符串类型</li>
46+
<li><code>DataEnumConverter</code> 转成 enum 枚举类型</li>
47+
<li><code>DataBoolConverter</code> 转成 bool 布尔类型</li>
48+
<li><code>DataInt16BigEndianConverter</code> 转成 short 整形大端读取</li>
49+
<li><code>DataInt32BigEndianConverter</code> 转成 int 整形大端读取</li>
50+
<li><code>DataInt64BigEndianConverter</code> 转成 long 长整形大端读取</li>
51+
<li><code>DataSingleBigEndianConverter</code> 转成 float 单精度浮点数大端读取</li>
52+
<li><code>DataDoubleBigEndianConverter</code> 转成 double 双精度浮点数大端读取</li>
53+
<li><code>DataUInt16BigEndianConverter</code> 转成 ushort 无符号整形大端读取</li>
54+
<li><code>DataUInt32BigEndianConverter</code> 转成 uint 无符号整形大端读取</li>
55+
<li><code>DataUInt64BigEndianConverter</code> 转成 ulong 无符号长整形大端读取</li>
56+
<li><code>DataInt16LittleEndianConverter</code> 转成 short 整形小端读取</li>
57+
<li><code>DataInt32LittleEndianConverter</code> 转成 int 整形小端读取</li>
58+
<li><code>DataInt64LittleEndianConverter</code> 转成 long 长整形小端读取</li>
59+
<li><code>DataSingleLittleEndianConverter</code> 转成 float 单精度浮点数小端读取</li>
60+
<li><code>DataDoubleLittleEndianConverter</code> 转成 double 双精度浮点数小端读取</li>
61+
<li><code>DataUInt16LittleEndianConverter</code> 转成 ushort 无符号整形小端读取</li>
62+
<li><code>DataUInt32LittleEndianConverter</code> 转成 uint 无符号整形小端读取</li>
63+
<li><code>DataUInt64LittleEndianConverter</code> 转成 ulong 无符号整形小端读取</li>
6464
</ul>
6565
<p>自定义数据类型转化器示例</p>
66-
<Pre>[SocketTypeDataConverter(Type = typeof(SocketDataConverter&lt;MockEntity&gt;))]
66+
<Pre>[SocketTypeDataConverter(Type = typeof(DataConverter&lt;MockEntity&gt;))]
6767
class MockEntity
6868
{
69-
[SocketDataPropertyConverter(Type = typeof(byte[]), Offset = 0, Length = 5)]
69+
[DataPropertyConverter(Type = typeof(byte[]), Offset = 0, Length = 5)]
7070
public byte[]? Header { get; set; }
7171

72-
[SocketDataPropertyConverter(Type = typeof(byte[]), Offset = 5, Length = 2)]
72+
[DataPropertyConverter(Type = typeof(byte[]), Offset = 5, Length = 2)]
7373
public byte[]? Body { get; set; }
7474

75-
[SocketDataPropertyConverter(Type = typeof(Foo), Offset = 7, Length = 1, ConverterType = typeof(FooConverter), ConverterParameters = ["test"])]
75+
[DataPropertyConverter(Type = typeof(Foo), Offset = 7, Length = 1, ConverterType = typeof(FooConverter), ConverterParameters = ["test"])]
7676
public string? Value1 { get; set; }
7777
}</Pre>
78-
<Pre>class FooConverter(string name) : ISocketDataPropertyConverter
78+
<Pre>class FooConverter(string name) : IDataPropertyConverter
7979
{
8080
public object? Convert(ReadOnlyMemory&lt;byte&gt; data)
8181
{
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
<Tips>
22
<p><code>ITcpSocketFactory</code> 服务仅在 <code>Server</code> 模式下可用</p>
33
</Tips>
4+
5+
<PackageTips Name="BootstrapBlazor.TcpSocket" />

src/BootstrapBlazor.Server/Locales/en-US.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7129,7 +7129,7 @@
71297129
"DataEntityTitle": "Socket Auto Entity",
71307130
"DataEntityDescription": "After receiving the communication data, it is automatically converted into the entity class required by the business",
71317131
"NormalTitle": "Basic usage",
7132-
"NormalIntro": "Enable automatic data conversion through the <code>SocketDataTypeConverterAttribute</code> attribute"
7132+
"NormalIntro": "Enable automatic data conversion through the <code>DataTypeConverterAttribute</code> attribute"
71337133
},
71347134
"BootstrapBlazor.Server.Components.Samples.NetworkMonitors": {
71357135
"NetworkMonitorTitle": "NetworkMonitor",

src/BootstrapBlazor.Server/Locales/zh-CN.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7129,7 +7129,7 @@
71297129
"DataEntityTitle": "Socket 数据转化实体类",
71307130
"DataEntityDescription": "接收到通讯数据后自动转成业务需要的实体类",
71317131
"NormalTitle": "基本用法",
7132-
"NormalIntro": "通过 <code>SocketDataTypeConverterAttribute</code> 标签开启数据自动转换功能"
7132+
"NormalIntro": "通过 <code>DataTypeConverterAttribute</code> 标签开启数据自动转换功能"
71337133
},
71347134
"BootstrapBlazor.Server.Components.Samples.NetworkMonitors": {
71357135
"NetworkMonitorTitle": "NetworkMonitor 网络状态",

0 commit comments

Comments
 (0)