技术开发 频道

Remoting的承载方式

【IT168技术文档】

  在实际的应用中我们通常只会选择用windows服务和iis来承载远程对象。选择windows服务的原因是能自启动服务,服务器重启后不需要再去考虑启动service。选择iis的理由是我们能使用集成验证等一些iis的特性。

  可能大家会觉得这个过程将是一个复杂的过程,其实不然,下面说一下实现方法,步骤非常少。

  先来建立远程对象:

using System; using System.Data; using System.Data.SqlClient; namespace RemoteObject { public class MyObject:MarshalByRefObject { public DataSet GetData() { SqlConnection conn=new SqlConnection(
System.Configuration.ConfigurationSettings.AppSettings[
"strconn"
]); SqlDataAdapter da=new SqlDataAdapter("select * from UBI_ProvinceMaster",conn); DataSet ds=new DataSet(); da.Fill(ds); return ds; } } }

  客户端仍然是一个控制台来进行测试:

RemoteObject.MyObject app = (RemoteObject.MyObject)Activator.GetObject(typeof(
RemoteObject.MyObject),System.Configuration. ConfigurationSettings.AppSettings[
"ServiceURL"
]); DataTable dt=app.GetData().Tables[0]; foreach(DataRow dr in dt.Rows) { Console.WriteLine(dr["iPrMId"]+" "+dr["vPrMName"]); } Console.ReadLine();

  服务端配置文件:

<configuration> <appSettings> <add key="strconn" value="server=(local);uid=sa;pwd=;database=UBISOFT" /> </appSettings> <system.runtime.remoting> <application name="RemoteServer"> <service> <wellknown type="RemoteObject.MyObject,RemoteObject"
objectUri
="RemoteObject.MyObject"
mode="SingleCall" /> </service> <channels> <channel ref="tcp" port="9999"/> </channels> </application> </system.runtime.remoting> </configuration>

  运行程序,我们得到的是一个省市的列表。

0
相关文章