2011-08-04 24 views
1

私は構成データマネージャーを作成します。これにより、複数のサービスがすべてのサービスに共通の構成データを格納してアクセスすることが可能になります。 Managerの目的上、構成クラスオブジェクトを作成することを決めました。基本的には、すべての構成データエントリは次のようになります。 名前、型、および値。動的オブジェクトをシリアル化するにはどうすればよいですか?

これらのオブジェクトはすべて、構成データオブジェクト自体を記述する文字列です。このデータをデータベースから文字列として取得すると、この構成オブジェクトに格納されます。

次に、WCFを経由してその宛先に送信します。しかし、構成オブジェクトのシリアル化されたバージョンを送信するのではなく、オブジェクトのシリアル化されたバージョンをという構成オブジェクトで記述する必要があります。データマネージャは、コンフィギュレーション・データについて何を知っている必要はありません

  1. ように私はこれを行うにはしたいと思い

    理由があります。

  2. サービスを変更せずに設定オブジェクトを簡単に追加できます。もちろん、読み込みだけでなく、すべてのCRUD操作を実行できるはずです。

概要: 入力:名前、タイプ、および値の文字列

出力:オブジェクトの直列化された出力。オブジェクト自体は、「タイプ名=値」

質問です:

  1. これは、データを格納し、アクセスするための良い方法ですか?
  2. このようにシリアル化するにはどうすればよいですか?
  3. getConfigurationDataメソッドの関数プロトタイプはどのように見えますか?

私は別の方向に行くことにしました。助けてくれてありがとう。

+0

あなたは実際にこれらの問題を解決するために必要な最初の人ですか?もしそうでなければ、すでに.NETでさえ、おそらくマイクロソフトによってさえ解決されている可能性が高いでしょう。言い換えれば、「過去10年間に使用されていた.NET構成システムに何が問題なのですか? –

答えて

0

これはデータの保存とアクセスに適した方法ですか?

答えが難しいですが、私があなたに与えることができるのは「はい」と「いいえ」の両方です。はい、このデータのシリアライゼーション/リハビリテーションを分離するのは悪い考えではありません....そして、いいえ、あなたがそれをやっていることについてはあまり気にしません。私は手で編集する予定がない限り、テキストで保存したいとは思っていません。私が手で編集しているのであれば、データベースに入れたいとは思いません。それはできます。あなたが本当に正しい軌道に乗っているかどうかはまだ分かりません。

どうすればこのようにシリアル化できますか?

自分でビルドしないでください。既に存在する既知の形式を使用してください。 XMLやJSONのいずれかを手で編集できるようにするか、編集する必要がない場合はいくつかのバイナリ形式(BSON、protobuffers)があります。

getConfigurationDataメソッドの関数プロトタイプはどのように見えますか?

私はまず、一般的な一般的な構成を、サービス固有の構成からの別の呼び出しに分解します。これにより、getConfigurationDataは、共通情報のリッチタイプを単純に返すことができます。次に、サービス固有のデータ用に追加のparamとプロパティを追加するか、別のメソッドを追加します。例:

[DataContract] 
public class ConfigurationInfo 
{ 
    [DataMember] 
    public string Foo; 
    ... 
    // This string is a json/xml blob specific to the 'svcType' parameter 
    [DataMember] 
    public string ServiceConfig; 
} 

[DataContract] 
public interface IServiceHost 
{ 
    ConfigurationInfo GetConfigurationData(string svcType); 
} 

明らかに、 'ServiceConfig'を解析するために呼び出し元に少し負担をかけます。しかし、あなたのサーバーはそれを不透明な文字列値として扱うことができます。それを適切なsvcTypeに関連付けて、正しい値を格納/フェッチすることだけです。

+0

ご協力ありがとうございます。 1.私はむしろそれをオブジェクト自体として保存するでしょうが、データベースはオブジェクトの型を知る必要はありませんか?または、それを取得するために作成できる一般的なメソッドがありますか? (私が前に述べたように、私はCシャープの新人です)。 2.私はXMLの使用を予定していました。カスタム構成オブジェクトによって記述されたオブジェクトをシリアル化するように指示する方法を知りませんでした。代わりに、私はオブジェクト自体を持っている場合、それを送信するのは簡単です。しかし、私はそれを行うための抽象的な方法が必要です。 – Bob2Chiv

関連する問題