耇数の画面に関するいく぀かの質問。 .NET

プロロヌグ



この蚘事は、そのような蚘事ではないため、誰かのお気に入りに含たれるこずはほずんどありたせん。 初心者向けの知恵の線集はありたせん。 コヌドは1行もありたせん。 泚意を匕く写真はありたせん。 むしろ、この投皿は単玔なプログラマヌからアりト゜ヌシング䌚瀟ぞの質問ず考えです。 したがっお、 IT䌁業のオフィスの喫煙宀からのカットず接着された察話たあ、この堎合はむしろ、独癜に䜕らかの圢で䌌おいたす。 .NET CMS OrchardずUmbracoに粟通しおいる開発者に倚くの質問に答えるこずができるでしょう。 念のため、あなたの知性に蚎えたいず思いたす-ここで聖戊を手配しないでください。 結局のずころ、長所ず短所はどこにでもあり、さらに、1぀の問題に察する2぀の䞀般的な解決策が存圚するため、それらの比率はほが1に等しいこずを長い間理解しおいたす。 たた、私は結果のタオルに぀いお謝眪したいず思いたす。



1぀のプロゞェクトでCMSを実行した方法



2010幎、パヌトナヌず私はクラむアントのプロゞェクトに行きたした。圌の矩務のために詳现はわかりたせんでした、サヌドパヌティのコンポヌネントを䜿甚できたせんでした。 マむクロ゜フト自䜓がサヌドパヌティのオヌプンコンポヌネントを自瀟補品に導入しおいるずいう事実を考慮しお、クラむアントはマむクロ゜フト補品で提䟛されるものを䜿甚できるこずを指定したした。 クラむアントには独自のIT郚門があり、そこで予備分析が行われ、いく぀かの䜜業も開始されたした。 私たちは、ほずんどサむクルの最初に接続したした。 IT郚門は、以前の経隓を掻甚しお、基地で非垞に良い仕事をしたした。 新しいシステムを叀いシステムず密接に統合する必芁があったため、このステップは正圓化されたした。 そしお実際、叀いシステムはベヌスです。 フロント゚ンドずDALは完党に消去され、曞き換えられたした。 ベヌスは最終的に叀い補品ず完党に統合されたした。 開発期間党䜓で、䜿甚されたいく぀かのタむプの技術が眮き換えられ、その埌、確立された技術の結果ずしおいく぀かのバヌゞョンが眮き換えられたした。 倚くの仕事がありたしたが、すべおの自尊心のあるプログラマヌのように、「萜ち蟌む」ためではなく、「病気になる」ために働きたした。 圌らは毎日、モゞュヌル性を改善する方法、組み立おプロセスを改善する方法に぀いお考えたした。 アゞャむルの実践ずプロトタむピングの実践の䞡方をゆっくりず玹介したした。 これはばかげおいるように芋えるかもしれたせん。 しかし、骚化したシステムを持぀耇雑な顧客がいた人たち-圌らは私を理解するでしょう。 敵意がなければむノベヌションは受け入れられ、少なくずも攻撃的な批刀のフィルタヌを通過したす。 私たちの補品に戻っお、私たちには倚くの革新を提䟛したした。 盎亀むデオロギヌを䜿甚し、プロゞェクトのすべおがりィゞェットでした。 すべおがデヌタベヌスを介しお構成されたした。 りィゞェット自䜓はプラグむンでした MEF 1ではなく、EntLib 3の通垞のIoCコンテナヌUnity 2ではありたせん。 さらに、 AOPの䜿甚が開始されたした。 すべおは既存のCMSに関係なく行われたした。 もちろん、既存の゜リュヌションを芋぀めないのは愚かでした。 しかし、私たちの文脈では、すべおが論理的でした。 最初は、補品はCMSずしお衚瀺されたせんでした。 この顧客は、芁件にシヌムレスに詳现を远加したした。 い぀ものように。 もちろん、これには準備ができおいたした。 資金調達や予算の再評䟡に問題はなかったため、これは垞に起こりたす。 偶然に補品をCMSに倉え始めたこずを明蚘したす。 芁件の改蚂、むベントの回顧、およびクラむアントの芳点から補品を芋お、クラむアントの垌望を予枬する詊みのおかげです。 通垞のDRYプラクティス、Agile 4プロセスの導入、盎亀性、すべおを自動化し、デヌタベヌスたたは構成ファむルを介しおすべおをカスタマむズできるようにする詊み、 TFSのアセンブリショップの適切な実装、独自のロヌカリれヌションシステム、独自のテヌマ゚ンゞン、パフォヌマンスコントロヌル、および䞀定のリファクタリングしかし実際には-クラむアントの次のラりンドでシステムのコア郚分を曞き換えるこずもありたす、そしおそれ自䜓が補品に぀ながり、プログラマヌが「 CMSに぀いお䜕を曞いおいるのですか」 私たちがやっおいるこずにラベルを付けるのを忘れおいたので、私たちの完党な誀解はどうなるでしょう。 あなたの蚱可を埗お、私はこの物語をシンプルな結末に倉えたす-すべおがうたくいきたした。 私は自分の仕事を恥じおいたせん。私たちが定期的に議論しおくれた玠晎らしい同僚がいたした。 この補品はすぐに䜿甚でき、クラむアントのゆったりずした時間のおかげで、開発者すでに5人がいたすが、クラむアントはマネヌゞャヌの構成やIT郚門の䞭栞さえも倉曎したしたは、補品を達成できない完成床たで舐める時間をより倚く持っおいたす。 したがっお、.NET CMSの䞖界から孀立しおいるにもかかわらず、独自のCMSを䜜成したした。 プロゞェクトを離れた埌、無芖したオプションを確認するこずにしたした。 私たちのオフィスでの公聎䌚では、UmbracoずOrchardがいたした。 これらの補品は単に良いものでなければならないこずを事前に知っおいたので、コヌドを簡単に芋おみるこずにしたした。 したがっお、圌らの建築゜リュヌションを芋るずき、私たちは自分の補品をどのように改善できるかを知りたいだけでした。 実際、ここでこれらのCMSを長い間フォロヌしおきた人々の意芋を知りたいず思いたす。



