8

私は、Silverlight クライアントと関連する ASP.NET Web サービス (WCF ではない) に取り組んでおり、「お気に入りの項目」システムや、ワード ラッピングが必要かどうかなど、ユーザー設定を含むいくつかの機能を実装する必要があります。(腹立たしくするのではなく) 快適なユーザー エクスペリエンスを実現するために、これらの設定をセッション間で維持したいと考えています。簡単な調査では、主に 2 つの可能性があることが示唆されています。

  1. Silverlight 分離ストレージ
  2. ASP.NET アクセス可能なデータベース

オプション 2 は、ユーザーが Silverlight の分離ストレージを無効にしても設定が維持されるため、おそらく最良のオプションであると認識していますが、現時点ではデータベースを維持する負担を回避したいと考えており、このアイデアが気に入っています。サーバー接続が利用できない場合でも、設定を読み込んで編集できること。しかし、私は、後でよりも今この攻撃を受ける方が好ましい理由について、合理的な議論を受け入れます。

私が探しているのは、どちらのシナリオでも、設定の永続性を実装するための最良の方法に関する提案です。たとえば、分離ストレージが使用されている場合、設定を保持するために XML 形式またはその他のファイル レイアウトを使用する必要があります。データベース アプローチを使用する場合、設定テーブルを設計する必要がありますか、それとも ASP.NET にこれをサポートする組み込みメカニズムがありますか? クライアントに設定を提供するにはどうすればよいですか?

そう:

ユーザー設定の永続化に適したソリューションはどれですか? そのソリューションで設定を保持する方法と、クライアントがそれらにアクセスして更新する方法を教えてください。

先行研究

この問題について少し事前調査を行ったところ、次のリンクを見つけたことに注意してください。これらのリンクは、読んだ記事に応じていずれかの解決策を提唱しているようです。

アップデート

Microsoft は、Silverlight の組み込み部分として分離ストレージでの設定の永続化を提供していることが判明しました (別の方法を実装するまで、どういうわけかそれを見逃していました)。以下の私の答えには、これに関する詳細があります。

マイクロソフトはクライアント側の設定の永続性を提供していますが、これがユーザー設定を永続化するための最良のアプローチであるとは限らないため、質問を開いたままにしています。

4

3 に答える 3

2

さらに調査し、 IsolatedStorageを使用して独自の XML ファイルベースの設定永続性を実装した後、 IsolatedStorageSettingsクラスと、ユーザー固有のアプリケーション設定を格納するためのキー/値コレクションであるIsolatedStorageSettings.ApplicationSettingsオブジェクトを発見しました。

今ではすべてが明らかです。もちろん、長期的には、サーバー データベースを使用して設定をバックアップおよび復元するメカニズムは、このクライアント側の設定の永続性を強化するのに適しています。

于 2009-05-06T23:52:51.110 に答える
1

一般的に、デフォルトはサーバーに保存することだと思います。クライアントに保存しようとする特定のやむを得ない理由がある場合にのみ、そうする必要があります。制御できない媒体への保存に依存すればするほど、リスクが高まります。

そうは言っても、議論の「データベース」側に身を置くと、データベースの欠点は何でしょうか。XMLの使用についておっしゃいましたが、データは半構造化されているだけですか?もしそうなら、なぜXMLをSQLデータベースに保存しませんか?このように単純なものを設定することは、ほとんどの標準では一般に「負担」とは見なされません。単純なWebサービスは、Silverlightクライアントと設定データベースの間の仲介役として機能する可能性があります。

于 2009-05-05T20:08:21.140 に答える
1

ユーザーがオフライン中に自分の設定にアクセスできることが重要な機能である場合は、分離ストレージが適しているようです。ユーザーが分離ストレージをオフにした場合でも設定を保存できることがより重要な場合 (これは本当に問題ですか? これについて YAGNI に電話したくなるでしょうが、Silverlight プラットフォームの経験はあまりありません.. .) 次に、データベースをホストする必要があります。両方が重要な場合は、何らかのハイブリッド ソリューションを検討している可能性があります。可能な場合は分離ストレージを使用してから、データベースにフォールバックします。

言い換えれば、抽象的なベスト プラクティスよりも、アプリケーションのニーズの方が重要だと思います。

于 2009-05-06T14:01:25.227 に答える