2013-06-13 27 views
5

基本的に私のチームには新しいデスクトップアプリケーションがあり、それは私たちの製造現場のWindows 7デスクトップで動作するようになっています。このプログラムは、導入されるにつれてかなり使用され、製造データベースと対話する必要があります。私は、(最終的に)このアプリケーションを同時に実行している100〜200台のマシンがあると推定します。デスクトップアプリケーションからデータベースにアクセスするにはどうしたらよいですか?

ここからは幸いです。すべてを最初からやっているので、データベース、Webサービス、プログラムデザイン、および前述の間の相互作用を定義します。

従来のアプリケーションではデータベースに直接アクセスできますが、これは厄介です。我々は新しいアプリケーションでそれをしたくありません。

私の質問は、どうすればいいですか?ぼくは知っているが、基本的に私はここで自由に使いこなすことができ、私には正しい方向性が何であるか完全にはわからない。

私が最初に思っていたことは、私が他人がやっていることに基づいて、基本的にwebservicesを使用してデータベースから外すことです。すなわち、フロアからのすべてのデータベース対話は、Webサービスを介して行われなければならず、閉鎖されたドアの後ろのデータベースロジックの大部分を行うことによってセキュリティの層を提供する。 Webサービス呼び出しは、Active Directory経由で個々のユーザーに保護されます。

私が見つけたように、それはそれ自身のいくつかの意味を持っています...アプリケーションに達する前にデータを抽象化しなければなりません。 Webサービス呼び出しを繰り返し使用してデータを壊滅させたりスパムしたりすることによって、悪意のある濫用の可能性が依然として存在します。私たちはEntity Frameworkを見てきましたが、それが提供するものが本当に好きですが、わかりやすいように、この段階ではアプリケーションレベルに入るまでには利用できなくなります。

「正しい」と結論づけられないようです。だから、何が正しい?

答えて

3

Webサービスは適切なアプローチのようです。 Webサービス層にSOA指向のレイヤーを実装することで、データベースサーバーのデータに何が起こるのかを制御することができます。

繰り返される通話には何の損害もありません。最初に1回の通話ごとに監査ログを作成することができます。しかし、ロールベースのセキュリティを実装して、Webサービスメソッドがロール内のユーザーに公開されるようにすることもできます。つまり、誰もが何らかのメソッドを呼び出すことはできません。

フォーム認証でWebサービスを保護することもできるので、アクティブディレクトリだけでなく、データソースに対しても認証が行われます。

最後に、アプリケーション自体をClickOnceアプリケーションとして公開して、Webページからダウンロードして実行し、新しいバージョンを公開するときに自動的に更新されるようにすることができます。

あなたには、いくつかの技術的な指導が必要な場合は、私が数年前ということでブログました:

http://netpl.blogspot.com/2008/02/clickonce-webservice-and-shared-forms.html

+0

ありがとうございます。私はそれが正しいアプローチになることを期待していました。 – MGSoto

1

私の提案あなたはグリーンフィールドであるためには、ServicestackとAPIラッパーのアプローチを使用することです。

チェックアウト:あなたは、DB層は抽象離れて、servicestack認証を使用することができることを行うhttp://www.servicestack.net/ServiceStack.Northwind/

(あなたは異なるDBプロバイダに移動する可能性があるので、その場所を変更し、作業項目などのキューを提供し...)インフラストラクチャ全体を社内のイントラネットアプリケーションに移行する可能性があります。

Plus Servicestackは非常に高速で、ほとんどのプロトコルとの相互運用が可能で、MONOを介して実行できるため、非常に高価なMSバックエンドに悩まされることはありません。

私の2セントです。 :)

+0

@HighCoreこれまでServiceStackを使用しましたか? WCFと比較していくつかの違いがあります(http://www.infoq.com/articles/interview-servicestack)。 – mythz

+0

@HighCore他に何も試したことがないなら、あなたのフレームワークの限界や他の人たちがよくすることを決して知らないでしょう。あなたが言ったことは、ベストプラクティス、より速いパフォーマンス、より良い生産性、またはより弾力性を促進するものを学ぶことに何も触れていないということはありません。また、大規模なインターネットやSOA /クラウドサービス会社はSOAPやWCFを使用していません。 WCFも非難されていますが、Microsoftは新しいサービスや最新のサービスfx Web APIのためにそれ自体を使用したり、宣伝したりしません.WCFのようには見えません。結局、あなたはそれを推進している数少ない人の一人です。それはあなたが外の経験が限られている可能性が高いからです。 – mythz

+0

@mythzあなたが正しいかもしれません。たぶん私の心を少し変える時が来ました。 –

0

まず第一に、この質問はStackOverflowには適していません。

第2に、WCF RIA Servicesをご覧になることをお勧めします。

これらを使用すると、すべてのエンティティに対して基本的なCRUD操作を作成できます。 私はこれを自分で使ったことはありませんでした。いいえ、潜在的な問題が何であるかわかりません。

そうでない場合は、ちょうど私たちが何をしたかの操作を行います。

は、ジェネリック(<T>)インタフェースやサービスと契約して、すべてを作成します。これにより、サービス、DAO、ViewModelなどのCRUD機能を任意のエンティティタイプに適合させることができます。

関連する問題