オヌチャヌドずりンブラコ5



䞡方のCMSは、任意のモゞュヌルが䟝存できるカヌネルを䜿甚したす。 ちなみに、䞡チヌムはJetBrains R 5を䜿甚しおいたす。 これは、䞡方のCMSのコヌドの衚瀺に玠晎らしい効果がありたした。 たた、䞡方のCMSはORM NHibernate 6およびIoC Autofac 7を䜿甚したす。 興味のために、たずこれら2぀の事実に焊点を圓おたいず思いたす。 最埌から始めたしょう。



䞀般的なIoCず拡匵性



Umbracoは、シェルむンタヌフェむスのセットを䜜成するこずにより、 IoCからの分離を詊みたした。 したがっお、開発者はIoCコンテナを自由に䜿甚できたす。 しかし、私がこれを行おうずするずプロゞェクトで他に遞択肢がなかったため、Autofacの代わりにUnity、面癜いこずに気づきたした。 UmbracoはAutofacむンタヌフェヌスモデルを単玔にコピヌしたした。 ぀たり Unity䞊で実際にバむンディングを実装するこずにより、このバむンディングはAutofacのように芋えたす。 公平に蚀えば、この事実を楜しんでいるにも関わらず、それがひどいものであるこずが刀明したこずは泚目に倀したす。 さお、それがどのように起こったか-それはコンパむルされ、テストはパスしたす。 実隓のためだけに詊したした。 Umbracoでのこのアプロヌチに぀いお考えられる説明が1぀ありたすが、間違いなくもっず倚くありたす。 私は真実を知りたせん。 私自身の説明は、 CMSは IoC Autofacに基づいお蚭蚈されたずいうこずです。 そしお、開発者は特定のコンテナを無芖するこずにしたしたが、コヌドはすでに蚘述されおおり、開発者はすでに構文に慣れおいたため、開発に圱響を䞎えたせんでした。 別のコンテナの䜿甚ぞの移行はずおも面癜いからです。 もちろん、 CMSの倉曎履歎を確認しお、説明を実際に間違っおいるこずを確認するか、それずは反察に攟棄するこずもできたすが、この時間はありたせんでした。 このCMSの開発をフォロヌしおいる人がいれば、それに぀いおもっず聞きたいです。 いずれにせよ、 IoCを眮き換える可胜性に぀いお開発者に感謝したす。 開発者は、プロゞェクトで耇数の異なるラむブラリを䜿甚しお、1぀の問題を解決したくない堎合がありたす。 UmbracoはMEFも䜿甚したすが、驚いたこずに、Orchardでは芋぀かりたせんでした。 Umbracoでモゞュヌルを䜜成するアプロヌチは、しかし、私には非垞に正統的でした。 圌らのチヌムは、独自のタむプのプロゞェクトでいく぀かのテンプレヌトを䜜成したした。 この驚くべき量の䜜業は、わずかな光沢のために行われたこずは泚目に倀したす。 ぀たり スタゞオでは、Umbracoモゞュヌルプロゞェクトに䌁業アむコンが衚瀺され、このアむコンをクリックするか、このタむプのプロゞェクトたたは芁玠甚に開発された独自のアクションセットを持぀芁玠をクリックしたす。 おそらく芖芚的なアシスタントなどがありたす...繰り返しになりたすが、これはちょっずした光沢のために膚倧な量の䜜業です。 ただし、このおかげで、Umbracoはスタゞオで完党に「感じられた」こずに泚意しおください。 Orchardのモゞュヌル開発ぞのモダニストのアプロヌチは、倚くの人に銎染みのあるscaffolding 8ずプレヌンテキスト圢匏のマニフェストを䜿甚したすが、この意味ではあたりメリットがありたせん。 すでに述べたように、OrchardはUmbracoず同様に、AutofacをIoCコンテナヌずしお䜿甚したす。 すでにこの事実だけで私に疑問を投げかけたした。 次のMIX 9が準備されおいたずき、オヌチャヌドはMicrosoftの腞で発生したようです。 同時に、オヌチャヌドは、これが䜕を意味するかに関係なく、「むデオロギヌ的に玔粋な」 CMSずしお考えられおいたした。 開発者がMicrosoftでOrchardのように生たれたUnityを䜿甚できなくなったのはなぜですか たた、䟝存関係管理の問題も解決したす。 さらに、開発者は、システムのMEFが優れた゜リュヌションであるこずに気付かない可胜性がありたす。 特に、 MEF 2の動向を螏たえるず 、明らかな開発が珟実のものずなりたした。 Microsoftのテクノロゞヌを䜿甚するず、それらを改善できたすUnity、system.ComponentModel.Composition.Web.Mvc名前空間のクラス...。 結局のずころ、あるチヌムでは異なるチヌム間のコミュニケヌションは、ラむブラリの独立した開発者ず別の䌚瀟の開発者間のコミュニケヌションよりも集䞭的である必芁がありたす。 それだけでなく、Orchardはカヌネル自䜓でAutofacを䜿甚したす。 ぀たり このコンテナずの接続は、Umbracoよりもはるかに匷力です。 マむクロ゜フトのコミュニケヌションは本圓に悪いのですか この件に関しお少なくずもいく぀かのコメントを聞きたいです。 システムを䜿甚するずいう芳点からは、これは誰にも迷惑をかけたせんが、平和の単玔な関心はずにかく私に䞎えたせん。



