2009-07-13 15 views
-1

私は、ベストプラクティスのコンセンサスか、アプリを書く上での単純な正気を見たいと思っています。DLLの代わりにWebサービスを使用

  • 【のHttpHandler]
  • ClientRender.ProcessRequest(...)
  • ClientFactory.GetInnerInfo(...)
  • Services.ServiceConnect.GetCampaignService(:私は以下のものがこの例で

    ...)

  • [Webサービス]
  • Campaign.GetInnerClient(...)
  • [Webサービス]
  • DAL.GetInnerClient(...)
  • EnterpriseLibrary.CreateDatabase(...)
  • EnterpriseLibrary.GetStroedProcCommand(...)
  • EnterpriseLibrary.ExecuteReader (...)
  • DAL.PopulateClientCampaignFromReader(...)
  • DAL.ClientCampaignFromDataReader(...)
  • コールツリーを返します...

質問

    1. I はのHttpHandler内 からWebサービス内からのWebサービス を呼び出すことにより、パフォーマンスヒットのどのような種類を負うのですか?
    2. 2つのWebサービスよりもむしろ アセンブリとしてこれを書き直すのは理にかなっていませんか? (そして、WSDLの出版のためにアセンブリ の上に Webサービスを置く。)
    3. また がこれらの同じアセンブリを活用し それが「正しく」 シンプルを追加するために2-3日かかることを管理者のウェブサイトを持っています1つのデータのCRUD操作 エンティティ。 をより直接的なアプローチに移行すると主張しますか?

    これは意味があり、フィードバックは大歓迎です。

  • +0

    この「例」の意味を理解していましたか? –

    +0

    これはより多くの擬似コードですが、WS呼び出しWSの呼び出しを示しています。古いWebサイトからの簡単な呼び出しでは、DAL全体をWSに含めるなど*少なくとも15のWSメソッド*を呼び出すことになります。非常に多くのHTTPオーバーヘッドは効率的ではありません。 –

    答えて

    2

    IMHOは、Webサービスが提供すべきものの誤解です。 WSを使用してデータベース・コールを作成することは意味がありません。

    1. データベース抽象化とビジネスロジック用に別々のアセンブリを作成します。 "GetStoredProcCommand"のようなメソッドとクラスは単一のアセンブリに属し、ビジネスロジックは別のアセンブリまたはアセンブリのグループに属している必要があります。
    2. WebServicesの基礎としてこれらのアセンブリを使用します。
    3. WebServiceを構築する前に、誰が使用するのか、どのように使用するのかを知っておくことが重要です。あなたが何をすべきかわからない場合、WebServicesの束を構築するのは意味がありません。それはあなたがそれを構築した後にあなたが本当の機能を押し出すので、混乱に終わるでしょう。
    4. Webサービスが内部アプリケーションから消費されることになっている場合は、Webサービスの使用にパフォーマンスが影響することに注意してください。 WS経由ですべてを実行しようとすると、速度が遅くなります。
    +0

    これは私が心に留めていた答えですが、*答えですか? :) –

    +0

    私には、これは*答えと思われます。たとえば、パブリックAPIには一貫性が必要です。これは、現在のデザインでは持たないものです。あなたは多くの、漏れた抽象化をたくさん終わらせます。 –

    +0

    Webサービスが「データベース呼び出しを処理する」ことは意味がありませんが、「エンティティ」レベルでデータを処理する内部Webサービス(公開されていない)を持つことは理にかなっています。このようにして、ビジネスエンティティの共通のセットは、他のWebサービスを含め、それを必要とするソフトウェアの内部部分にさらされる可能性があります。 ADO.NET Data Servicesは、これをパッケージ化して実装しようと試みます。 –

    0

    Webサービスコールをネストする正当な理由が明らかでないことは間違いありません。

    これは、であることを意味するものではなく、明らかではないことのみを示しています。おそらくサービスを書いた人に尋ねるべきです。

    +0

    私がこれまでに得た唯一の理由は、パブリックAPIを最終的に構築できるようにすることです。 –

    関連する問題