2

以前はデスクトップ アプリケーションがありましたが、サーバーへのアクセス (物理的またはリモート) がクライアントにとって望ましくないという事実を考慮して、(理論的には) 24 時間年中無休で実行されるWindows サービスに変更しました。

ここで、古い機能と古いインターフェースを維持するために、そのサービスにリモート ユーザー インターフェースを提供する必要があります。

そのために、WCF を使用していくつかの SOA サービスを開発しました。すべてのサービスの合計が古いインターフェースと同じ機能を提供するように、構成用のサービスと、ネットワーク情報、統計などの別のサービスを用意しますが、機能の異なる領域に分離されます。

私は SOA の経験があまりないので、この設計は正しいですか? SOA はリモート UI に適していますか? サービスは 1 つだけにする必要がありますか、それとも論理グループにする必要がありますか?

注:サービスに関する情報の一部にアクセスするアプリケーションがいくつかあるため、この論理的な分割を行っています。

編集:誰が接続できるか、および早い段階でアクセスできるものに対してセキュリティを実装する価値はありますか? 大きな YAGNI 警告が表示されているように見えますが、間違っている可能性があります。

リモート UI の実装方法、既存のフレームワーク、最良のアプローチ、SOA を使用する利点と欠点などについて、あらゆる種類の提案に興味があります。

4

3 に答える 3

2

「リモート UI」と言うとき、実際には、リモート サーバー上で実行されるいくつかの操作があり、API を介してリモートで呼び出されることを意味していると思います。

リモート UI は、ユーザー インターフェイスがサービス マシンで実行されていることを意味し、ユーザーはターミナル サービスなどの投影された UI を介してサービスと対話していました。

サービスが行う作業を SOA api で公開することは、おそらく最善の方法です。その後、UI を Winforms、Silverlight、ASP.Net など、将来的に実装できます。SOA は非常に多くの人にとって非常に多くのことですが、私はそれをシステムの境界点として考えたいと思います。各当事者は、反対側の実装の詳細を知りません。

サービスの粒度を決定することは必ずしも明白ではありませんが、現時点で実装を任されている UI アプリケーションだけでなく、サービスのコンシューマーに提供する機能について考えようとすると、もちろん、これらは決まったものではなく、進行に合わせてリファクタリングできます。1 つのアプリケーションで複数のサービスを利用できるため、その点では問題ありません。

私が働いている場所では、通常、最初に機能を実装してから、後でセキュリティの質問に答えます。セキュリティ要件はもちろん具体的ですが、アクセスされるデータの機密性や、ユーザーがサービスを通じて呼び出すことができる機能などを考慮する必要があります。サービスがネットワーク上で内部的に使用されている場合、またはインターネット上で公開されている場合、およびユーザーが悪意のある行動を試みる可能性があります。たとえば、ビジネス ユーザーが Visual Studio のコピーをダウンロードし、独自の WCF クライアントを作成して大混乱を引き起こす可能性はほとんどありませんが、あらゆる可能性があります。

于 2009-09-07T23:10:31.323 に答える
1

正しい軌道に乗っているようですね。あなたの問題は本質的に私が抱えている問題と同じであり、あなたが説明したのとほぼ同じ方法で私のものを設計しました.3つのWCFサービスをホストするWindowsサービス(現在まで)と、ユーザーがローカルまたはリモートで WCF サービスを提供します。

記述した論理分割が互いに完全に独立している場合、それぞれを独自の WCF サービス モジュールにすることは非常に理にかなっています。ただし、一部の重複がある場合 (たとえば、構成サービスが何らかの方法でネットワーク情報サービスと対話する必要がある場合)、必ずしも完全に別個の WCF モジュールとしてではなく、WCF コントラクト レベルで論理的な分割を課します。これにより、Windows サービス内での処理が少し簡単になります。

Juval Lowy の著書Programming WCF Servicesをお持ちでない場合は、入手することを強くお勧めします。それは偉大な WCF 参考書です。また、彼のサイトIDesign.netにアクセスして、無料で入手できる WCF コード例を多数入手することもできます。

于 2009-08-31T22:15:48.610 に答える
0

私の意見は、フロント エンドのユーザー インターフェイス、SOAP ベースの Web サービスは重く、負荷が増加するとパフォーマンスが問題になる可能性があります。代わりに、フロント エンドのユーザー REST ベースのサービスとビジネス ロジックとオーケストレーションの SOAP ベースのサービスにより、高度なスケーラビリティを実現できます。パフォーマンスの良いアプリケーション。

WCF は SOAP サービスと REST サービスの両方をサポートしていると思います。REST サービスはプレーンな HTTP に基づいているため、軽量でテクノロジーに中立です。

于 2009-09-10T16:28:47.933 に答える