2010-12-03 9 views
0

SilverlightでMVVMを頭を悩ませています。これは主に既存のアーキテクチャにどのように取り入れることができるか、それへのアーキテクチャ。Silverlight、WCF、MVVM、および既存のn層アセンブリ

私が現時点で持っているアーキテクチャーは、基本的に、サービス層がその上にある伝統的なn層です。私は、WCFのビジネス・ロジックのアセンブリと、ビジネス・エンティティ(エンティティ・フレームワーク)を含むアセンブリのサービス・レイヤーを持っています。

WCFのサービスレイヤーはかなり単純です。ビジネスロジックレイヤーを公開するだけで、Silverlightとの互換性を高めるためにいくつかの変更が必要です。ビジネスエンティティアセンブリは、サービスレイヤとロジックレイヤの両方で参照され、両方が同じエンティティを使用し、サービスを消費するものもそれらのエンティティを認識します。

すべてがピーチです。

また、SilverlightとMVVMが付属しています。ビューの部分は簡単です、それはすべてのuiものthatsです。 ViewModelとModelは私にとって興味深いところです。私の考えでは、Modelはビジネスエンティティアセンブリであり、ViewModelはビジネスロジックアセンブリです。

Silverlightが私のWCFサービスを使用する場合、これと結合されたビジネスロジックレイヤは、私のViewModelです。今私は2つの問題があります。 1/ViewModelオブジェクトはSilverlightプロジェクトに存在する必要があります。 2/WCFサービスによって公開されるタイプ(ビジネスエンティティ)はSilverlightと互換性がないため、アセンブリはSilverlight用ではありません。アセンブリを参照として追加しようとしたときに、この効果の例外を発生させます。

だから私のビジネスエンティティを自分のモデルとして使用するにはどうすればいいですか?また、私のViewModelでSystem.ServiceProcess.ServiceControllerなどの他の.Netタイプを使用するにはどうすればよいですか?

答えて

0

私はあなたがWCF RIA Servicesを見るべきだと思います。

https://www.silverlight.net/getstarted/riaservices/

+0

他のアプリケーションの使用にも適していますか?確かに、それはこの問題を解決するかもしれません。しかし、他のアプリケーションはビジネスロジック層に必要です。 WCFサービスは、たとえばクライアントの外部で利用可能でなければなりません。 – Carl

+0

また、これは私がSystem.ServiceProcess.ServiceControllerなどの.Netオブジェクトを公開するのに役立ちますか?私は本当にこれを再びモデル化しなければなりませんか? – Carl

+0

RIAはWCFサービスであり、私が理解するところでは、他のアプリケーションからアクセスできます。 – thepaulpage

関連する問題