MSSQLバックエンドを使用するスタンドアロンのWPFアプリケーションを構築します。後でWCFを介してクライアントサーバーに変換できるように構成したいと思います。クライアントとサーバーの両方で共有されるクラスのセットがあります。サーバー部分を後でWCF経由で実際のサーバーに移動し、個々のクラス全体(または可能な限り全体)を維持できるように、これをどのように構成できますか。現在、単一のサーバークラスと単一のクライアントクラスおよび共有クラスのセットを備えた単一の.CSにビジネスレイヤーとデータレイヤーがあります。私はそれが3つの.CSであるべきだと感じますが、確かではありません。
1 に答える
応答がなかったので、テスト用の WCF アプリケーションを作成して、自分で答えを出そうとしました。
明らかに、私は WCF を初めて使用します。
クライアントとサーバー間の WCF では、ServiceContracts と DataContracts があります。これらはサーバー側で定義されます。クライアントはこれらのコントラクトを検出し、型として公開します。
ServiceContract はメソッドです。DataContract は、プロパティだけを持つクラスです (これは単純化しただけで、さらに多くのことができます)。
だから私の質問に答えて。
サーバー側を表すメソッドを持つクラスを作成します。
DataContacts を表すパブリック プロパティのみを持ついくつかの単純なクラスを作成します。
サーバー側を表すメソッドとの間の入力には、これらの単純なクラスのみを渡します。
これらの単純なクラスを、作業中のクライアント クラスのコンストラクターへの入力として使用します。
リトマス テストは、どのクライアント クラスも SQL に接続しないことです。
スタンド アロング アプリでは、クライアント クラスを SQL に接続させ、ループを作成して接続を保持するケースがいくつかありますが、WCF 用にリファクタリングする必要があることに注意してください。ここでセキュリティに関するコメントが得られることはわかっています。現在、クライアントは Citrix でホストされており、ポート 1433 は公開されていません。アイデアは、Citrix を削除するために製品を配置することです。
サーバー メソッドは公開されたインターフェイスであるため、コントラクトを変更せずに実装を更新できます。
DataContract は継承をサポートします。
DataContractInheritance
誰かがより良い答えを持っていれば、喜んで受け入れます。