Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 1:35:51
ASP.NET Remoting体系结构(八)

ASP.NET Remoting体系结构(八): 构建远程类对象

构建远程类对象

(1)在VS2005中新建一个项目,选择Windows窗体模板,将窗体的输出类型设置为类库并命名为RemotingClass,同时将应用程序的输出类型改为类库,如图1所示。

(2)将窗体类改为FarClass并在窗体代码文件中加入如下代码:

namespace RemotingClass

{

public partial class FarClass : Form

{

public static int i;

public FarClass()

{

InitializeComponent();

}

public int GetTime()

{

StreamWriter sw = new StreamWriter("hb.txt", True);

sw.WriteLine("远程类对象被第" + i + "次调用" + DateTime.Now.ToString());

sw.Close();

i++;

MessageBox.Show("远程类在服务器端对象被"+i+"次调用"+DateTime.Now.ToString());

return i;

}

}

}

如果是用户编写的远程类,则必须继承System.MarshalByRefObject。因为Form类已经继承于System.MarshalByRefObject,所以本例没有继承。代码如下:

public static int i;

制作一个计数器,来记录远程类对象被调用了几次,代码如下:

StreamWriter sw = new StreamWriter("hb.txt", True);

sw.WriteLine("远程类对象被第" + i + "次调用" + DateTime.Now.ToString());

sw.Close();

StreamWriter是一个专门用于文件写入的类,这里用来对远程类的调用做一个记录以便体会远程调用的这种体系。StreamWriter("hb.txt", True) 构造函数中的第一个参数为文件名,第二个参数如果为True,则表示在文件末尾追加;fasle表示写入的内容要覆盖以前内容。sw.WriteLine()函数是用来将一个字符串写入一行。DateTime.Now.ToString()是系统当前时间。最后将Stream Writer对象的实例关闭。代码如下:

MessageBox.Show("远程类在服务器端对象被"+i+"次调用"+DateTime.Now.ToString());

在弹出的MessageBox中,在服务端看到客户端调用远程类,每调用一次就可以看到服务端弹出的窗体以显示远程类的调用。

(3)编译程序生成类库。

完整程序代码如下:

★ ★★★★Program.cs主程序文件完整程序代码★★★★★

using System;

using System.Collections.Generic;

using System.Windows.Forms;

namespace RemotingClass

{

static class Program

{

///



/// 应用程序的主入口点。

///


[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new FarClass());

}

}

}

★ ★★★★RemotingClass.cs窗体代码文件完整程序代码★★★★★

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace RemotingClass

{

public partial class FarClass : Form

{

public static int i;

public FarClass()

{

InitializeComponent();

}

public int GetTime()

{

StreamWriter sw = new StreamWriter("hb.txt", true);

sw.WriteLine("远程类对象被第" +i + "次调用" + DateTime.Now.ToString());

sw.Close();

i++;

MessageBox.Show("远程类在服务器端对象被"+i+"次调用"+DateTime.Now.ToString());

return i;

}

}

}

★ ★★★★RemotingClass.designer.cs窗体设计文件完整程序代码★★★★★

namespace RemotingClass

{

partial class FarClass

{

///

/// 必需的设计器变量。


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759