2010-09-02 72 views
7

我不知道這是否是一個愚蠢的問題!我在網上搜索沒有有用的點擊。我想開發一個服務器,它可能被稱爲中間件服務器(實際上我不確定),它執行以下任務, 我有一個無法修改的服務器,很多請求服務器並接收結果的客戶端。我可以修改客戶端。現在我想開發接收客戶端請求的軟件,檢查服務器是否繁忙或服務器上有多少任務排隊,如果服務器繁忙,則將客戶端請求存儲到臨時數據庫,獲取隊列中的請求臨時數據庫,並轉發到服務器,然後接受結果,並轉發給客戶和like.The問題是哪些技術用於.net中的中間件服務器?

  1. 該技術是最好的dotnet的剩餘,同時使用,WCF,Webservives,遠程或其他?

  2. 假設存在諸如事務處理,負載平衡,日誌記錄,安全檢查機制等任務,這個任務有多複雜?

  3. 我應該閱讀什麼東西來完成這些任務?

  4. 在搜索時我發現了諸如java中的中間件而不是dotnet中的東西。是什麼原因?

回答

1

中間件是一個非常寬泛的術語,你是專門談論一個代理:

http://en.wikipedia.org/wiki/Proxy_server

http://en.wikipedia.org/wiki/Proxy_pattern

這也是一箇中間件,當然。

其他答案取決於您用於客戶端 - 服務器通信的哪些技術(Web服務,REST,json,...?),您的服務器邏輯有多複雜,以及您需要處理多少個請求。 ..

在您的方案中可能最簡單的工作是負載平衡器(http://en.wikipedia.org/wiki/Load_balancing_(computing)),它根據服務器負載將請求轉發給兩個或更多服務器。顯然這隻有在您可以複製服務器實例時纔有效。

如果把服務器忙可以工作,但沒有保證要超過代理的隊列容量太大的可能性,你又來了存儲隊列中間件...

0

在.NET中對於中間件服務器推薦的方法是使用Enterprise services,它提供了COM +上的.NET API。

COM +提供了您在.NET應用程序中提到的所有功能(在第2點中)。

WCF取代了遠程處理,但所有關於互操作性。雖然它確實提供了安全性和事務性功能,但它們適用於2個端點之間的通信,而不是您的應用程序對象。

+0

謝謝你,我會看到你的建議。你能比較一下這個類型解決方案的.net和java嗎?我可以去java世界如果有優勢來解決這種類型的場景,你推薦的任何東西 – kebede 2010-09-03 09:48:02

5

簡答:從聽起來如果它,如果你只是想緩衝你的服務器過載,你可以逃脫處理請求異步。 WCF本地支持MSMQ。 MSMQ支持DTC,因此可以事務性地放置和刪除消息。

中間件的較大話題是相當「模糊」的術語(如交易,ESB等術語)。 MS確實在這個領域有產品。這包括:

  • Queing技術(中間件消息)MSMQ(備選方案包括IBM的WebSphere MQ,兔MQ等)
  • XA /酸/ TP監視器 - 微軟DTC
  • EAI - 微軟的BizTalk整合(這裏有很多其他的供應商)
  • ESB - 微軟有BizTalk。 您還可以查看服務虛擬化的MS託管服務引擎(MSE)。這是被禁
  • 對於RESTful的集成,WebAPI
  • BPM/BPEL - 再次,MS具有BizTalk。還可以包含業務級別的監控和報告
  • 正如您所描述的那樣,操作方面包括管理,監控,負載平衡,調節,SLA服務協議等。
  • 對於Web服務(和WS擴展)WCF。這裏有大量的配置選項,這些配置選項通常會在切換協議之間抽象出更改代碼的需要。

而這僅僅是表面文章:)

+0

感謝這個簡短的回答。如果您提供一些閱讀材料以便開始使用它,這將非常有幫助。 – Richie 2014-11-28 05:33:22

+0

@Richie - 中間件和集成的主題真的很大 - 我花了我的職業生涯做這件事,但仍然不知道它的一半。如果您有任何具體問題,請向SO發佈新問題。 – StuartLC 2014-11-28 05:39:36

1

#1:

請提供對任務的附加信息: 1.爲客戶5,100,10000的量粗略估計, 1000000 2.將在客戶端和服務器之間強制返回的數據的預計大小 3.客戶端將在Internet或Intranet中工作的位置?任何安全限制? 4.客戶端將是獨立的應用程序或Web應用程序(如頁面上的頁面或小部件)?

對於#3:

如果所有你提到#2必須作爲任務的一部分來實現的話,我不相信你可以閱讀一些書籍和實現它。或者實施的結果將遠遠不符合生產要求。我建議聘請建築師或將其外包給經驗豐富的團隊。 僅供一般信息,我可以推薦閱讀 - 「企業應用程序體系結構的模式」作者:Martin Fowler。但只是閱讀不能取代經驗。

對於#4: 我相信也有用於.Net的中間件系統。有商業中間件系統與Java一起工作,.Net & C++。

IMO微軟選擇了其他方法,然後是Java社區。他們提供的框架可以讓你構建你所謂的「中間件」。先看看WCF & REST。隊列可以很容易地在數據庫中實現。如果它不足以查看WCF & MS MQ。如果您不喜歡MS MQ,請查看Amazon SQS。如果它不足以查看BizTalk。

P.S. Java和.NET平臺非常龐大,您可以在兩者上構建您想要的任何內容。從.NET跳轉到Java或從Java跳轉到.Net是沒有意義的,因爲您認爲平臺中錯過了某些東西。

+0

你爲什麼說「我不相信你只能讀一些書並實施它,否則實施的結果將遠離生產要求。」?該體系結構已經修復,因爲獨立客戶端和服務器已經存在,並且需要軟件中間件。毫無疑問,該架構應該是什麼。問題在於中間件的功能,而且推薦哪些技術是複雜的?功能是負載均衡,事務處理,安全檢查,臨時存儲,中央日誌記錄。 – kebede 2010-09-15 13:08:39

+0

預期的客戶端數量超過5000個,大數據處理是必須的。 – kebede 2010-09-15 13:25:50