2012-12-13 58 views
3

我只是在30小時前開始使用SignalR開始討論這個問題,所以請原諒任何業餘問題,並隨時向我指出我錯過的文檔你知道一些。另外,我並不想寫博客文章 - 只是解釋我經歷的步驟以獲得我的位置。SignalR Sql Server/Owin依賴問題

TLDR?跳到最後的問題...

我需要使用Sql Server Backplane(很喜歡使用Redis,但我們目前沒有處理Redis,並且也不太舒服,因此也引入了許多新技術一個開發週期)。目前,沒有NuGet包可用於Microsoft.AspNet.SignalR.SqlServer,所以我必須使用Github源代碼。

於是我就去拆了源,編譯並添加了參考Microsoft.AspNet.SignalR.SqlServer.dll但現在編譯引用在我的代碼GlobalHost.DependencyResolver.UseSqlServer(...)失敗時(特別是 - 它的依賴性衝突,其中*.SqlServer代碼預計更新版本的*.SignalR.Core - 並不是真的令人驚訝,因爲Github的版本(無疑)自從NuGet包發佈以來已經有了一些更改(無疑)。 :(

因此,下一步是使用我*.SqlServer編譯*.Core下一個問題 - 新SignalR版本不再與已被替換爲*.Owin*.Hosting.Common*.Hosting.AspNet工作

所以,。我添加了*.Owin(和Owin--來自NuGet),但現在我遇到了另一個問題:MapHubs(...)擴展方法不再有效 - 在Owin中有擴展方法,稱爲MapHubs(IAppBuilder builder, ...),但它們不再適用於RouteTable - 它們的作用是Owin.IAppBuilder (因此需要參考Owin,我想)

所以這就是我所在的地方。我做了一個關於Owin的快速讀取(看起來像一個很酷的概念),但我並不特別在乎花費幾個小時才能在服務器端設置SignalR。所以,現在的問題:

  1. 如果我只是儘量讓*.SqlServer發揮與SignalR的舊的NuGet包好的(換句話說,是不是有可能改變*.SqlServer的依賴將引入不可靠的行爲)?或者,是否有*.SqlServer版本可與在線的NuRet發佈版本的SignalR一起使用?
  2. 需要通過Owin主機方法運行SignalR需要哪些具體步驟(如果沒有Nancy集成,我無法找到任何示例 - 或者說這是正確的方法)?
  3. 什麼是MapHubs方法的替代方法?我從哪裏獲得IAppBuilder?我甚至應該這樣做嗎?
  4. Google Groups post中,David Fowler指出,在Owin支持下,不再需要AspNet依賴關係。這很好 - 但有什麼理由在ASP.Net MVC應用程序中使用SignalR嗎?
  5. 如果服務器上沒有通過IIS託管SignalR的任何部分,客戶端回退(即SSE或長輪詢)是否通過IIS或獨立使用Owin主機?
  6. 最後,我打算將SignalR從一個ASP.Net MVC 4項目運行爲另一個現有站點的虛擬目錄 - 我希望在單個域中工作。使用Owin方法,當我的網站託管在IIS 7.5中時,這樣做還是可行的嗎?

UPDATE:每1.如上所述,我設法得到的代碼通過使*.SqlServer編譯取決於當前的NuGet *.Core實現。所以現在我可以繼續發展。我認爲我不想在生產中使用它 - 我只需要做一些與處理對象有關的變化 - 但我不認爲這是一個好方法。所以我的問題圍繞歐文的方法仍然存在 - 除非有人能說服我採取的做法很好。

感謝, 扎克

+1

這種類型的問題太廣泛了。相反,試着提出不同的具體問題,然後人們可能真的想回答。 – davidfowl

+0

是的,我明白你在說什麼大衛 - 我通常會盡量使用SO問題儘可能具體。問題是,我找不到任何有關所列問題的有用信息 - 所以我不知道從哪裏開始。我知道你們還在研究下一個版本,而且這個開發比文檔更重要,但是沒有工作例子,很難甚至不知道要問什麼。 –

+0

此外,雖然問題2和5可能過於籠統(我將看到有關刪除/改進它們),但還有一些(問題1,3,4和6),即恕我直言,非常具體...... –

回答

1

答案很簡單:

希望這會幫助別人出誰都有這個問題(我敢肯定有你至少一個!):看來問題我問,發佈幾個小時後,SignalR在NuGet中更新爲版本1.0.0-rc1。所以,對於我遇到同樣問題的任何人 - 只需升級包裝。

詳情:

安裝,當你在引用,你會發現,現在有一個Microsoft.AspNet.SignalR.SystemWeb引用之後。沒有深入研究,我認爲這是*.Hosting.Common*.Hosting.AspNet的替代品,因爲在更新MapHubs(...)擴展方法後工作正常。

我還注意到,*.SystemWeb引用取決於*.Owin - 所以我猜Owin引用被用作抽象層,它允許SystemWeb託管獨立於底層IIS /其他服務器實現。

至於.SqlServer參考,好吧,這仍然需要我編譯一個版本對抗NuGet版本*.Core爲了本地編譯。我現在只需要這樣做,並希望項目團隊在不久的將來能夠在NuGet上發佈一個工作版本。

一個現實的選擇是說服我的團隊,我們應該把Redis加入到混合中 - 在其他項目上與Redis合作,考慮到性能方面的考慮,我認爲這是一個不錯的選擇,但它確實需要Linux,一個.Net團隊的問題......

+0

從那時起sql的任何進展?謝謝 – Csaba

+0

沒有對不起,自從我發佈這個以來,我沒有看過Sql Server底板。據我所知,SignalR源代碼中的現有實現並沒有準備好生產 - 並且從GitHub的角度來看,他們沒有對它做任何活動(在SignalR 1.0.0發佈之前沒有更新)。我建議在這裏要求更多信息:https:// jabbr。net /#/ rooms/signalr - 你會在其他地方獲得更好的迴應。 –