一直想把自己学习的东西记录下来,但很长时间下不了手,有时想下是不是要再回去学好自己的语文,在未来一段日子,打算对.Net Remoting进行研究,将对微软特约讲师:任旻 的一套视频教程进行学习,结合各同行关于Remoting的一些文章与看法,将学习.Net Remoting的过程与体会记录下来,作为自己成长轨迹的见证.
看了不少同行博客里关于Remoting文章。有很多很优秀的文章,Bruce Zhang's Blog(http://www.cnblogs.com/wayfarer/category/1235.html)是很好的学习资源
Remoting 的词根---Remote 即Remote Object ,分布式对象.这样我们可以在服务器应用程序上通过网络调用方法,而不是发送数据,这是Web Service与Remoting技术的目标,个人觉得Web Serivce主要用于在不同平台之间的通信,如Java与.Net平台之间的互操作,Remoting 在.Net平台的分布式操作具有性能优势.同时是用于对等通信的一种好技术
Remoting 使用的技术
1,XML
2,SOAP(简单对象传输协议)
3,序列化(添加[Serializable]或实现ISerializable接口)
先看下对象的序列化吧,此Demo来之视频教程
先建立一个可序列化的对象:(添加[Serializable]属性或实现ISerializable接口)
主窗体:
![](https://www.cnblogs.com/images/cnblogs_com/mshwu/1.jpg)
序列化为二进制文件:
xml
此例子的完整Demo下载:
/Files/mshwu/SerializableDemo.rar
看了不少同行博客里关于Remoting文章。有很多很优秀的文章,Bruce Zhang's Blog(http://www.cnblogs.com/wayfarer/category/1235.html)是很好的学习资源
Remoting 的词根---Remote 即Remote Object ,分布式对象.这样我们可以在服务器应用程序上通过网络调用方法,而不是发送数据,这是Web Service与Remoting技术的目标,个人觉得Web Serivce主要用于在不同平台之间的通信,如Java与.Net平台之间的互操作,Remoting 在.Net平台的分布式操作具有性能优势.同时是用于对等通信的一种好技术
Remoting 使用的技术
1,XML
2,SOAP(简单对象传输协议)
3,序列化(添加[Serializable]或实现ISerializable接口)
先看下对象的序列化吧,此Demo来之视频教程
先建立一个可序列化的对象:(添加[Serializable]属性或实现ISerializable接口)
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
namespace SerializableDemo
6
{
7
[Serializable]
8
public class Sumof
9
{
10
public Sumof()
11
{
12
13
}
14
public DecimalList decimalList = new DecimalList();
15![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
public decimal sum, avg;
17![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
public void Calculate()
19
{
20![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
this.sum = 0;
22
foreach (decimal m in decimalList)
23
{
24
sum += m;
25
}
26
this.avg = sum / decimalList.Count;
27![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
}
29![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
}
31![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
[Serializable]
33
public class DecimalList : List<decimal>
34
{
35
}
36
}
37![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
主窗体:
![](https://www.cnblogs.com/images/cnblogs_com/mshwu/1.jpg)
序列化为二进制文件:
1
private void button2_Click(object sender, EventArgs e)
2
{
3
FileStream fileStream = new FileStream("DoSum.bin",FileMode.Create);
4
BinaryFormatter binaryFormatter = new BinaryFormatter();//二进制格式化器
5
binaryFormatter.Serialize(fileStream,sobj);
6
fileStream.Close();
7![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
}
Soap与Xml![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
1
private void button3_Click(object sender, EventArgs e)
2
{
3
FileStream fileStream = new FileStream("DoSum_Soap.xml", FileMode.Create);
4
SoapFormatter Formatter = new SoapFormatter();//SOAP格式化器
5
Formatter.Serialize(fileStream, sobj);
6
fileStream.Close();
7![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
}
9![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
private void button4_Click(object sender, EventArgs e)
11
{
12
FileStream fileStream = new FileStream("DoSum.xml", FileMode.Create);
13
XmlSerializer Formatter = new XmlSerializer(typeof(Sumof));
14
Formatter.Serialize(fileStream, sobj);
15
fileStream.Close();
16
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
运行程序,先生成对象,再序列化为所要的格式,由于没有指定位置,生成的文件将保存在应用程序EXE文件所在目录,其中序列化为Soap与Xml格式所生成的文件如下:
Soap:
1
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
2
<SOAP-ENV:Body>
3
<a1:Sumof id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/SerializableDemo/SerializableDemo%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
4
<decimalList href="#ref-3"/>
5
<sum>55</sum>
6
<avg>5</avg>
7
</a1:Sumof>
8
<a1:DecimalList id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/SerializableDemo/SerializableDemo%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
9
<List_x0060_1_x002B__items href="#ref-4"/>
10
<List_x0060_1_x002B__size>11</List_x0060_1_x002B__size>
11
<List_x0060_1_x002B__version>11</List_x0060_1_x002B__version>
12
</a1:DecimalList>
13
<SOAP-ENC:Array id="ref-4" SOAP-ENC:arrayType="xsd:decimal[16]">
14
<item>0</item>
15
<item>1</item>
16
<item>2</item>
17
<item>3</item>
18
<item>4</item>
19
<item>5</item>
20
<item>6</item>
21
<item>7</item>
22
<item>8</item>
23
<item>9</item>
24
<item>10</item>
25
<item>0</item>
26
<item>0</item>
27
<item>0</item>
28
<item>0</item>
29
<item>0</item>
30
</SOAP-ENC:Array>
31
</SOAP-ENV:Body>
32
</SOAP-ENV:Envelope>
33![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
xml
1
<?xml version="1.0"?>
2
<Sumof xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3
<decimalList>
4
<decimal>0</decimal>
5
<decimal>1</decimal>
6
<decimal>2</decimal>
7
<decimal>3</decimal>
8
<decimal>4</decimal>
9
<decimal>5</decimal>
10
<decimal>6</decimal>
11
<decimal>7</decimal>
12
<decimal>8</decimal>
13
<decimal>9</decimal>
14
<decimal>10</decimal>
15
</decimalList>
16
<sum>55</sum>
17
<avg>5</avg>
18
</Sumof>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
此例子的完整Demo下载:
/Files/mshwu/SerializableDemo.rar