<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      實戰 .Net 數據訪問層 - 15

      [摘要]上面的示意圖中,步驟7指向的Remoting Server就是Host程序,而Remoting Server包裹著的RemoteCustomer就是真正提供服務的數據操作類。以下所列代碼即為該類的部...
      上面的示意圖中,步驟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



      日韩精品一区二区三区高清