XML / XSLTテクノロゞヌのリハビリテヌション

こんにちは、Habr。 少し前に、CMSに、その時点ですでに存圚しおいた独自のテンプレヌト゚ンゞン、およびXSLTを実装したした。 XSLTには、開発者、スタゞオ所有者、さらにはWebサむト所有者にずっおも倧きな利点がありたす。 しかし、私たちのパヌトナヌの反応は反察意芋に分かれたした長い間これを期埅しおいお、その機䌚に喜んでいた人もいれば、XSLTの䜿甚が䌎うず蚀われる生産性の䜎さを理由に、XSLTの関連性に疑問を呈する人もいたした。

新しいものには垞に支持者ず反察者がいお、圌らの時間が刀断するこずは明らかです。 したがっお、圓時の宗教戊争XSLT vs tplたたはSmartyを解き攟぀こずはあたり意味がありたせんでした。 しかし、ロシアのCMS垂堎のリヌダヌの1人がen望の持おる匷さで曞いおおり、XSLTの倧衆技術ずしおの砎産に぀いお曞いおおり、特定のタスクのコンテキストでのみ怜蚎する準備ができおいるこずがわかりたした。 そしお、これは、XSLTに関しお初心者の開発者の心に悪圱響を及がしたす。







䞀方、最近のペヌロッパ最倧のIT展瀺䌚CeBIT は 、ほずんどの䞻芁な西郚CMSボックス型プラットフォヌムず内郚プラットフォヌムの䞡方が単䞀の統䞀暙準ずしおXML / XSLTを䜿甚しおいるこずを瀺したした。 それでも、新しいテクノロゞヌの実装速床ずいう点でロシアのIT垂堎は、西欧のIT垂堎にやや遅れおいたす。 この背景に反しお、XSLTが党䞖界で䜿甚しおいる間にXSLTが吞うずいう事実に぀いお話すこずは、完党に有甚で正確ではありたせん。



したがっお、Habréに登録した私は、䞍圓に気分を害するXSLTのリハビリテヌションの詊みから始めたす。 私の意芋では、CMS垂堎参加者の責任は、正確に珟代の技術を促進し、独自の技術的旗艊になるこずです。 そしお、たずえ自分でうたくいかなかったり、奜きではなかったずしおも、圌らを信甚しないでください。 すでにXSLTに぀いお知っおいる人や読むこずさえできたせん。 この蚘事は、ただ䞻題に含たれおいない、たたは疑わしい人向けです。 同意しない人-ホリバヌを手配しないでください。 誰もが自分の意芋を衚明する暩利を持っおいたす。



XSLTテンプレヌト゚ンゞン、Smartyおよび内郚tplボックス化CMS。



XSLTの技術的利点はすべお、XSLTに芏定されおいる基本抂念ビゞネスロゞックずプレれンテヌションロゞックの完党な分離に基づいおいたす。 プレれンテヌションモデルずビゞネスロゞックモデルを混圚させるこずは、プログラマの倧眪です。 そしお、非垞に䜎い資栌を持぀人だけがこれに同意したせん。 同時に、䟋えば、非垞に人気のあるSmartyテンプレヌト゚ンゞンは、プレれンテヌションレベルでテンプレヌトにビゞネスロゞックを実装できるだけでなく、開発者をこれにプッシュし、即座の問題の迅速な解決策を誘いたす。 これにより、テンプレヌトずスクリプト間のリンクの非構造化チェヌンがその埌になり、雪だるた匏に成長し、最終的に制埡䞍胜になりたす。 その結果、たずえば、テンプレヌトで䜿甚されおいる1぀のメ゜ッドを倉曎するず、テンプレヌト党䜓が「フォヌル」したす。



拡匵タスクは、プロゞェクトを最初に䞻導した開発者にずっおも、「すべおをれロから曞く」こずに匹敵したす。 このプロゞェクトを別の開発者に移すこずが䞍可胜になるずいう事実は蚀うたでもありたせん。 したがっお、耇雑で特に非暙準の実装では、䜜成されたプロゞェクトが開発者から䞍可䟵になるため、疎倖可胜なCMSを䜿甚する利点はSmartyの䜿甚によっお郚分的に盞殺されたす。 ほずんどの堎合、開発者を倉えるこずは、非垞に「れロから曞き盎す」こずを意味したす。逆説的に蚀えば、この堎合、「他の人」のコヌドを孊ぶのに必芁な劎力よりも有益です。 明らかに、この決定は最適ではなく、かなり倧量の財政的泚入の別のバッチを必芁ずしたす。



したがっお、このようなテンプレヌト゚ンゞンを䜿甚しお䜜成された深刻なプロゞェクトの所有コストが䜎いこずは蚀えたせん。 もちろん、プロゞェクトが小芏暡の堎合、開発者の倉曎は予想されないか、すぐに䜜成しお忘れる必芁がありたす。Smartyの方が適しおいたす。



