3

これは冗長です。現地の慣習に従っていない場合は、お詫び申し上げます。

私は、消防士を消防署間で移動させてスキル要件を満たしたり、病欠を入力したり、消防士をサービスから撤退させたりするために使用されるWindowsアプリケーションのWeb代替品を作成しています。Railsは望ましいバックエンドでしたが、クライアント側のフレームワークが必要であることにすぐに気付き、Backbone.jsを選択しました。

一度に1人のユーザーのみが参加するため、クライアントの同期を維持することを検討する必要はありません。

私はほとんどのアプリケーションを実装しましたが、うまく機能しています。ただし、サーバー側の検証という重大な欠点に直面することは避けてきました。インターフェースを介して無効な更新を行わないようにするためのさまざまなクライアント側の手順があります。たとえば、ユーザーは、今日働いていない人を別のステーションに移動することはできません。しかし、悪意のあるユーザーがUIの外部でレコードを作成してサーバーに保存することを阻止するものは何もないため、サーバー側の検証が必要です。

クライアントのロードは、今日の関連するすべてのレコードを受け取り、それらを処理します。新しいレコードが作成されると、サーバーに送信され、正常に保存された場合はクライアントで処理されます。

今日誰が働いているかを判断するプロセスは複雑です。誰かが働くようにスケジュールされていても、休日に行った後、呼び出された後、病気で家に送られました。Ruby / Railsのサーバー(各ロード?!)でこれらすべてを解くと、ビジネスロジックが重複しているように見えます。また、ステーションの不足とユニオンルールに基づいて一時的に上位に昇格する人を計算する特定のケースでは、かなりのオーバーヘッドが発生します。これは、昇格が実行されるたびに、今日のほぼすべてのデータをリロードして処理することを意味します。

それで、私は、オブジェクトモデルを構築し、作成できるモデルを制限するこのバックボーンインフラストラクチャをすべて持っていると思いました。サーバー側でも使用してみませんか?

これが私の不確実性です:

Railsを放棄して、Node.jsまたはサーバーでBackboneを実行する他の方法を使用する必要がありますか?

または、Railsと一緒にNode.jsを実行できますか?ユーザーがアプリケーションを開くと、同じデータをブラウザーとノードにフィードできます。Railsは、サーバー側のバックボーンをチェックして、提案された新しいオブジェクトが有効かどうかを確認してから、保存してブラウザーに返します。

1つのファクトリは、Railsがこのアプリケーションにどれだけ深く定着しているかです。変更の作成/削除のためのサーバー側のRubyはそれほど多くありませんが、レガシーデータベースモデルを補うためにデータをロードするための一種のアダプテーションレイヤーを作成しました。Railsは主に、JSON、CSS、Javascript、およびテンプレートアセットを提供しています。私はキュウリの機能をたくさん持っていますが、おそらくデータ作成の機能だけを更新する必要がありますか?

ふぅ!だから、私は安心を探しています:この回答で提案されているように、サーバー上でRailsとNodeの両方を実行し、ある種のプロセス間通信を行うことは合理的ですか?または、Railsの有用性が大幅に低下したため(その回答で言及されているような単一ページのアプリケーション)、それを完全に取り除き、ノード環境への書き換えに苦しむ必要がありますか?

読んでくれてありがとう。

4

1 に答える 1

0

並行性について多くのことを心配しているようには思えません両方のプラットフォームが完全に実行できるプッシュデータを実行できるのと同じくらいです。現在Rubyコードに多額の投資をしていて、その使用について誰も文句を言っていない場合、何が懸念されるでしょうか。スタックを介してjavascriptを使用するプッシュと特異性のためにNodeを使用したいだけの場合は、コードをそこに移動する価値があるかもしれません。あなたのコメントから、私はそれがあなたにとって何が面白いかについてより重要であると本当に感じます、しかしあなたは選択した言語をサポートしなければなりません。チームに参加しているのがあなただけの場合は、興味深いという理由だけで、ノードへのリファクタリングに簡単に参加できます。誰がもっと不平を言っているのか、あなたか顧客に戻ってください。要約すると、Nodeを使用すると、コードベースで単一の言語に移行できますが、サーバー上のjavascriptの現在の落とし穴について心配する必要があります。

于 2012-05-14T13:07:08.190 に答える