2017-02-02 5 views
-1

私はnode.jsを使い始めましたが、C#.netのバックグラウンドから来ました。 .netでコーディングするとき、私はコード、サービス層、リポジトリなどを整理するためにいくつかのデザインパターンを使用するのに慣れていました。複数のモデルにまたがるロジックを追加する必要があるときにも、サービスを利用できます。 node.jsに移動し、サンプルとサンプルコードなどを見直します。私はサービス層、リポジトリなどの活用方法はほとんど分かりません。node.js?

1)コードの構成と構造特にビジネスロジックが豊富なアプリの場合

2)複数のモデルにまたがるロジックの処理方法は?

3)どのような1(いくつかの良いチュートリアルとアイテムをいくつかの良いプロジェクトとコードの構造を示すサンプルコード部位であると(心の中で2?

.NETを推奨アプローチ、慣行の多くが付属して、パターンと実際には非常に良い勧告であるコーディング構造テクニック.www.asp.netなどのサイトでは、これらの推奨事項についてかなり良い記事などを提供しています。node.jsの例を見て一貫したアプローチを見つけるのに問題があります。

+1

これは大きな疑問です。プラットフォーム間の部族間の異端主義以外に投票した理由はわかりません。 – saille

+0

私もそうではありません。問題は構造化された背景から来ているということです。node.jsを使ってベストプラクティスに従っていることを確認したいだけです。私はまた、これらのリソースが他の人にとっても有用であるかどうかを知ることができました。 – user1790300

答えて

2

あなたのように私はC#/ .NETからNode.jsとfounに来ています私が考えていたことの多くは、Node.jsでは役に立たないほどのC#の良い習慣でした。

DDDは通常Object Oriented Designに関連付けられており、JavascriptはOO言語ではないため、Node.js設定ではあまり議論されません(Javascriptにはプロトタイプベースの継承がありますが、多くのオブジェクト指向パターンは単にJavascriptにうまく翻訳されません)。

代わりに、大規模なドメインを1つのビジネス機能をうまく実行する、より小さく切り離されたサービスに分割するMicroserviceアーキテクチャが増えています。 Node.jsは、これらの種類の軽量HTTPサービスに最適です。

興味深いことに、DDDでMicroservicesのアプローチを試した後、私は実際に実装するのがはるかに簡単で、適切な線に沿ってデカップルされたものを保持する方が簡単です。実際に私がC#に戻ったとき、私は自分自身にもマイクロサービスのアプローチを適用しています。

パターンに関しては、パーシスタンスを抽象化することは依然として非常に良いアイデアです。リポジトリパターンに似ているものは、OOからNode.jsにうまく変換されます。あなたのビジネスロジックをどこに置くかについては、リポジトリ上に「サービス」または「アプリケーション」レイヤーが必要な場合があるので、複雑なレスポンスをコンパイルするためにいくつかのリポジトリにアクセスできます。そのような抽象化を追加する必要はありません。必要な場所に配置してください。ビジネスロジックのレイヤーがあまりにも宗教的にならないようにしてください。それはN階層の考え方であり、多くの不要なコードが書き込まれます。必要に応じてプレースホルダとしてではなく、便利になったときに抽象化を追加します。これは時期尚早の最適化の一種です。

本当に高いレベルのビジネスロジックが必要な場合は、いくつかのマイクロサービスの動作を調整する必要があります。 Node.jsはあなたの友人でもあります。メッセージをESBから消して反応させる軽量オーケストレーションサービスを作成し、それに反応することができます。

+0

まず、お時間をいただき、ありがとうございます。始めに、私はnode.jsにC#の原則を適用しようとしていて、正方形のペグ丸穴のシナリオの多くを打ち破ろうとしていました。私のアプローチを再評価するために一歩前進しました。それで、マイクロサービスに基づく概念のために。これは、DDDのように別のドメインに分割するのと似ていますか?この場合、各ドメインは独自のマイクロサービスになりますか?これが当てはまる場合は、ドメイン駆動設計のパターン、原則、および実践の本のシナリオにうまく適合していることがわかりました。 – user1790300

+0

マイクロサービスはドメインよりも小さくなければなりません。より制限されたコンテキストのようです。https://martinfowler.com/bliki/BoundedContext.html – saille

+0

意味があります。どのようにnode.jsを使ってプロジェクトフォルダを構造化するのですか?私は正しいフォルダ構造を見つけるためにここでも苦労していますか?また、マイクロサービスを使用している場合は、seneca.jsを使用していますか、私もそれを読んでいますか?アプリの場合それは本当に1つまたはいくつかの有界コンテクストで重い集約ですが、有界コンテクストをマイクロサービスに変えようとすると問題になるでしょうか? – user1790300