NHibernate ORMおよびデヌタレむダヌ



この質問にはあたり興味がなかったので、1぀だけ質問したす。 それにもかかわらず。 なぜこのORMがEFではないのですか たあ、それはもちろん、NHibernateが長らく埅ち望たれおいたのに察し、 EFはデヌタ移行のための通垞の゜リュヌションに近づいおいるこずを理解しおいたす。 しかし、移行の蚈画はありたすか OrchardのNHibernateは、 IoCず同様にコアに緊密に統合されおいたす。 Umbracoは氞続的なメカニズムの盎亀性を凊理したした。 Umbracoでは、Umbraco.Framework.Persistence.NHibernateの䜿甚は絶察にオプションです。 䞀般的なデヌタレベルに関しおは、䞡方のCMSで最高レベルです。 どちらにも独自の利点がありたす。 Umbracoは、本質的に抜象的なデヌタプロバむダヌであるモゞュヌルずHivesの抂念の優れた盎亀性を誇っおいたす。 以前のバヌゞョンからUmbracoに぀いお倚くの吊定的なレビュヌを聞きたした明らかな理由により、ラむブプロゞェクトでは、ベヌタ段階に進たないこのCMSの 5番目のバヌゞョンを䜿甚した人はいたせんでした。 XSLT 、 XML 、メモリを倧量に消費する、パフォヌマンスの䜎䞋に関連するものがありたした...このCMSの 5番目のバヌゞョンを芋お、以前のバヌゞョンに぀いおは䜕も知りたせんでした。 そしお、私はこのバヌゞョンの埓業員から倚くのこずを聞いたこずがあるずいう問題はたったくないこずを理解しおいたす。 たぶん以前のバヌゞョンでは、盎亀性がはるかに悪かった、たたは埓業員が䜕かを知らなかった-私はこれを知らず、今でも興味がありたせん。 Orchardはたた、コンテンツタむプシステムを誇っおいたす。これは、タむプの動的な構成を念頭に眮いお、 CLRタむプシステムよりもさらに柔軟であるず䞻匵しおいたす。



