Avi*_*Avi 31 prism mef unity-container mvvm-light caliburn.micro
请帮忙 - 我迷路了!
我正在编写一个小型桌面应用程序,它有一些控件和一些屏幕.这应该稍后与一个小网站集成,也有一些屏幕.我们的想法是让用户编辑视频并选择图像,然后与朋友分享他们的结果.
桌面应用程序使用的是C#WPF,即网站 - ASP.Net MVC.
我读到使用MVVM可以更轻松地将应用程序增加到几个屏幕.所以我开始搜索并发现了Caliburn.Micro和MVVM.Light.我已经下载了一些教程,但正如我准备深入研究材料一样,我在SO上找到了.那里还有Prism,MEF,Unity,ReactiveUI - 这太过分了!
我学习新东西很糟糕 - 学习WPF和ASP.Net MVC花了我很多年的时间.我不想研究很多新材料,只是为了稍后发现它不相关.而且我没有一位建筑师来指导我.
所以我的问题是:你能否对这些框架和技术进行透视,并建议我应该把重点放在研究和使用上(特别是后来用于Windows 8的内容)?
dev*_*tal 44
如果你想构建一个MVVM应用程序(你可能会为了各种优势而做),那么你需要一个MVVM框架.
我建议使用Caliburn.Micro,因为它可以直接按照Caliburn.Micro文档页面上的示例实现.它还有一个非常引人注目的配置机制约定,并使用一个Actions系统从视图中调用视图模型上的动词(方法).这比我见过的任何其他机制更强大.
Prism是一个非常重量级的框架,它包含MVVM设计的元素以帮助实现,以及特别适合构建复合应用程序(由托管shell中的分离组件构建的应用程序).
MEF对于需要发现应用程序的插件或扩展(甚至在应用程序已经引导之后)的这些类型的应用程序非常有用,并且可以与诸如Caliburn.Micro之类的MVVM框架一起使用.MEF也可用于实现控制反转,但不提供控制容器的其他反转中的一些核心功能,因此您可能决定仅使用它来实现插件功能.
Unity是一个IoC容器,可用于为您的常规应用程序基础结构实现依赖注入..NET空间中有许多IoC容器,其中一些容器提供了改进的性能,附加功能或更友好的API.
我不知道ReactiveUI,因为我没有使用它.
如果您正在谈论最大化代码重用以转移到WinRT,那么MVVM是一个很好的选择.
Jas*_*per 15
PRISM已经包含了MEF和MVVM逻辑:)
好的一点点解释:
MVVM代表应用程序中的逻辑.实际上是View,View-Model和Model解耦的巧妙方式.不知道任何最好的(?)框架 - 你可以检查Catel,如果你想要或MVVM Light,但它只是一大堆来自理解MVVM逻辑并且只是让它易于实现的代码.你实际上可以尝试编写自己的MVVM框架并看到"没有秘密成分" - 只是相同的重复代码和相同的类等等......实际上你不需要任何MVVM框架来实现MVVM.
一旦你学习并编写MVVM,你就会立即遇到问题 - 我如何以解耦的方式测试它(例如,这在Silverlight中不是一个小问题) - 所以这里所有的IOC/Inject框架都会发挥作用.例如MEF.考虑以下示例来了解有关Inject框架的大图:
项目"共享",以"最小分隔符"编写(例如,可移植库)
public interface IAmSharedInterface
{
string SayHello();
}
Run Code Online (Sandbox Code Playgroud)
项目"主要",仅参考"共享"项目
public class IAmMainClass
{
[ImportingConstructor]
public IAmMainClass(IAmSharedInterface SharedInterface)
{
SharedInterface.SayHello();
}
}
Run Code Online (Sandbox Code Playgroud)
项目"实施者",仅参考"共享"项目
[Export(IAmSharedInterface)]
public class IAmImplementor: IAmSharedInterface
{
public string SayHello()
{
return "Hello from implementator class to whoever using it";
}
}
Run Code Online (Sandbox Code Playgroud)
你看 - 'Main'和'Implementator'项目之间没有直接的引用 - 所有'魔术'都发生在MEF/Unity构建/解析过程中.因此,您可以轻松地在Main上运行NUnit测试,而不使用"Implementor"项目和"Implementor"与"Main".还有一个场景,其他项目可以实现和导出'IAmSharedInterface'专门用于测试目的.
所以回到PRISM - 它有所有(!)这个.我知道立即理解这个框架并不容易,它不适合简单的"Hello World"程序,但是一旦你学会了它,就没有办法了.它只是将所有部分粘合在一起,并为您提供了使用任何moq框架的自由度(例如Rhino).
Prism在微软开发,所以(我希望)它不仅可以在Windows 8中支持,还可以在Windows 9和所有未来版本中得到支持.
无论你问什么内部:MVVM,注入,分离/插件,易于阅读和测试
pfe*_*eds 11
为了节省上述详细信息,我将努力为您提供便利.
1)目前,忘记IOC /依赖注入/插件架构.你说你正在创建一个简单的应用程序,所以暂时忘记这个.保持你的代码整洁,你可以在必要时实现它(这是好东西).
2)在你列出的框架中,我建议使用Caliburn.Micro.它相对简单,轻巧.起床和跑步不会花费很长时间.
3)在单独的程序集中创建模型,您可以将其用于Windows应用程序和MVC网站.
保持简单,不要陷入所有技术的困境.
| 归档时间: |
|
| 查看次数: |
24671 次 |
| 最近记录: |