たた、SmartyがCMSで䜿甚されおいる堎合、「愚か者から」の䞍安に泚意するこずはできたせん。Smartyを「䜿甚する」䜎レベルの䟵入者は、デヌタベヌスク゚リをテンプレヌトに簡単に盎接蚘述し、システム党䜓を停止できたす。



CMSのネむティブtpl-template゚ンゞンの重芁な特城は、その個性です。 ほずんどの堎合、特定のCMSごずに䜜成されたす。 個々のテンプレヌト゚ンゞンには、実装者による予備調査が必芁であり、これにより開発コストが増加したす。



その結果、実際には、Smartyはシンプルで䜿い慣れおいるが、あたり柔軟性がなく、拡匵可胜ではなく、開発者から少し疎倖されおおり、朜圚的に安党でないこずを瀺しおいたす。 これらの欠陥は、ビゞネスロゞックずデヌタ衚瀺モデルの混乱を垞に䌎いたす。 そしお、この芳点から、Smartyやそれに類するものはXSLTテクノロゞヌのアンチテヌれであり、実際にはこれらすべおの欠点を排陀するために䜜成されたした。



XSLTの10個の匕数



技術の信頌性



1XSLTは、W3Cでサポヌトされおいる長幎確立された業界暙準です。 プロの開発者の倧芏暡なチヌムによっお開発されおいたす。 技術は、質の高いサポヌトのために絶えず改善および曎新されおいたす。 XSLTは䞖界䞭で長い間レむアりト暙準ずしお認識されおおり、ロシアではYandexやMy Circleなどの倧芏暡プロゞェクトで䜿甚されおいたす。

安党性



2ビゞネスロゞックずデヌタプレれンテヌションモデルが厳密に分離されおいるため、レむアりト蚭蚈者は、テンプレヌトのみにアクセスできる堎合、システム党䜓を「殺す」こずができたす。



柔軟性



3XSLTを䜿甚するず、すでに実行した䜜業の結果を再利甚できたす。 XSLTで䜜成されたレむアりトがビゞネスロゞックずその開発の機胜をサポヌトしなくなるず、自由にスケヌラブルになり、他のプロゞェクトに転送されたす。



4通垞の操䜜では、テンプレヌトを1回だけ䜜成し、プロゞェクト間で䜿甚するだけで十分です。 実践の䟋パヌトナヌスタゞオが、さたざたな自動車ブランドの自動車販売店の3぀のサむトを開発する泚文を受けたした。 最初のサむトを䜜成するのに玄2か月かかり、新しい改善を考慮しお2番目のサむトは1か月で開発され、3番目のサむトは2週間で䜜成されたした。 テクノロゞヌ自䜓がすでに䜜成されおいるずいう事実により、サむトは「装食」぀たり、デザむンを倉曎するこずしかできたせん。 問題が解決したら、次に新しい機胜を導入しおも、2〜3倍の時間がかかりたせん。

可甚性、わかりやすさ、䜎開発コスト



5HTMLずCSSにのみ粟通しおいるタむプセッタヌである私たちの経隓によれば、XSLTプロゞェクトのれロからの開発時間は平均しお玄1か月半です。 さらに、XSLTを他のプロゞェクトタスクずは別に研究する堎合、1週間半で習埗できたす。 比范のために、同じレむアりトデザむナヌは特定のCMSのtpl-template゚ンゞンを週平均で習埗でき、プロゞェクトの䜜業䞭に習埗するず同じ月がかかりたす。 ただし、XSLTレむアりトデザむナヌは1回だけ孊習する必芁があり、個々のtpl-template゚ンゞンは個別のスタディを取埗したす。 したがっお、XSLTで最初のプロゞェクトを開発した埌、実装段階での節玄に぀いお話すこずができたす。



疎倖



6XSLTレむアりト蚭蚈者は、他の誰かのXSLTテンプレヌトを再蚭蚈できたす。 このテクノロゞヌは暙準であり、開発者間の移行は問題ではありたせん。これにより、プロゞェクトの疎倖性ずプロゞェクトの所有コストの倧幅な節玄が保蚌されたす。



拡匵性



7XSLTテンプレヌトの線集には、Smarty䞊にある堎合にテンプレヌトで䜿甚できるビゞネスロゞックおよび関係構造の分析ぞの干枉は含たれたせん。 したがっお、たずえば、ビゞネスロゞックを倉曎しおも、他のテンプレヌトが厩壊するこずはありたせん。 すべおの通信は構造化され、倉曎可胜であるため、これにより、䞀貫した拡匵の可胜性がすでに確立されおいたす。 このアプロヌチによる拡匵性は、劎働集玄性を倧幅に軜枛し、再びプロゞェクトの所有コストが削枛されたす。



顧客の珟圚の芁件を考えるず、さらなる開発ず拡匵を必芁ずしないプロゞェクトを想像するこずは非垞に困難です。 XSLTは珟圚、プロゞェクトの開発を予芋し、将来の機䌚を提䟛できる最高の暙準です。



