技术开发 频道

.Net Remoting和Web Service大比拼



五、实例

    在这部分,我们将使用一个简单的例子来演示如何编写Web Services和远程对象。下面我们通过一个简单的远程对象开始我们的学习。

1. 建立一个远程对象
 
    为了建立这个远程对象,我们需要写一个从MarshalByRefObject继承的。代码如下如示:

using System; namespace RemoteClassLib { public class MyRemoteObject : System.MarshalByRefObject { public MyRemoteObject() { Console.WriteLine("Constructor called"); } public string Hello(string name) { Console.WriteLine("Hello Called"); return "Hello " + name; } } }
上面的代码非常简单和直接。一开始有一个从MarshalByRefObject.继承的类。然后我们加入了这个类的构造方法,并将一条信息输出到控制台。然后我们写一个Hello方法用于返回一个值。一但这个远程对象被建立,下一步就是建立一个控制台应用程序来从配置文件中读远程对象的信息。

using System; using System.Runtime.Remoting; namespace RemoteClassLibServer { class RemoteServer { [STAThread] static void Main(string[] args) { RemotingConfiguration.Configure( "RemoteClassLibServer.exe.config"); Console.WriteLine("Press return to Exit"); Console.ReadLine(); } } }

 

在上面的main方法中,我们只是使用RemotingConfiguration.Configure方法从配置文件中读入配置信息。并等待客户端连接它。上面所使用的配置文件的形式如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application name="RemoteClassLibServer"> <service> <wellknown mode="SingleCall" type="RemoteClassLib.MyRemoteObject,RemoteClassLib" objectUri="MyRemoteObject"> </wellknown> </service> <channels> <channel ref="tcp server" port="9000"/> </channels> </application> </system.runtime.remoting> </configuration>

一但服务器程序被启动,然后这个客户端应用程序就可以开始建立远程对象的实例,并且调用相应的方法。在下一部分,我们将理解建立ASP.NET web services的过程。

2. 建立一个ASP.NET Web Service
 
    在前面曾提及,使用VS.NET建立一个ASP.NET Web Service是非常容易的。只需要使用ASP.NET Web Service模板建立一个Web Service工程。并输入工程名。一位工程被建立。将service1.asmx文件的内容为如下的形式:

using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; namespace XmlWebServicesExample { public class Service1 : System.Web.Services.WebService { public Service1() { } [WebMethod (EnableSession=true)] public string HelloWorld() { return "Hello World"; } } }

 我们可以从上面的代码看出,Web Service类名为Service1,从System.Web.Services.WebService继承。从WebService类继承是可选的,这主要是为了可以访问类似的ASP.NET对象,如Application、Session、User和Context。然后我们还加入了一个叫HelloWorld的方法,这个方法返回一个简单的字符串给Web Service的调用者。在HelloWorld方法的WebMethod属性中,我们还通过EnableSessionn属性指定ASP.NET Web service的会话状态为打开。
六、结论
 
    .NET remoting和ASP.NET Web Service都是非常强大的技术,这两种技术都提供了适当的框架来开发分布式的应用程序。充分理解这两种技术如何工作,并如何正确选择它们是非常重要的。如果应用程序要求互操作性,并且必须在公共网络中,Web Services将是最好的选择。如果要求和其他的.NET组件进行通讯,并且性能非常关键,那么.NET Remoting技术是最好的选择。总而言之,当我们需要从不同的计算平台发送和接收数据时,使用Web Service,而需要在.NET应用程序之间进行通讯时,就需要使用.NET remoting技术。在一些应用环境中,我们可以将Web Service和.NET remoting联合起来使用。这样会有更好的效果。
1
相关文章