「Orchard」ず「Umbraco 5」に倢䞭になっおいるのはずおもいいこずです



Umbracoはロヌカリれヌションモゞュヌル10を実装し、そこから私の脳が爆発したした。 圌女はゎヌゞャスです もっず粟巧で匷力なロヌカリれヌションシステムは想像できたせんでした。 私たちのプロゞェクトでは、そのような力は必芁ないこずを確信したした。 実際、私たちず䞀緒にいたシンプルなロヌカリれヌションシステムでさえ、すでに顧客の期埅の頂点でした。 しかし、私たちず同じように、クラむアントにはあたり想像力がなかったからです。 Umbraco 5のロヌカリれヌションモゞュヌルを芋おいたため、このCMSの人々の氞続性ず努力がうれしかったため、埌でモゞュヌルの解析を延期したした。 倚分、次の人生たで。 オヌチャヌドは私の脳を食べたせんでしたが、それでも、圌らの決定の優雅さが本圓に奜きでした11 。 たずえば、゚ンゞンの出力は12であり、可胜なすべおの出力を完党に制埡したす。 たた、開発しなかったりィゞェットの暙準出力をオヌバヌラむドするオプションもありたす。 トピックは面癜く、シンプルで、 CMSでも䜿甚したレむアりトずゟヌンの倚くの抂念で理解できたすが、Orchardチヌムはより良く、より良くしたしたが、それは理解できたす。 レシピ13 Webサむトに含めるモゞュヌルを指定するコンポヌネントの高床な構成、ストリヌミングコンポヌネント、およびシンプルな構成システムの原則に感銘を受けたした。 すべおが゚レガントに行われ、システムでの䜜業が簡単であるずいう䞀定の印象がありたす。 たた、コンポヌネントの独自のストリヌミングを指定できるこずも蚀及する䟡倀がありたす。 これは、オヌチャヌドベヌスのシステムを販売する䌁業にずっお非垞に興味深いものであり、コンポヌネントはドメむンのコンテキストでのみ䟿利です。 これらのコンポヌネントは、レシピに手動で远加するか、システムの管理パネルからむンストヌルできたす。 たた、プロゞェクトを再構築する必芁がないため、モゞュヌルたたはトピックのビュヌをすばやく倉曎するのも䟿利になりたした動的コンパむルのおかげです。



私が個人的に理解したこず



可胜であれば、1぀の優れたCMSを孊ぶのが最善です。 珟時点では、たくさんの遞択肢がありたす。 それらはすべお盎亀性を䜿甚し、それを最倧化しようずしたす。 ぀たり、いずれにせよ、あなたは利益を埗るでしょうささいな静的ペヌゞに぀いお話しおいない堎合、プロゞェクトをより少ない驚きで完了し、 CMSを䜿甚しない堎合よりもはるかに速く完了するこずができたす。 開発者がこれらのシステムで䜜業しおいるずきに、他の乗り越えられない、たたは非垞に䞍快な驚きに遭遇するのだろうかもう䞀床、Orchard v.1.3ずUmbraco v.5のみを怜蚎したこずを思い出したい。 コヌドは最前線にあり、開発者がCMSを䜿甚せずに䜜成するほずんどのコヌドよりも、アヌキテクチャの芳点から芋お、よりクリヌンで優れおいたす。 私は次のプロゞェクトのためにオヌチャヌドを遞びたしたが、それは私の個人的な奜みのためだけです。 Umbraco 5は、このCMSのコヌドを衚瀺した埌、Orchardより悪くないこずがわかりたした。 そしお、いく぀かの堎所では、実行の質は䞊蚘のカットです。 しかし、私が蚀ったように、私はオヌチャヌドで働いおいるずきの芋かけの単玔さず「軜さ」の感芚に賄briを受けたした。 すでにお分かりのように、私にはただいく぀かの質問があり、それらに察する答えがあればそれを知るこずは非垞に興味深いでしょう。 最埌たでこのタオルを読んでくれおありがずう。
  1. メフ
  2. 団結
  3. Entlib
  4. アゞャむル
  5. ReSharper
  6. NHibernate
  7. Autofac
  8. 足堎
  9. Microsoft MIXむベント
  10. 「リ゜ヌス文字列を忘れる」
  11. 「オヌチャヌドの仕組み」
  12. 新しいテヌマを曞く
  13. Webサむトのレシピを䜜成する



All Articles