.NET远程对象:
激活方式『服务器激活、客户端激活』
类似于:聊天室客服、电话客服
服务器激活『单体、单一调用』
单体方式:服务器端的一个远程对象为所有的请求服务;
单一调用:服务器为每次请求生成一个新对象来提供服务,只为一次调用服务,为一个方法调用服务;
如果客户端持有远程对象代理就可以对同一远程对象多次调用。
==============================================================================
应用框架的设计与实现——.NET平台(4)
4.2.3 .NET Remoting 实例
参照编码,执行代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace BusinessObjectLibrary
{
public class BusinessObject
{
public string hi()
{
return "Hello World! (server)";
}
}
}
服务器端:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using BusinessObjectLibrary;
namespace ServerPrj
{
public class Class1
{
public static void Main()
{
RemotingConfiguration.Configure("ServerPrj.exe.config");
Console.WriteLine("Press enter to exit the application");
Console.ReadLine();
}
}
}
配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown
mode="Singleton"
type="BusinessObjectLibrary.BusinessObject,BusinessObjectLibrary"
objectUri="BusinessObject.rem" />
</service>
<channels>
<channel ref="http" port="8989"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
客户端:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.Remoting;
using BusinessObjectLibrary;
namespace Clientproj
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
RemotingConfiguration.Configure("Clientproj.exe.config");
BusinessObject bo = new BusinessObject();
MessageBox.Show(bo.hi());
}
}
}
配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application name="Client">
<client>
<wellknown url="http://localhost:8989/BusinessObject.rem"
type="BusinessObjectLibrary.BusinessObject, BusinessObjectLibrary" />
</client>
</application>
</system.runtime.remoting>
</configuration>
编译执行结果:试验失败。
客户端取得的结果是从本地加载执行的,不是服务器端提供的服务。
问题:如何知道服务器端提供哪些服务?如何请求这些服务?如何确定客户端获得服务端的服务了?