質問

私たちは、主に低トラフィックが、専門性の高いWebアプリケーションを開発します。通常、我々はL2S、EFまたはNHibernateは、アクセスレイヤとして使用し、それにAsp.Net MVCをスローしている通常のCRUD操作のために、我々はいくつかの種類に入れて直接が、より高度な機能/副作用のためにISession / DataContextのを問い合わせますサービス層。

さて、私は(つまり、コントローラから(あるいはjQueryのからする際の良いテンプレートエンジンショーアップ)のOData(WCFデータサービス)、クエリを介してデータを公開考えるとWCFサービスを介してサービス操作を公開しましたかWCFデータサービスのカスタムメソッドとして?)。どのような長所/短所は、このアーキテクチャのポーズをしますか?

高い複雑さと待ち時間を除く

ドIゲイン何か?より良い関心の分離(またはそれはちょうど錯覚ですか)?

編集を 例えばとの完全なAJAX駆動型ソリューションを作成することをお勧めすることができます。 WCF RIA Servicesのの?または1つは、あまりにも多くの柔軟性を失うのですか?あなたのような感じが完全に一体、その後、あなたのロジックからご意見を派遣することができ、一つはただ純粋なHTML、MVCが必要とされなければならないではないとしてもasp.netを書くことができるでしょうか?しかし、私は生じる新たな問題がたくさんだと思いますか?

役に立ちましたか?

解決

としてのTomTomあなたはときに、プロセス内のODataのループバックの費用を支払うことをしたくない、言及しています。あなたは、データベースに直接視線を持っており、それはあなた自身のアプリケーションのデータベースだ場合は、途中でWCF Data Servicesのを置く理由はありません。私はあなたが(L2S、EF、NHibernateはを)言及した他のオプションのいずれかを使用していきます。

さて、あなたはクライアントにいくつかのjQueryコードを持っている場合、あなたが消費する他のアプリケーションのための、あるいはあなた自身のアプリケーションのためのあなたのHTTPエンドポイントを介してデータを公開する必要がある場合は、サーバーからのデータにアクセスするニーズ、間違いのODataエンドポイントその助けとWCF Data Servicesの一つを作成する最も簡単な方法であることがあります。

他のヒント

それをしないでください。申し訳ありませんが、これは愚かな過剰設計アプローチです。あなたはONEプロセスであり、あなたは、ネットワーク接続を実行し、XMLにすべて渡してデータを符号化することを主張し、バックアウト、プラス限られたクエリセマンティクスを持つHTTP接続を介してそれを実行していますか?あなたも試してみました誰にも言わないでください。

関心の分離がここに幻想である - 。あなたの簡略化されたデータ層に高度に最適化されたドメインモデルを置き換える

SAID

:私はODataのが大好きです - 素晴らしいです。だけではない、エンドユーザーのために、しかし、あなたのデータに統合するために、別のプログラムのために - しかし、それはASP.NET MVCのように、フロントエンド技術で、プログラム技術ではありません。これは、同様のシナリオで使用され、信頼境界を介してデータを露光する際にすべきである。(シルバーは - 例えば - 要求を偽造することができるように信頼境界である)

これは、NHibernateのようなプロセス高のエンドアプリケーション実行時の層に置き換えるために最適化されていません。

のTomTom票をたくさん持っているし、彼は間違っていないのですが、彼は彼の説得力のある音にもかかわらず、また権利はありません。

は、この特に例では、OPはおそらく唯一の基礎となるデータベースを模倣したODataサービスによって阻害されるように立っていることをイントラネットLOBスタイルアプリを書いているように見えるが、何彼は、基礎となるデータベースを模倣していなかった場合はどうなりますか?

彼は様々なまたは未知の将来のデータソースに基づいてアプリケーションを構築していた場合、

は、その後、サービス層は、簡素化し、再現在、統一し、それらのサービスを集約することができても、中に最終的にはSQL Serverへのクエリの大部分隣の部屋ます。

あなたは、スケールアクション間の数秒を待つことを期待し、ユーザーのI平均数百万人によって大規模のアプリケーションを構築している場合は、同様に、FXのない何百万人はその後、アプリケーション間のサービス層を配置し、時間を取引データは、一般的なパターンです。インターネットのスケーラビリティは、多くの小さなステートレスのHTTPサーバとの間でのキャッシングインフラストラクチャに基づいています。

実生活では、同じクエリが実行されている無数の回は、人々がページを更新したり何度も同じリンクをクリックしてください。多くのない人間が一度にそれを見ることができますので、誰もが本当に、10メートルの行を要求しません。小さなページで働くようにデータが流れると、要求がインターリーブ続けます。あなたはまた、サービス層、あるいはRAMデータベース内のRAMキャッシュで共有紹介する機会を持っています。

