テキストの壁を事前に申し訳ありません!
シナリオ:
「スタンドアロン」モデル(デスクトップマシンで実行されるフロントエンド+バックエンド)だけでなく、ローカルサーバーモード(ローカルサーバーにインストールされたバックエンド)もサポートする必要があるLOBアプリに選択するテクノロジーを検討しています。インターネット経由のサービスとしてのソフトウェア(ホストされたサーバーにインストールされたバックエンド)。
開発作業を最小限に抑えたいので、Silverlightフロントエンドを選択しました。3つのモデルすべてに同じコードベースを再利用する予定です。
LOBアプリはデータ入力に重点を置いており、バックエンドでいくつかの計算作業を行います。たくさんのビューがあります。そして、80以上のテーブルを持つデータベースができます。現在、MSSQL、MySQL、およびOracleをDBMSとして使用できるようにする独自のDALがあります。
現在のビジョンは、Caliburnフレームワークを使用したC#のフロントエンドとしてアジャイルTDD Silverlight4.0MVVMアプリを使用することです。また、バックエンドとしてWCF(RIA?)サービスを使用する(Silverlight以外、プレーンな.NET 4.0)。これは、バックエンドをどこにインストールするかだけの問題であるため、さまざまなモデルにうまく適合します。SAASモデルの場合、バックエンドが存在する可能性のあるサーバーがインターネット上にあります。
質問:
これはまったく実行可能に聞こえますか、それとも、異なるモデルに同じコードベースを使用できると考えているのでしょうか。
バックエンドに関しては、WCF RIAサービスを検討していますが、WCFのSilverlight実装では不可能と思われる「メッセージセキュリティ」が必要です。WCF RIAは有効な選択ですか?それとも、セキュリティに関して、プレーンなWCFの方が「優れている」のでしょうか。
さまざまなDBMSに関しては、サポートする必要があります。これはWCFRIAサービスと関係がありますか?それとも、独自のBLL / DALを作成し、それをプレーンなWCFを介して公開する方がよいでしょうか。
インラインSQLを使用せず、ストアドプロシージャのみを使用した複数のDBMSセットアップの経験がある人はいますか?元のアプリはインラインSQLに重点を置いていますが、さまざまなDBMSにストアドプロシージャを配置するだけで、このアプリをどのように保守できるのか疑問に思っています。
最後の質問ですが、MVVMとセキュリティに関しては、セキュリティ/コード保護の理由から、バックエンドでロジックの多くを「非表示」にしたいと思います。これのために行う論理的なことは何でしょうか?TDDを実行する必要があるため、モデルをモックアウトできる必要があります。つまり、フロントエンドで使用できる必要があります。ただし、すべてのロジックをバックエンドに含める必要があります。フロントエンドで「ラッパー」を使用して、バックエンドの「実際のモデル」を「リンク」する必要がありますか?バックエンドモデルと1対1で適合するダミーモデルの一種。それとも、これを行うための「より良い」方法はありますか?
あなたがこれらの主題のいずれかで私たちに与えることができるどんな助けにも前もって感謝します!
ヒューロン。