2009-07-30 27 views

回答

4

Henry,我讓我的Ajax請求代理我的模型對象。通常,當我這樣做時,我處於「框架」之外。這就是說,它可能(非常)需要利用你的框架,比如在一組安全模型中工作。

+6

*每一次*我試圖直接去CFC,我後悔了。 Cutter關於安全性的觀點並不容忽視。你提到ColdBox和「複雜性」,但我沒有看到代理如何增加複雜性。對我而言,它極大地簡化了事情:在委託給任何代碼執行實際工作的代理中添加一個新函數,然後呈現結果。這就是像ColdBox這樣的框架閃耀的地方。 – 2009-07-30 03:41:28

2

在MVC框架的「視圖」的目的是「模型」和「控制器」生成後的數據。如果你不需要「視圖」,那麼使用這種設計模式有什麼意義?

+0

我能想到的唯一一點是,MVC框架將提供單例服務,並可能有一些身份驗證支持......不知道是否缺少其他任何好處。 – Henry 2009-07-30 01:02:02

+1

但是,爲什麼你不需要「查看」Ajax請求? – 2009-07-30 01:05:20

+0

@LucaMatteis的'視圖'可能更恰當地被稱爲'表示層',或者換句話說,被呈現回客戶端的東西。使用設計模式可以分離有利於可維護性的問題,即使您想要使用JavaScript函數而不是瀏覽器的佈局引擎來渲染回來的內容。 – jinglesthula 2013-12-05 17:01:48

0

我同意盧卡。它也會繞過您在MC堆棧中的任何一種消毒和過濾邏輯。它基本上否定了您可能或可能沒有的任何種類的查詢處理。

4

我無法真正看到繞過MVC框架的任何好處 - 組合起來,這三個元素您的應用程序。

你的ajax元素真的是視圖的一部分。正如Luca所說,視圖輸出模型和控制器的結果。

這樣看 - 如果你製作了一個iPhone友好的網頁界面(即一個新的視圖),你會繞過模型和控制器嗎?

4

路易斯Majano,冷箱said的創作者:

這些AJAX 相互作用亨利的兩個校。

我更喜歡代理的方法,因爲它 增加了以下內容:

  1. 調試
  2. 跟蹤在調試器
  3. AOP攔截點
  4. 安全
  5. 設置可用性
  6. 代理會中繼到事件模型,所以我可以使用本地攔截 點,當地的AOP,插件等

換句話說,它可以是一個簡單的 服務CFC調用,你仍然可以做 的高度 監控呼叫代替。

我來說,愛有我的執行 Profiler運行(冷箱 調試器的一部分),這樣我就可以看到,當AJAX請求 進來,當他們來到 出來。我可以看到請求的數據和 的數據發回。我不必 看日誌文件,或嘗試想象 結果或問題。它真的幫助 進行調試。

然而,這將是一個開發人員 選擇你決定去哪種方式。 我個人的偏好是總是使用我的代理 事件代表團 ,因爲它給了我更多的靈活性,調試和寧靜的 頭腦。

+0

正確使用時,冷箱代理非常強大。儘管我發送了所有的ajax調用。它可以幫助我保持我的代碼組織,並允許我監控所有。就像路易斯說的那樣,它讓我安心。 – JoshHighland 2011-08-31 20:57:08

0

是啊,我也不會繞過你的框架,弄清楚發生了什麼令你悲傷和追捕犯罪片,添加邏輯,以排除常見的組件,如頁眉或頁腳,並尋找注入空白的方法,雖然罰款對於html來說,在解析json的時候會很煩人或者向下。

特別是在application.cfc中添加output =「false」,它的方法將是我清理的第一件事。

我堅信永遠不會直接直接訪問CFC,當主要重構可能希望整合或消除組件時,我發現它會產生長期問題,直接訪問可能會使它比應該更難,特別是如果第三方正在從另一個域(例如,flash遠程)觸發你的ajax。

+1給Steve的回答。