Skip to content

Commit 0f84aef

Browse files
committed
服务器新增性能计数缓存,客户端允许查看图形
1 parent 3b63985 commit 0f84aef

8 files changed

Lines changed: 459 additions & 137 deletions

File tree

CommonLibrary/HeadCode.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public static bool IsCustomerGroupSystem(int customer)
5454
public static int 意见反馈 { get; } = 10011;
5555
public static int 群发消息 { get; } = 10012;
5656
public static int 异常消息 { get; } = 10013;
57+
public static int 性能计数 { get; } = 10014;
5758

5859

5960

软件系统客户端模版/FormMainWindow.Designer.cs

Lines changed: 145 additions & 135 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

软件系统客户端模版/FormMainWindow.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ private void FormMainWindow_Shown(object sender, EventArgs e)
112112
远程更新ToolStripMenuItem.Enabled = false;
113113
注册账号ToolStripMenuItem.Enabled = false;
114114
消息发送ToolStripMenuItem.Enabled = false;
115+
开发中心ToolStripMenuItem.Enabled = false;
115116
}
116117
//启动定时器
117118
TimeTickInitilization();
@@ -267,6 +268,14 @@ private void 消息发送ToolStripMenuItem_Click(object sender, EventArgs e)
267268
}
268269
}
269270

271+
private void 开发中心ToolStripMenuItem_Click(object sender, EventArgs e)
272+
{
273+
using (FormSuper fs = new FormSuper())
274+
{
275+
fs.ShowDialog();
276+
}
277+
}
278+
270279
#endregion
271280

272281
#region 异步网络块
@@ -581,8 +590,9 @@ public void ThreadTimeTick()
581590
}
582591

583592

593+
584594
#endregion
585595

586-
596+
587597
}
588598
}

软件系统客户端模版/FormSuper.Designer.cs

Lines changed: 80 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Data;
5+
using System.Drawing;
6+
using System.Linq;
7+
using System.Text;
8+
using System.Windows.Forms;
9+
10+
namespace 软件系统客户端模版
11+
{
12+
public partial class FormSuper : Form
13+
{
14+
public FormSuper()
15+
{
16+
InitializeComponent();
17+
}
18+
19+
private void FormSuper_Load(object sender, EventArgs e)
20+
{
21+
22+
}
23+
24+
private void FormSuper_Shown(object sender, EventArgs e)
25+
{
26+
IsWindowShow = true;
27+
timer = new Timer();
28+
timer.Interval = 1000;
29+
timer.Tick += Timer_Tick;
30+
timer.Start();
31+
}
32+
33+
34+
35+
private void FormSuper_FormClosing(object sender, FormClosingEventArgs e)
36+
{
37+
IsWindowShow = false;
38+
}
39+
40+
41+
42+
private bool IsWindowShow { get; set; }
43+
44+
private void Timer_Tick(object sender, EventArgs e)
45+
{
46+
HslCommunication.OperateResultBytes result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.性能计数, new byte[0]);
47+
//解析
48+
if (result.IsSuccess)
49+
{
50+
int[] data = new int[result.Content.Length / 4];
51+
for (int i = 0; i < data.Length; i++)
52+
{
53+
data[i] = BitConverter.ToInt32(result.Content, i * 4);
54+
}
55+
if (IsWindowShow)
56+
{
57+
pictureBox1.Image?.Dispose();
58+
pictureBox1.Image = HslCommunication.BasicFramework.SoftPainting.GetGraphicFromArray(data, pictureBox1.Width - 2, pictureBox1.Height - 2, 7, Color.Blue);
59+
}
60+
}
61+
}
62+
63+
private Timer timer = null;
64+
}
65+
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<root>
3+
<!--
4+
Microsoft ResX Schema
5+
6+
Version 2.0
7+
8+
The primary goals of this format is to allow a simple XML format
9+
that is mostly human readable. The generation and parsing of the
10+
various data types are done through the TypeConverter classes
11+
associated with the data types.
12+
13+
Example:
14+
15+
... ado.net/XML headers & schema ...
16+
<resheader name="resmimetype">text/microsoft-resx</resheader>
17+
<resheader name="version">2.0</resheader>
18+
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19+
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20+
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21+
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22+
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23+
<value>[base64 mime encoded serialized .NET Framework object]</value>
24+
</data>
25+
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26+
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27+
<comment>This is a comment</comment>
28+
</data>
29+
30+
There are any number of "resheader" rows that contain simple
31+
name/value pairs.
32+
33+
Each data row contains a name, and value. The row also contains a
34+
type or mimetype. Type corresponds to a .NET class that support
35+
text/value conversion through the TypeConverter architecture.
36+
Classes that don't support this are serialized and stored with the
37+
mimetype set.
38+
39+
The mimetype is used for serialized objects, and tells the
40+
ResXResourceReader how to depersist the object. This is currently not
41+
extensible. For a given mimetype the value must be set accordingly:
42+
43+
Note - application/x-microsoft.net.object.binary.base64 is the format
44+
that the ResXResourceWriter will generate, however the reader can
45+
read any of the formats listed below.
46+
47+
mimetype: application/x-microsoft.net.object.binary.base64
48+
value : The object must be serialized with
49+
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50+
: and then encoded with base64 encoding.
51+
52+
mimetype: application/x-microsoft.net.object.soap.base64
53+
value : The object must be serialized with
54+
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55+
: and then encoded with base64 encoding.
56+
57+
mimetype: application/x-microsoft.net.object.bytearray.base64
58+
value : The object must be serialized into a byte array
59+
: using a System.ComponentModel.TypeConverter
60+
: and then encoded with base64 encoding.
61+
-->
62+
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63+
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64+
<xsd:element name="root" msdata:IsDataSet="true">
65+
<xsd:complexType>
66+
<xsd:choice maxOccurs="unbounded">
67+
<xsd:element name="metadata">
68+
<xsd:complexType>
69+
<xsd:sequence>
70+
<xsd:element name="value" type="xsd:string" minOccurs="0" />
71+
</xsd:sequence>
72+
<xsd:attribute name="name" use="required" type="xsd:string" />
73+
<xsd:attribute name="type" type="xsd:string" />
74+
<xsd:attribute name="mimetype" type="xsd:string" />
75+
<xsd:attribute ref="xml:space" />
76+
</xsd:complexType>
77+
</xsd:element>
78+
<xsd:element name="assembly">
79+
<xsd:complexType>
80+
<xsd:attribute name="alias" type="xsd:string" />
81+
<xsd:attribute name="name" type="xsd:string" />
82+
</xsd:complexType>
83+
</xsd:element>
84+
<xsd:element name="data">
85+
<xsd:complexType>
86+
<xsd:sequence>
87+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88+
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89+
</xsd:sequence>
90+
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91+
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92+
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93+
<xsd:attribute ref="xml:space" />
94+
</xsd:complexType>
95+
</xsd:element>
96+
<xsd:element name="resheader">
97+
<xsd:complexType>
98+
<xsd:sequence>
99+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100+
</xsd:sequence>
101+
<xsd:attribute name="name" type="xsd:string" use="required" />
102+
</xsd:complexType>
103+
</xsd:element>
104+
</xsd:choice>
105+
</xsd:complexType>
106+
</xsd:element>
107+
</xsd:schema>
108+
<resheader name="resmimetype">
109+
<value>text/microsoft-resx</value>
110+
</resheader>
111+
<resheader name="version">
112+
<value>2.0</value>
113+
</resheader>
114+
<resheader name="reader">
115+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116+
</resheader>
117+
<resheader name="writer">
118+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119+
</resheader>
120+
</root>

