在寫應用程式時,常常需要實作一些存取Server資料庫的行為
有時候我們會從ClientAP直接連接到Server的資料庫去作存取的動作
可是這麼作似乎有些安全性的考量,因此我們希望能夠透過一支中介的程式才幫我們做資料庫的存取,這時候使用 .Net Remoting 可以是一個簡單的解決方式。
程式的原始檔,總共分為4個。其中,Client端 與 Server端各占兩個。
在Server端的部分需要如下的檔案:
Remote.cs
using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace Remote
{
interface IRemoteObject
{
bool Login(string account, string password);
}
public class RemoteObject : MarshalByRefObject, IRemoteObject
{
#region IRemoteObject 成員
bool IRemoteObject.Login(string account, string password)
{
//方法的實作
//return true or false
.
.
.
}
#endregion
}
}
這檔案中實作Login方法的地方並不是重點,
重點是我們宣告了一個 IRemoteObject 並且實作它。
實做出來的類別必須繼承 MarshalByRefObject
Server端的第2個檔案
Server.cs
using Remote;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace Server
{
public class CServer
{
private TcpChannel channel = null;
public void StartService()
{
try
{
//先建立一個通道。7181是port 可以隨便打
channel = new TcpChannel(7181);
//跟系統註冊此通道
ChannelServices.RegisterChannel(channel);
//跟系統註冊RemoteObject,及RemoteObject的路徑是ServiceMessage
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "ServiceMessage", WellKnownObjectMode.SingleCall);
}
catch
{
MessageBox.Show("無法啟動服務");
ChannelServices.UnregisterChannel(channel);
}
}
}
}
沒有留言:
張貼留言