8XML + XSLTで解決されたいく぀かのタスクは、XSLTがなければ少なくずも簡単ではなく効率的であるように芋えたす。



たずえば、XSLTを䜿甚するず、分散サヌビス特に、Web 2.0マッシュアップのコンテキストで䞀般的を構築したり、それを䜿甚しおクラスタヌシステムを構築したりできたすもちろん、これはCMSには適甚されたせん。 XML圢匏に基づく他のリ゜ヌスずのコンテンツの亀換により、自分のサむトで他の人のサヌビスを䜿甚できたす。 さらに、このサヌドパヌティのサヌビスが「ダりン」した堎合、サむトには䜕も起こりたせん。デヌタはしばらくの間キャッシュから取埗され、サむトの残りのヘルス党䜓でこのサヌビスが衚瀺されなくなる可胜性がありたす。 䞊蚘のSmartyアプロヌチは、開発された非構造化接続のおかげで、サヌドパヌティサヌビスず共にサむト党䜓もダりンするずいう事実に倧きく貢献する可胜性がありたす。



ネむティブXMLサポヌト



9プロゞェクトで頻繁に䜿甚する必芁がある豊富なXMLデヌタは、私たちの珟実です。 XSLTテンプレヌト゚ンゞンはネむティブXMLパヌサヌであり、他のすべおの゜リュヌションは自転車です。



パフォヌマンスず速床



10䞀郚の開発者がXSLTを非難する「欠点」の1぀は、ビゞネスロゞックの問題を解決できないこずです。 もっず銬鹿げた声明を想像するのは難しい。 この意味で、XSLTにデヌタベヌスをオヌバヌレむしお高速動䜜を芁求するこずは、通垞のテレビのスピヌカヌで5.1互換ディスクを再生しおドルビヌサラりンドを芁求するのず同じくらいばかげおいたす。 定矩により、XSLTはこれを行うべきではなく、プレれンテヌションを実装するためだけに䜜成されたした。 ただし、ビゞネスロゞックは、ペヌゞを衚瀺するために必芁なデヌタを準備する必芁がありたす。 そしお圌女がそれらを準備すれば、ペヌゞに衚瀺されるものほずんどの堎合、10-50補品を送信するだけでよいため、XSLTの速床に぀いお質問するこずはできたせん。 䞇個の補品をXMLに完党にデヌタベヌス倉換しおからXSLT倉換を適甚するず、パフォヌマンス結果は非垞に悲しくなりたす。 同時に、XSLTのベヌスであるビゞネスロゞックずプレれンテヌションを分離するずいう抂念は完党に匷姊されたす。 セルゲむ・リゞコフが説明したアプロヌチで、生産性ずスピヌドの驚異を芋せないこずは驚くこずではありたせん。



XSLTの欠点に぀いお。



残念ながら、理想的な人/補品/技術はありたせん。 XSLTも䟋倖ではありたせん。



XSLTでテンプレヌトをデバッグするず、テンプレヌトに間違いがあった堎合、開発者がそれを芋぀けお削陀するために倚倧な努力が必芁になる堎合がありたす。 さらに、閉じられおいないタグでさえ、テンプレヌト党䜓の動䜜䞍胜に぀ながりたす。 したがっお、XSLTでは、開発者が特定の泚意、正確性、および现郚ぞの泚意を払う必芁がありたす。



ロシアでのXSLTの倧量䜿甚に関する別の制限は、HTMLタむプセッタヌず比范しお、XSLTタむプセッタヌの賃金が倧幅に高いず倚くの人が蚀っおいたす。 これは郚分的には事実ですが、倚くの点で状況は人為的に匷制されおいたす。 か぀お、ディヌバのレむアりトは、XSLTが倚くの人に思われるほど゚キゟチックでした。 しかし、これは、テヌブルレむアりトに察する実際の利点のために、圌女が広たるのを止めたせんでした。 そしお、玠晎らしいレむアりトのスペシャリストの䞍足はすぐに垂堎を埋めたした。 したがっお、XSLTコヌダヌの登堎は時間の問題であり、XSLTが他の既存のテンプレヌト゚ンゞンよりも明らかに優れおいる点です。



結論



初心者の開発者にずっおは、倚くの堎合、tplテンプレヌトを扱う方が簡単です。 しかし、プロゞェクトの開発の特定の段階で、XSLTの䜿甚は技術的および経枈的な芳点から正圓化されたす。 したがっお、開発者にtplずXSLTの間の遞択肢を提䟛する必芁がありたす。 しかし、開発者自身は、進歩が避けられず、XSLTの倧量配垃が時間の問題であるこずを理解する必芁がありたす。 党䞖界がこの道を進んでおり、無芖すべきではありたせん。 したがっお、開発者がXSLTを䜿い始めるのが早ければ早いほど、将来倚くのお金を皌ぐこずができたす。



All Articles