2010-10-19 47 views
1

我們正在設計具有的功能,基本上是在表示層和暴露的API層相同的系統。我的問題是使用什麼技術/策略,以便我們能夠在考慮到性能的情況下最大限度地重用代碼?設計一個系統,表示層和基於Web服務的API

下面是一個簡化的例子:

用戶可以通過網絡的形式添加客戶。這將觸發Customer.Create()方法。

API消費者/用戶可以通過SOAP/HTTP-POST將一個Customer添加到將調用Customer.Create()方法的Web服務中。

想象這些層:

PRESENTATION 
| 
| 
WEB SERVICE API (Customer.Create() is available here 
| 
| 
FACADE Business Object Interface - Customer.Create() signature is here 
| 
| 
BUSINESS Business object - Customer.Create method() is fleshed out here 
| 
| 
DATA ACCESS - Writes data 

表示層SOAP調用創建()幅方法,它調用其調用業務對象的創建()方法的門面的Create()方法通過數據存取其中導線層。

問題:

是否有關於我們的表現層使用API​​的網絡服務性能問題,還是有替代的表示層直接連接到門面?如果是這樣,使用什麼技術(WCF,遠程處理,Web服務等)?

請讓我知道如果你需要任何更多的澄清。我無法確定在表示層中使用API​​是否常見,或者出於性能原因您是否「繞過它」。

,我可能不會看到任何其他問題?

謝謝!

+1

注意,WCF是替代遠程處理和你指的是「網絡服務」(通過,我想你的意思是ASMX Web服務)的東西。 – 2010-10-21 20:38:32

+0

John - 我工作的最後一個項目是.NET遠程項目。我有時交換條款。我正在開發的這個新項目是一個3.5 Web應用程序。我沒有通過網絡解決遠程調用的技術,但我需要公開一個API,用戶可以通過HTTP-POST(第一次迭代),並且我想重用API用於我的表示層,因爲API PRES具有幾乎相同的功能。我應該看看WCF嗎?我現在正在四處尋找..試圖趕上什麼是可用的,因爲1.1的遠程處理(笑) – 2010-10-25 14:53:45

回答

1

看一看鑑於這一問題及答案(一個礦):

WCF and n-tier architecture and serialization performance

我覺得你的層次都很好,如果他們都邏輯雖然我個人不會使用門面,而是我將使用ORM連接到數據庫。

關於技術,WCF和ASP.NET MVC都是這樣過來的Web服務這是老ineffecient現在好得多的選擇。遠程處理已被WCF取代,現在不應使用。

2

您的Web服務API和外觀是多餘的。我在想,如果你在每一層都實現了實際的對象,我想你會發現這兩層對象中的一個或另一個只是傳遞對象。

用於爲CreateCustomer簡單的東西業務層對象()看起來是多餘的,也,但對於更復雜的功能,你會發現業務層的一個事務中帶來了幾個原子的電話。

+1

+1 - 我同意。 @ D-Sect,如果你想把分離放在任何地方,它應該在商業和數據訪問層之間。 – 2010-10-19 21:33:34

+0

這就是我想知道的。不需要接口接口?說得通。 Plus - 我使用「Create」作爲示例,但它將是BusinessObject的父類的基本方法。我只是演示了一種方法,但如果從字面上理解,那麼CRUD就不是一個好例子。 – 2010-10-20 14:32:11

+1

我會保留Web服務API,它爲多個客戶端/表示層提供服務。只需放下外觀並將API調用放入業務層即可。你有正確的想法,你需要一個門面......但API是門面。 – 2010-10-20 14:49:03