1

私は WCF が初めてです。次のモジュールを持つ WCF/WPF に基づく ERP システムを設計しています。

a) 見積もり
b) 計画
c) スケジューリング
d) 会計
e) 在庫

次の質問があります。

  1. どのインスタンス化モードを選択すればよいですか? アプリケーションは、イントラネットを介して別の実行可能ファイルでホストされます。モジュールごとに、約 500 ~ 1000 人の同時ユーザーがサーバーに接続します。すべてのクライアントは TCP/IP 経由で接続されます。使用するデータベースは SQL Server です。

  2. サービス API を設計するにはどうすればよいですか? 標準操作の最小限のセットを公開する必要がありますか、それとも問題セットに固有の多数の関数を公開する必要がありますか? より正確に言うと、次のうちどれが進むべきだと思いますか?

    Object[] Get(EntityType type);
    
    void Send(OperationType type, Object[] params);
    void Delete(Object[] entities);
    
    ----other basic ops and overloads.//based on the parameters, service will //delegate to specific operations
    

    また

    Customer[] GetCustomers();
    Job[] GetJobs();
    
    void Updatecustomer(int customerid);
    void Updatejob(int jobid);
    ---//other operations goes here...
    

これら 2 つのアプローチのトレードオフを探しています。

よろしくお願いします。

プラディープ

4

1 に答える 1

2

私はERPシステムを設計しています...これには次のモジュールがあります...

自分が実際に何を構築しているのかを考えることが本当に重要だと思います。ERP を行う単一のシステムを構築していると言っても意味がありません。ここで SOA が本当に役立ちます。

あなたが実際に構築しているもの:

  • 見積もりビジネス機能の提供を介して見積もりビジネス ユース ケースを満たすサービス (ま​​たはサービス)
  • Planning ビジネス機能の提供により、Planning ビジネス ユース ケースを満たすサービス (ま​​たはサービス)
  • XXXX ビジネス機能の提供によって XXXX ビジネス ユース ケースを満たすサービス (ま​​たはサービス)

これらの個々のサービスを完全に別個のシステムとして構築し始めることを強くお勧めします。これらの各サービスには、

  • 別のコードベース
  • 別のデータベース (非常に重要!)
  • 個別の展開メカニズム

SOA を正しく行うための鍵は、適切なレベルでサービスを構成できることです。サポートするビジネス機能ごとに 1 つまたは複数のサービスを作成するのが一般的です。

リストしたビジネス機能ごとに必要なサービスが 1 つだけである場合もあれば、複数のサービスが必要な場合もあります。たとえば、経理機能は非常に大きく、複数の機能を含んでいるためです。

では、講義終了。あなたの質問に答えるために:

どのインスタンス化モードを選択すればよいですか?

パフォーマンスのためには、呼び出しごとを使用する必要があります。各呼び出しは、呼び出し操作の間だけ存在する新しいサービス インスタンスにディスパッチされるため、これは大量の場合に最も効率的です。すべてのクライアントも WCF であると想定している場合は、netTcpBinding を使用する必要があります。

標準操作の最小限のセットを公開する必要がありますか、それとも問題セットに固有の多数の関数を公開する必要がありますか?

これは多くのことに依存します。ここにルールはありませんが、1 つのガイドラインとして、特定のビジネス機能内のサービス間の通信は、リソースと HTTP ベースの操作 (GET、POST など) を介して行うことができます。これは、ビジネス機能内では、1 つのサービスによって公開されるエンティティまたはリソースが、消費するサービスにとって意味を持つと期待するのが合理的であるためです。

ただし、異なるビジネス ドメイン内のサービス間の通信は、後者の例に似ているはずです。ビジネス ドメインの外で意味を持つ明示的なビジネス レベルの操作。

最終的に、あなたの質問は素晴らしいものです。なぜなら、あなたはそれに答える本を書くことができるからです。ただし、この Web サイトでは、回答を短くする必要があるため、これ以上の説明はやめます。ただし、SOA 全般、特にビジネス機能サービスの自律性、およびRPC とリソースベースの Web サービスの違いについて読むことを強くお勧めします。

特にWCFの場合(それが使用しているテクノロジーである場合)、高性能WCFサービスを調査できます

于 2015-09-17T10:29:19.913 に答える