2011-09-17 92 views
1

示例不是在您的主程序中創建類庫並引用它,而是將該方法公開爲Web服務。SOA,將方法公開爲服務是一個好主意嗎?

這樣,您就不需要重新編譯,當你想改變的方法,你可以改變你需要什麼但是改變,它配備了網絡開銷:(

這樣做,但不能肯定的思考。(不順心的網絡開銷似乎沒有必要???)。

回答

2

解耦層是一個好主意有很多原因,SOA是實現這一目標最激進的解決方案之一,但避免編譯使用組件可能不是一個很好的標準來決定是否要解耦。

1
This way you do not need to recompile when you want to change the method... 

這是不正確的。如果你需要改變的方法,你需要重新編譯Web服務主機。

使用SOA是當您擁有分佈式網絡應用程序時,只有一個好主意,最有可能也需要跨平臺。如果本地應用程序使用服務執行應用程序的例行任務是錯誤的。

+0

是的,你需要編譯Web服務,但不是消費者客戶端應用程序。 – 001

+0

是的,如果系統的整體架構假設有客戶客戶端應用程序,那麼使用SOA是一個好主意,正如我所提到的。 –

0

您可以在不使用Web服務的情況下實現SOA風格。這將模仿您嘗試實現的分離。只要公共方法沒有改變 - 那麼你就不必重新編譯消費者。唯一不是這樣的情況是,如果您使用版本化文件並更改版本。

public class MyFakeService 
{ 
    public static int DoSomethingHere(int value1, int value2) 
    { 
     // Do stuff here 

    } 
} 
在消費者

現在....

public void MyMethod() 
{ 

int value1 = 3; 
int value2 = 4; 

int newvalue = MyFakeService.DoSomethingHere(value1, value2); 
Console.WriteLine(newvalue); 

} 

不管你怎麼改MyFakeService的 - 只要公衆和類簽名保持不變 - 你的罰款。

+0

多數民衆贊成如何你寫一個標準的程序:) – 001

0

Web服務的想法不是停止重新編譯。如果您不知道客戶端並需要在客戶端和服務器之間建立公共通信路徑,則應該使用Web服務。例如,當您部署Web服務時,即使.Net客戶端也可以通過查看wsdl並調用服務來生成代碼。

但是,如果只有您的主程序訪問此方法,那麼使用它作爲庫是更好的方法。

相關問題