5

基本的に、私のチームには新しいデスクトップ アプリケーションがあり、製造現場の Windows 7 デスクトップで実行できるように取り組んでいます。このプログラムは、導入されるとかなり頻繁に使用され、製造データベースとやり取りする必要があります。私は、(最終的には) 約 100 ~ 200 台のマシンがこのアプリケーションを同時に実行すると見積もっています。

幸運なことに、すべてをゼロから行うことができるので、データベース、Web サービス、プログラム設計、および前述の相互関係を定義します。

現状では、レガシー アプリケーションはデータベースに直接アクセスできますが、これは厄介なことです。新しいアプリケーションではそれを行いたくありません。

だから私の質問は、どうすればこれを行うことができますか? 漠然としていますが、基本的にはここで自由に使えるものがたくさんあり、進むべき正しい方向が完全にはわかりません.

私が最初に考えたのは、他の人が行っていることに基づいて、基本的に Web サービスを使用してデータベースを壁から切り離すことです。つまり、フロアからのすべてのデータベース インタラクションは Web サービスを介して発生する必要があり、密室でデータベース ロジックの多くを実行することでセキュリティ レイヤーを提供します。Web サービスの呼び出しは、Active Directory を介して個々のユーザーに保護されます。

しかし、私が見つけたように、それにはいくつかの意味があります...データがアプリケーションに到達する前に、データを抽象化する必要があります。Web サービス呼び出しを繰り返し使用してデータを破壊またはスパムすることにより、悪意のある悪用が行われる可能性は依然としてあります。私たちは Entity Framework を見て、それが提供するものを本当に気に入っていますが、私が知る限り、このインスタンスのアプリケーション レベルになるまでには、それは利用できなくなるでしょう。

何が「正しい」のか、結論が出ないようです。それで、何が正しいのですか?

4

3 に答える 3

3

WebServices は正しいアプローチのように思えます。Web サービス層に SOA 指向の層を実装すると、データベース サーバーでデータに何が起こるかを詳細に制御できます。

繰り返しの呼び出しが損害を与えることについてのあなたの疑問を共有することはできません.まず、すべての呼び出しの監査ログを作成して、誤用の可能性を明らかにすることができます. ただし、Web サービス メソッドがロール内のユーザーに公開されるように、ロール ベースのセキュリティを実装することもできます。つまり、誰もが任意のメソッドを呼び出すことができるわけではありません。

Active Directory だけでなく、任意のデータソースに対して認証が行われるように、フォーム認証を使用して Web サービスを保護することもできます。

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

技術的なガイダンスが必要な場合は、何年も前にブログに書いています。

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

于 2013-06-13T19:14:16.387 に答える
1

あなたがグリーンフィールドであるため、ServicestackでAPIラッパーアプローチを使用することをお勧めします。

チェックアウト: http://www.servicestack.net/ServiceStack.Northwind/

これにより、サービススタック認証を使用し、db レイヤーを抽象化して (別の DB プロバイダーに移動したり、その場所を変更したり、作業項目のキューを提供したりできるため...)、やがてインフラストラクチャ全体を内部イントラネットに移動できます。アプリ。

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

私の2セント。:)

于 2013-06-13T19:14:19.273 に答える
0

まず第一に、この質問は StackOverflow には適していません。非常に迅速に最終票を獲得する可能性があります。

次に、これについてはWCF RIA Servicesを参照してください。

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

それ以外の場合は、私たちが行ったことを実行してください:

一般的な ( <T>) インターフェイスとサービスとコントラクトとすべてを作成します。これにより、サービス、DAO、ViewModel などの CRUD 機能を任意のエンティティ タイプに適応させることができます。

于 2013-06-13T19:14:28.230 に答える