あなたも、あなたのデータベースを破片またはSQLおよびキー/値ストア間でそれを分割する必要があることがあります。あなたはその後、中間層に合流行うことができ、スケールアウト、およびデータベースサーバから離れて参加し、計算集約型のものをオフロードます。

インターネット規模でのルールは、データベースがあなたのホットスポットであり、あなたがそれに話して、誰を防ぐためにあなたができるすべてを行う必要があるということです! IIS出力キャッシュでは、あなたのISPのプロキシで、iPadの中にそのローカルHTTPキャッシュすること、またはRedisのキャッシュに、すべてのこれらの層は、負荷を分散するために役立っている、負担を和らげるます。

カールは私と一緒に面接に来て、彼は彼のSQLボックスの前のOData層を置くと考えるのだ私に言ったのであれば、私は彼の推理を聞くことに興味があると思います。

WCF Data ServicesのとODataのサポートJSONは、あなたがそれを活用することでペイロードを最小限に抑えることができます。プラス、WCF Data Servicesで、あなたは完全にあなたのデータへのアクセスを制御することができます。あなたは、Entity Frameworkのをロールバックする必要はありません。あなたはすべてをカスタマイズすることができます。利点は、プロトコル構造が完全にWCF Data ServicesのとのODataを使用して自動的に処理されていることです。そして、MVCからサービスを消費することはサービス参照の追加先です。あなただけのOData型配信を超えて他のWebサービスを行う能力を持っているので、それは非常に柔軟であるので、WCF Data Servicesは、WCF上で実行されます。

限界がここにあります、よくWCF Data Servicesのは、ODataの処理方法と同じくらいのODataの自然とそこに来ているが、彼らはかなり具体的であり、彼らはあなたのアーキテクチャで発生した場合、それらを回避する方法があります。

あなたソリューションは、単一のWebアプリケーションに隔離されている場合は、

は、そのアプリケーションに埋め込まれたデータ層を有することはよく働きます。しかし、あなたは別のアプリを持っているか、プロセスがデータ層またはその後、WCFデータサービスでデータ層を置くのオプションを模索共有ビジネスロジックをヒットするいかなる必要性を持っている場合は、それも価値があります。たとえば、コードの2行でWebサービスメソッドを呼び出すためにPowerShellスクリプトを書くことができます。あなたは、ドメインロジックを持っているのであれば、あなたのWCFデータサービス層が重複したロジックまたはコードすることなく、すべてのためにそのシナリオを扱うことができ、あなたのWebアプリケーションから、コマンドラインまたはスケジュールされたタスクから実行できるようにすること。

多くの方法が猫を皮膚に。私は、ビジネスアプリケーションの両方のアプローチを使用しており、そのいずれかを言わないだろうか、他のは避けるべきです。彼らだけでなく、両方の仕事とは、有害なことなく、価値の多くを提供します。

公平を期すためには、確かに驚異的なされているパフォーマンス上の問題を、上回ることがあり、このアプローチの利点があります。アプリケーションは、この方法では、より多くのレイテンシー桁違いになりますし、インプロセスソリューションよりも実行するためにコンピューティング・リソースでより多くの数倍の費用がかかるかもしれ建てます。

きたということは、人的資源が限られている開発シナリオでは、これは良い仕事があり、言いました。請負業者は、すぐにそれらどんな言語のスーツに非常に迅速に新しい画面や全く新しいアプリケーションを作成するために雇われることができます。開発者は、アップツースピード得ることができます速く独自の自家製のソリューションよりも。設定ファイルでのこれ以上のsaのパスワード、1つの一貫性のあるリソースに複数のデータストアを組み合わせ、必要に応じてカスタムセキュリティ層、統一ロギングおよび監査の注入。あなたが不均一なプラットフォームを持っている場合は、書き込みのSDKには必要ありません、彼らはすでに多くの重要な言語で書かれています。 ODATAは、多くの組織では、巨大な勝利であるMSエクセル、と非常によく動作します。あなたがファイアウォールの背後に、リモートオフィスにいる場合や、(デモを行っているクライアントサイトで、たとえば、)専用線を使用するよりも、ネットワークトポロジによっては、インターネット上でアウトとさらに高速のルートに安くなるかもしれませんます。

は大きなデータセットの場合、要求及びパッケージングのオーバーヘッドはそれほど重要となります。例えば、シナリオを報告します。私はこのような何かを設計したことがないものの、それが役に立つかもしれないところ、私は内部のODataエンドポイントを消費するために、あなたの企業文化と利用可能なリソースに応じて、見ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top