程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> .NET Remoting編程簡介

.NET Remoting編程簡介

編輯:.NET實例教程
NET Remoting提供了一個功能強大、高效的處理遠程對象的方法,從結構上而言,.NET Remote對象非常適合通過網絡訪問資源,而又無需處理由基於SOAP的WebServices所帶來的難題。.Net Remoting使用起來比Java的RMI簡單,但要比創建Web Service難度大一些。

在本篇文章中,我們將創建一個從數據庫讀入內容的遠程對象。文中還包括了一個忽略數據庫功能的替補對象,以使沒有數據庫可以使用的讀者仍然能夠使用.Net Remoting。

第一步:創建共享庫

依次點擊“文件”->“新創建”->“工程”,選擇創建一個C# Library,並將其命名為ResumeServerLibrary,然後點擊OK按鈕。這將創建一個我們的.Net Remote客戶端和服務器端用來通訊的“共享命令集”。

正面是完整的代碼,如果要跳過數據庫訪問部分,可以使用下面的代碼替換ResumeLoader對象:

public class ResumeLoader : System.MarshalByRefObject
{
 public ResumeLoader()
 {
   System.Console.WriteLine("New Referance Added!");
  }

  public Resume GetResumeByUserID(decimal userID)
 {
  return new Resume(1);
 }
}

名字空間是對象所需要的。請記住,如果得到System.Runtime.Remoting.Channels.Tcp名字空間不存在的信息,請檢查是否象上面的代碼那樣添加了對System.Runtime.Remoting.dll的引用。

using System;
  using System.Runtime;
  using System.Data.SqlClIEnt;

我們為對象使用的名字空間是DotNetRemoteTest,下面的對象是MarshalByRefObject,在其中我們創建了一個引用和包括服務器端數據庫操作全部完成所需要的所有工作。

namespace DotNetRemoteTest
  {
  public class ResumeLoader : System.MarshalByRefObject
  {
  private SqlConnection dbConnection;

public ResumeLoader()
  {
  this.dbConnection = new System.Data.SqlClIEnt.SqlConnection();
  this.dbConnection.ConnectionString =
  "data source=GRIMSAADO2K;initial catalog=underground;integrated security=SSPI;pers" +
  "ist security info=True;workstation id=GRIMSAADO2K;packet size=4096";
  /*具體的連接字符串會有所不同,這超出了本篇文章的范圍。如果不清楚如何創建一個數據庫連接,請使用這一對象的另一個版本。*/
  System.Console.WriteLine("New Referance Added!");
  }

public Resume GetResumeByUserID(decimal userID)
  {
  Resume resume = new Resume();
  try
  {
  dbConnection.Open();
  SqlCommand cmd = new SqlCommand(
  "SELECT ResumeID, UserID, Title, Body FROM Resume as theResume WHERE theResume.UserID="+ userID +""
  , dbConnection
  );
  SqlDataReader aReader = cmd.ExecuteReader();
  if(aReader.Read())
  {
  resume.ResumeID=aReader.GetDecimal(0);
  resume.UserID=aReader.GetDecimal(1);
  resume.Title=aReader.GetSt

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved