5

SQL Serverをデータベースとして、ローカルネットワークで使用されるデスクトップアプリケーションを構築しています。

このアプリケーションには、同時に約50人のユーザーがいます。どの特定のシナリオでWCFサービスを使用する必要がありますか?データベースが存在するサーバーコンピューター上にWCFサービスを作成することをお勧めします。そのため、データベースに直接接続するのではなく、WCFサービスを介してこのサーバーに接続しますか?SQL Serverデータに接続するための推奨される方法とその理由は何ですか?

編集:もっと詳しく説明させてください。以前にWCFRiaサービスを使用したことがあるので、それらがどのように機能するかを知っています。WCFサービスが同じように機能すると仮定しましょう。質問は、データベースに直接接続する代わりにWCFを使用する理由に向けられました。特定の要件に対して特定の回答が得られるため、現在のアプリケーション要件を指定したくありませんでした。私の目標は、一般的に、なぜ、いつ、別の代わりに1つを使用するのかを理解することでした。そして、これまでに満足のいく回答をいただきました。

一般的なコンセンサスは、サービスからデータを取得するためにWebアクセスを使用する別のタイプのアプリケーションの需要がある場合にのみWCFを使用することであるように思われます。また、私が正しく理解していれば、セキュリティの観点から、2つの間に違いはありません。

将来的には、Webを使用してユーザーに読み取り専用の統計を提供する統計アプリがあり、当然、このタスクには何らかのサービスが必要になります(アプリケーションは特定のクライアントを念頭に置いておらず、多くのクライアントに提供されます)。特定のクライアントに対して非常に迅速にデモアプリケーションを実行する必要があるため、サービス部分を無視して適切な階層化(WPF-> VM-> Model-> EF)を作成することを考えています。後で、サービスを間に挿入します。モデルとEF。レイヤーを挿入してWPFアプリを実行するのにそれほど時間はかからないと思います。また、次の理由でサービスを延期しています。HTML5がWebの主要なテクノロジであり、 SLが(私が使用している)テクノロジとして放棄される可能性がある場合、論理的な決定はSLではなくHTML5を選択することです。

4

3 に答える 3

3

この質問を検討するためのより良い方法は、サービスインターフェイスを使用してアプリケーションからデータベースとデータアクセス層を抽象化する必要があるかどうかです。WCFとSOAPを使用することも、RESTベースのHTTPサービスを使用することもできます。テクノロジーの選択は、アプリケーションの現在または将来の要件が、追加の抽象化レイヤーが必要であることを示しているかどうかに依存します。

SQLデータベースに直接接続する代わりにサービスインターフェイスの使用を検討する理由には、次のものがありますが、これらに限定されません。

  • 複数のオペレーティングシステム/クライアントUIのサポートのしやすさ
  • データベーススキーマとは別にデータ/サービスインターフェイスを進化させる機能
  • アプリケーションをデータベーススキーマまたは場所への変更から分離します(アプリケーションへの変更を再デプロイする必要はなく、呼び出しているサービスの内部のみを変更します)
  • データが他のシステムで使用される可能性がある場合は、これらのシステムがアプリケーションが管理しているデータとインターフェイスできるようにする標準的な手段があります。
  • SQLデータベース接続のセキュリティ上の懸念の軽減(サービスIDのみがデータベースに接続し、クライアント側でさまざまな認証/承認戦略を使用できるようにします)

あなたが見ているトレードオフは、サービスインターフェースを実装する時間/コスト/複雑さと、あなたが得る柔軟性と維持可能性の利点です。ADO.NETを使用してデータストアに直接接続するか、サービスレイヤーを使用するかを決定する前に、アプリケーションと顧客のニーズを評価する必要があります。

考慮すべき多くの考慮事項をカバーしているため、Microsoftサービスレイヤーガイドラインを確認する必要があります。

于 2012-04-19T21:30:40.443 に答える
2

再利用可能なサービスを作成する必要がない限り、WCFレイヤーを追加する理由を考えられません。ただし、それを行う理由を探しているだけではありません。EFやnHibernateのようなある種のORMを使って、幸せになれると思います。

于 2012-04-19T18:00:41.303 に答える
1

WCFの主な理由はセキュリティです。クライアントがDBに直接接続する場合は、クライアントにテーブルに対する権限を付与する必要があります。クライアントは接続をハッキングしてTSQLを直接使用できます。単一層アプリケーションでは、ポート1433をネットワークに公開する必要があります。WCFでは、クライアントからSQLへの直接アクセスはありません。一般的に安全性が高いだけでなく、よりきめ細かいセキュリティを実現できます。.NETサービスコードは、行レベルのセキュリティを適用できます。テーブルには列レベルのセキュリティしかありません。これがプライベートネットワークでのビジネスであり、だれかがデータベースにハッキングしようとすることを期待しない場合は、SQLサーバーに直接接続するクライアントを構築する方が簡単です。サーバーサイドサービスでは、もう1つの要素は、サーバーサイドコードの変更が1つの場所であるため、50台のデバイスを更新する必要がないことです。

于 2012-04-19T18:55:22.230 に答える