软件系统客户端模版/软件系统客户端模版.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@
8383
<Compile Include="FormRegisterAccount.Designer.cs">
8484
<DependentUpon>FormRegisterAccount.cs</DependentUpon>
8585
</Compile>
86+
<Compile Include="FormSuper.cs">
87+
<SubType>Form</SubType>
88+
</Compile>
89+
<Compile Include="FormSuper.Designer.cs">
90+
<DependentUpon>FormSuper.cs</DependentUpon>
91+
</Compile>
8692
<Compile Include="FormUpdateRemote.cs">
8793
<SubType>Form</SubType>
8894
</Compile>
@@ -119,6 +125,9 @@
119125
<EmbeddedResource Include="FormRegisterAccount.resx">
120126
<DependentUpon>FormRegisterAccount.cs</DependentUpon>
121127
</EmbeddedResource>
128+
<EmbeddedResource Include="FormSuper.resx">
129+
<DependentUpon>FormSuper.cs</DependentUpon>
130+
</EmbeddedResource>
122131
<EmbeddedResource Include="FormUpdateRemote.resx">
123132
<DependentUpon>FormUpdateRemote.cs</DependentUpon>
124133
</EmbeddedResource>

软件系统服务端模版/FormServerWindow.cs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,14 @@ private void Net_Simplify_Server_Initialization()
397397
/// <param name="data">来自客户端的字节数据</param>
398398
private void Net_simplify_server_ReceivedBytesEvent(AsyncStateOne state, int customer, byte[] data)
399399
{
400-
net_simplify_server.SendMessage(state, customer, data);
400+
if(customer==CommonHeadCode.SimplifyHeadCode.性能计数)
401+
{
402+
net_simplify_server.SendMessage(state, customer, GetPerfomace());
403+
}
404+
else
405+
{
406+
net_simplify_server.SendMessage(state, customer, data);
407+
}
401408
}
402409

403410

@@ -824,6 +831,9 @@ public void TimeTickInitilization()
824831
private void MethodOccurEverySecond()
825832
{
826833
long current1 = GC.GetTotalMemory(false);
834+
//增加到性能计数
835+
AddPerfomace(current1);
836+
827837
long current2 = 0;
828838
toolStripStatusLabel_time.Text = DateTime.Now.ToString();
829839
label_GC_Memery.Text = current1.ToString();
@@ -878,6 +888,23 @@ public void ThreadTimeTick()
878888
}
879889

880890

891+
#region 服务器内存性能缓存小模块
892+
893+
private SoftCacheArrayInt SoftCachePerfomance = new SoftCacheArrayInt(400, 0);
894+
895+
private void AddPerfomace(long value)
896+
{
897+
SoftCachePerfomance.AddValue((int)value);//虽然存在不安全隐患,但是几乎不可能大于20亿
898+
}
899+
900+
private byte[] GetPerfomace()
901+
{
902+
return SoftCachePerfomance.GetAllData();
903+
}
904+
905+
#endregion
906+
907+
881908
#endregion
882909

883910
#region 共享文件下载块

0 commit comments

Comments
 (0)