2009-11-10 39 views
3

首先,我運行一個應該包含很多fun​​cionality的Windows服務。將會有一個業務層,來自這個業務層的結果將通過WCF發送到表示層。每個WCF服務的新ServiceHost?

我不知道如何結構所有這些功能。

所以我的問題是:

1. 我應該創建一個Facade模式類,將覆蓋所有的服務類,並把這個門面一個班一個的ServiceHost的somekind的。 或者只是爲每個服務類創建一個ServiceHost實例?像這樣

host1 = new ServiceHost(typeof(MyService1)); 
host2 = new ServiceHost(typeof(MyService2)); 

2.請問我的服務類應該是多少?每個實體或每個聚合根或每個功能塊?

此通信將通過net.pipe運行。

+0

我最近面臨類似的問題。我使用Facade來包含所有服務 – Benny 2009-11-10 14:33:43

回答

1

讓您的界面成爲您的指南。定義您計劃通過WCF公開的接口。這將定義您需要多少個服務類,並因此定義您需要多少個ServiceHost實例。

1

一個ServiceHost的只能承載一個單一的服務(實現)類 - 這是一個給定,你不能改變這一點。

但是服務(實現)類可以實現任意數量的服務契約(接口)。然而,爲了實現關注點分離原則,我沒有看到有很多令人信服的理由來擁有一個巨大的「SuperDuperServiceClass」,它實現了服務合同的船載 - 我喜歡保留沒有任何東西的東西分開做 - 使得從長遠來看更容易管理它。

你有什麼理由反對爲單一服務提供單一服務主機?