實戰 .Net 資料訪問層 - 15

來源:互聯網
上載者:User
訪問|資料 上面的示意圖中,步驟7指向的Remoting Server就是Host程式,

而Remoting Server包裹著的RemoteCustomer就是真正提供服務的數

據操作類。

以下所列代碼即為該類的部分實現:



代碼13:使用Data Access Logic進行Remoting調用 – 3,RemoteCustomer



public class RemoteCustomer: MarshalByRefObject

{

public RemoteCustomer() { }



public ArrayList GetAllCustomers()

{

SqlConnection conn = new SqlConnection(

Helper.GetApplicationSetting("ConnectionString"));



// 通過ObjectSpaces擷取所有Customer資料

ObjectSpace os = new ObjectSpace(

Helper.GetApplicationSetting("MappingFile"), conn);



ObjectSet ost = os.GetObjectSet(typeof(MyCustomer), "");



// 以ArrayList方式返回所有Customer資料

// 註:目前的版本中,ObjectSet對象通過Remoting進行傳遞有 Bug

ArrayList al = new ArrayList(ost);



return al;

}

}































































作者相信,在看完代碼後,肯定有些朋友會產生這樣的疑問:

代碼13中的RemoteCustomer完成的也是我們前面分析過的

Data Access Logic所能完成的工作,雖然當中隔了一層Remoting,

但本質相同,難道就不能與代碼11,12中的CustomerDal_ORM進行

一次“有效重組”嗎?

回答是肯定的!



不過,我們還是需要做兩個非常簡單的操作:

(1) 大家還記得代碼9中的DalBase嗎?只要我們令它從MarshalByRefObject繼承(原先是預設的object),即可“輕鬆”解決這個問題!但也別高興太早,一旦如此,所有其它的Data Access Logic類也將不得不接受這“多餘的饋贈”L,要知道,畢竟通過Remoting進行Data Access Logic操作的機會還不是很多(一般通過Business Logic即可解決問題),這樣的“饋贈”並不是人人可以消受的(這也是作者並沒在DAF Solution中這麼實現的原因)!

(2)將上述RemoteCustomer的代碼併入CustomerDal_ORM中,但是,請注意:別忘了將方法名稱改掉(因為已經有一個GetAllCustomers方法存在,雖然傳回型別不同,但任何.NET下的Compiler都是無法區分這種差別的J)!



下一段:http://www.csdn.net/develop/Read_Article.asp?id=27559


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。