任何CSLA 4可下载的示例应用程序?

时间:2011-09-15 15:24:02

标签: csla

我正在寻找一个完整的网站(基于CSLA 4.0的MVC或WebForm示例应用程序。任何想法?我认为它的ProjectTracker示例仅仅是WinForm并基于CSLA的旧版本。

3 个答案:

答案 0 :(得分:6)

Mark对CSLA的体验似乎已经过时了。几乎他提出的每一点都是不准确的。 CSLA用于用户的用例场景。特别是与UI的数据绑定。

1)使用文件夹类比是完全不合适的。如果您愿意,可以将单个业务对象同时充当父项和子项,而不是业务对象的同一实例。也完全支持延迟加载儿童。

2)序列化开销不过是RIA服务所做的,因为CSLA使用DataContractSerializer来完全序列化对象。此外,MobileFormatter已更新为允许自定义序列化程序。现在支持二进制文件以及原始xml。最终它仍然通过DataConstractSerializer。

3)您可以创建任何类型的DataPortal替换,包括在您自己的自定义DataPortal中使用JSON。 CSLA命令对象支持托管属性,因此序列化的工作方式与业务对象完全相同。

4)确实没有就地合并,但是,我从来没有发现这是一个问题。

5)订阅者永远不会使用业务对象进行序列化。如果您的DataPortal只是本地的,那么原始对象就会被发送(而非序列化),因此它所拥有的任何订阅者自然会被附加。

在Windows窗体和Silverlight环境中利用CSLA没有问题。对于95%的业务用户用例,CSLA带来了很多好处。

答案 1 :(得分:2)

http://www.lhotka.net/cslacvs/viewvc.cgi/core/trunk/Samples/NET/cs/ProjectTracker/Mvc3UI/是着名的CSLA ProjectTracker示例的MVC3部分。这可能是 一个可以借鉴的。

Rocky本人在2天前检查了一次变化,所以这可能是最前沿的 你可以从作者那里得到一份CSLA样本。

以下是从svn

中提取代码的说明

http://www.lhotka.net/cslanet/Repository.aspx

答案 2 :(得分:0)

我的建议 - 不要使用CSLA。我将引用我对https://stackoverflow.com/questions/1234/have-you-attended-the-csla-master-class的回复:

  

我有两年的CSLA经验。事实上,当我开始我们的时候   项目我真的不想写一个实体框架   划伤,这是我之前所有工作中完成的事情。

     

所以,我选择了CSLA。作为任何实体框架,它有好有坏   点。我会列出一些不好的,因为好的是   在CSLA相关网站上大量描述。所以,nays:

     
      
  • CSLA父子关系不支持文件夹文件模式,其中文件是父文件夹的子文件,但它们是   也是独立的实体。在CSLA,儿童是儿童不可分割的一部分   父,所以你不能,例如,更新/删除/添加一个孩子   没有更新整个对象树。忘记延迟装载   孩子 - 没有这样的事情。简而言之,如果您的数据模型代表了一个   文件夹文件结构 - 不要使用CSLA。我们不得不扭曲CSLA   让它支持这种模式。
  •   
  • 国家方面的巨额开销。使用3个属性定义业务对象。现在使用一些http绑定通过线路发送它。工资   注意传播的内容。我知道XML并不是最好的   序列化车辆,但您的3个属性被翻译为~4KB   XML。它包括什么?业务规则和现场数据管理器状态   等等。非常臃肿。我们采用zip压缩,但仍然   这非常令人不安。
  •   
  • Silverlight没有正常的序列化引擎,所以CSLA附带了一个Mobile序列化,如果什么也没有,这很好   其他。问题是还有其他的东西--JSON和协议   缓冲区,但CSLA与这些技术不兼容。和移动   序列化,虽然它解决了这个问题,但是真的很痛苦   它涉及命令,因为你必须手动实现它   (与业务对象不同,它为每个对象自动支持它   管理财产)。还记得10年前MFC的CArchive吗?这是   它。
  •   
  • 保存对象不会就地合并新状态,而是返回一个新对象。我们在Silverlight中遇到了很多问题   事实上,每个保存都会替换对象树。所以,我们不得不重写   CSLA默认行为并实现就地保存所有   将新状态与旧状态合并的相关复杂性。
  •   
  • 您很快就无法控制电线上实际传输的内容。例如,这是我在检查时发现的东西   CSLA源代码。序列化业务对象也是序列化的   PropertyChanged和的所有可序列化订阅者   PropertyChanging事件。所以,当这样的对象被发送到   服务器,它携带所有可序列化的订阅者   这些事件。从移动对象的理念来看,这很好 - 移动   对象只是在整个应用程序中保留其生存环境   层。从实际的角度来看,我发现这是一场灾难等待   即将发生。不用说我已经禁用了此功能   当场。
  •   
  • 回顾在与CSLA合作2年后,我得出结论,许多其他人已经来过 - 你的服务器端   对象与客户端不一样。试图假装他们   在开发后期会产生很多悲伤。这是   可能是CSLA最重要的事情。移动对象的概念   一开始似乎是正确的,但随着项目的发展和服务器的增长   客户端开发在服务器上具有相同的对象类型   客户变得更多的是负债而不是优势 -   互联网上充满了关于此事的讨论。
  •   
     

底线 - 如果我有相同的话,我就不会使用CSLA   当我开始这个项目时,就像我现在所做的那样理解。   CSLA为您提供了很多东西,我喜欢DataPortal概念   非常,但我发现如果没有他们,我本可以做得很好   现在在一个更好的地方。

     

这是我的2美分。