3

我正在開發一個應用程序的一部分,名爲A.我要插入我的DLL的應用程序,稱爲應用程序B在vb 6中,而我的代碼在vb.net中。 (應用程序B將及時轉換爲vb.net)我的主要問題是,我如何組織我的代碼(應用程序A)的最佳方式?分層組織應用程序

我想將應用程序A分爲多個層(服務,業務,數據訪問),因此當B轉換爲vb.net時,將應用程序A集成到B中將很容易。我也想了解所有的主題,如分層架構,模式,依賴性反轉,實體框架等等。儘管我的應用程序(A)很小,但我想以最佳方式組織我的代碼。

我正在使用的應用程序(A)正在使用Web服務對用戶進行身份驗證並將架構發送給組織。應用程序B的用戶正在應用程序B中選擇一個菜單點,然後調用我的應用程序A中的一些功能。

在應用程序A中,我有一個來自xsd模式的自動生成的模式類。我用數據填充這個模式對象並將對象序列化到一個內存字符串(這是使用內存字符串的一個很好的解決方案,我不必保存數據),將xml包裝在一個CDATA塊中並返回CDATA塊作爲字符串並將CDATA塊分配給Web服務的字符串屬性。

我也使用實體框架進行數據庫通信(瞭解如何在未來使用應用程序B進行這項工作)。我在.edmx,User和Payer中有兩個實體。 我也想使用存儲庫模式(這是一個不錯的選擇?)在DAL和BLL之間建立一個立面。

我的應用程序有GeneratingSchema(填充數據架構對象),GetSchemaContent,GetSchemaInformation,GenerateCDATABlock,WriteToTextFile,MemoryStreamToString,EncryptData和使用Web服務,如SendShema,的authenticateUser,GetAvalibelServises等一些功能的功能。

我不知道我應該把它放在哪裏? 我想我必須有一些接口,如IRepository,ISchema(自動生成模式類的契約,我該如何做到這一點?)ICryptoManager,IFileManager等,以及實現接口的類。

我的DAL將是實體框架。我希望在我的BLL(IRepository,UserRepository,PayerRepository)和用於管理的類(如上面提到的類)中擁有存儲庫外觀,如WriteToFile,EncryptData ...等等。

這是一個很好的解決方案嗎?需要一個服務層,我的所有GUI都在應用程序B中)以及如何在Visual Studio中組織我的圖層,接口和類功能?

在此先感謝。

+0

你提的問題很好,但有一個非常大的範圍。它有點要求完整的應用程序設計作爲答案。我會upvote任何建設性的答案,你會得到:-) – kroonwijk

回答

1

這是一個問題的一個心裏很不舒服,覺得我可能會嘗試在你這麼有較少的下一個傢伙回答幾個部分蠶食......

對於應用程序B(VB6)來調用應用程序/程序集A,我假設您將應用程序A的相關部分公開爲COM組件,使用ComVisibleAttribute s和類似程序,非常類似於this artcle中所述。我只知道另一種方式(WCF over COM),但我從來沒有嘗試過。

將您的解決方案分割成不同的層次和層次是一個非常主觀/有爭議的話題,並且總是歸結爲個人偏好,業務需求,可用時間等。然而,不管深度如何你的階層和層次,理解如何和爲什麼是很好的。

爲了讓您一開始,這裏的一對夫婦的文章:

Inversion of Control也是一個很好的模式來進入眼下,隨着不斷增加(與輝煌!)資源變得可用於.Net平臺,這絕對是值得感染一些時間來學習。

雖然我還沒有探索國際奧委會的充分的程度,我也愛dependency injection一個IoC類型,如果我理解正確的話,雖然人們似乎矇混的IoC/DI方面頗多)。我對DI個人的偏好,現在是開源Ninject項目,其中有大量的資源在線和合理wiki section說話你通過各個方面。

還有更多的發生在DI和IOC,所以我不想甚至企圖給你提供一個全面的列表,生怕被火燒失蹤了別人的喜愛。只要有一個搜索,看看你喜歡它的外觀,並與它玩。如果你有時間,一定要嘗試一對夫婦。

再次,Repository Pattern - 通常由Unit of Work Pattern補充好也有很大的主題,仔細考慮了好幾個小時。我在互聯網上看到了很多很好的例子,以及許多不好的例子。我在這裏唯一的建議是自己嘗試一下,看看適合你的是什麼,開發一個最適合你的模式版本,並儘量保持事物的可維護性一致。

組織所有這些層和層在VS,我建議試圖讓所有的獨立層/層在自己的解決方案文件夾(R-CLICK解決方案,添加新的解決方案文件夾),或在某些情況下(較大的項目)有自己的解決方案,最好是自動化的構建服務,以根據需要使用最新的組件來更新依賴項目。再次,一個廣泛的主題,完全取決於個人喜好。在設計潛在即將推出的Circular References時,請留意。

所以,我恐怕甚至不會輕微回答你的問題,但希望爲你提供一些資源來檢查和幾個小時的閱讀。

祝你好運!

+0

非常感謝花時間回答我!我會研究你提到的事情! – Liss