65.9K
CodeProject is changing. Read more.
Home

REMOTING using SQL Server

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2 votes)

Jan 5, 2011

CPOL

2 min read

viewsIcon

12620

Example to implement remoting concept using SQL Server database

Well, this is a very simple example to implement the remoting concept using SQL Server database. It consists of 3 parts: 1)Business Component 2)Server application 3)Client application I have used the Northwind database of the SQL Server in the business logic layer.The code works OK. How to execute? 1)Click on the exe in the server application. 2)Click on the exe in the client application. The Client exe will execute as long as the server exe is running. The moment server exe is stopped, Client will generate an exception. //Note: If you are using 2 machines, specify the IP address of the server machine in place of the localhost. Business Component: //pwd is 1234: Use the password of your system. Northwind database must be installed //You can specify the IP Address of the //server computer in place of . 1)Open a class library project. Name it as remlibrary. 2)Type this code in the class file. Name the class as product.
using System; 
using System.Data; 
using System.Data.SqlClient; 

public class product:MarshalByRefObject 
{ 
public DataSet GetDataFromDatabase(int catID) 
{ 
SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=1234;database=northwind"); 
SqlDataAdapter da = new SqlDataAdapter("select productname,unitprice from products where categoryid=@a", cn); 
da.SelectCommand.Parameters.AddWithValue("@a", catID); 
DataSet ds = new DataSet(); 
da.Fill(ds, "abc"); 
return ds; 
} 
} 
Server application: 1)Open a Console Application. Name it as ConsoleApplicationrem. 2)Add a reference to System.RunTime.Remoting.dll. 3) Add reference to the remlibrary DLL.
//Note: The port number is 6 for the TCP protocol. 
//8085 or other port numbers are just fictitious port numbers. 
//For implementing on 2 different machines, the port number must be 6 using TCP 

using System; 
using System.Runtime.Remoting; 
using System.Runtime.Remoting.Channels; 
using System.Runtime.Remoting.Channels.Tcp; 
namespace ConsoleApplicationrem 
{ 
public class Server 
{ 
public static void Main() 
{ 
TcpChannel h=new TcpChannel(6); 
ChannelServices.RegisterChannel(h,false); 
RemotingConfiguration.RegisterWellKnownServiceType(typeof(product), 
"RemoteObjects",WellKnownObjectMode.Singleton); 
Console.WriteLine("The Server hasstarted"); 
Console.WriteLine("Press the enter keyto stop the server ..."); 
Console.ReadLine(); 
} 
} 
} 
For the Client application: 1)Open a windows application. Name it as WindowsApplicationrem. Paste a DataGridView, TextBox and a button on the form. 2) Add reference to the remlibrary DLL. In the Code Window (Form1.cs), the contents should be like this.
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
namespace WindowsFormsApplicationrem 
{ 
public partial class Form1 : Form 
{ 
public Form1() 
{ 
InitializeComponent(); 
} 
private void button1_Click(object sender, EventArgs e) 
{ 
product remoteObject = (product)Activator.GetObject(typeof 
(product), "tcp://localhost:6/RemoteObjects"); 
int a=Convert.ToInt32(textBox1.Text); 
DataSet ds=remoteObject.GetDataFromDatabase(a); 

dataGridView1.DataSource = ds.Tables[0]; 
} 
} 
} 
Note: 1)For 2 different machines, copy the remlibrary.dll and ConsoleApplicationrem.exe on one machine and remlibrary.dll and WindowsApplicationrem.exe on the other machine. 2)First configure the SQL Server 2005 for Remote Connections (if you are using 2 machines). This is on Server machine. It is very easy. Follow these steps: Programs--->Microsoft SQL Server 2005-->Configuration Tools--> SQL Server Surface Area Configuration--> Surface Area Configuration for Services and Connections-->Click Database Engine-->Remote Connections--> Local and Remote Connections--->Using both TCP/IP and Named Pipes Click the ConsoleApplicationrem.exe and then the WindowsApplicationrem.exe.