2012-02-28 51 views
0

我正在開發WPF客戶端應用程序。我從來沒有見過任何人在客戶端使用ORM。可以在客戶端應用程序中使用ORM(EF或nHibernate)而不會影響性能

我在這裏把一些分析在客戶端與服務器應用程序中使用ORM。

  1. 默認情況下它是懶惰的。這意味着,直到查詢執行第一次沒有任何反應,但在查詢被緩存之後。現在這可以在服務器應用程序中理解,但客戶端經常啓動,因此我可以在客戶端應用程序中使用預先加載嗎?

  2. 如果dll被篡改,黑客很容易找到數據,因爲他可以立即看到所有的數據庫結構?

  3. 在客戶端使用ORM時有什麼其他含義?

謝謝, OMKAR

回答

2

1)既EF和NHibernate可以設置爲急於 2)與DLL n要篡改,但兩者具有pipline型設計這樣的代碼可以插入pipline - 例如EF/NHhibernate探查器做到這一點 3)客戶端不應該如此不同 - 我們使用EF,服務器/客戶端,並沒有發現任何差異

+0

謝謝。在客戶端使用ORM有什麼好處? – om471987 2012-02-28 19:58:26

+0

開發速度主要,拼寫錯誤的列名,強類型轉換和intelisense沒有運行時錯誤。客戶端驗證數據類型和約束。如果你已經學習了LINQ,那麼你可以使用它(LINQ to SQL不再被推薦 - 但是LINQ to EF/Nhibernate很酷) – 2012-02-28 20:03:38

+0

O,它們可以防止客戶端應用程序發生SQL注入攻擊, Ui元素而不是參數化的querries--並不是說你只是做一個觀察:-) – 2012-02-28 20:04:41

1

我們將它用於我們的富客戶端應用程序,並沒有太多問題。你必須改變你的想法 - 但我們真的很喜歡模型類(而不是使用手工製作的sql)。

  • 我真的會對你渴望加載的意見過時。我會嘗試使用延遲加載來開發應用程序,如果您遇到問題,請嘗試更改爲急切加載。製作「視圖數據對象」,並映射數據庫實體,這可能與懶加載問題的幫助(Ayende Rahien寫了很多對這些東西 - 你可以檢查他的博客:http://ayende.com/blog - 一個很好的入門可能是他的MSDN文章http://msdn.microsoft.com/en-us/magazine/ee819139.aspx
  • 篡改DLLs - 我並沒有真正意見到這一點
  • 其他影響 - 你必須考慮會話管理,因爲它不像服務器端應用程序那麼容易 - 這是對我們來說最大的改變。但另一方面,您可以擺脫「已有與此連接關聯的數據閱讀器」問題。

整個會話管理在開始時可能壓倒一切,所以我認爲你應該從一個好的結構開始 - 就像Ayende的文章中所顯示的那樣。我不喜歡這種方法,你可以嘗試一個像Dapper這樣的「瘦」ORM:http://code.google.com/p/dapper-dot-net/

相關問題