分类目录归档:CSLA.Net
CSLA.NET 范例项目-Petshop Sample Applications
关于 CSLA.NET 框架,可以参考链接。 下面是Petshop 范例程序,基于CSLA.NET 框架重新改写。 范例程序下载地址: http://code.google.com/p/codesmith/downloads/list
Benefits of CSLA.Net Framework
Consolidation of logic Validation and authorization centralized in business objects Mobile objects Ability of business objects to move between tiers Scalability Ability to easily scale applications Base Business Object Functionality UI Binding
未解析成员Csla.Security.UnauthenticatedPrincipal,Csla, Version=3.8.2.0异常
在调试 CSLA.Net 开源框架提供的 Project Tracker 项目 — 其中的 Web 项目 PTWebForms时,出现如下异常信息: [SerializationException: 未解析成员“Csla.Security.UnauthenticatedPrincipal,Csla, Version=3.8.2.0, Culture=neutral, PublicKeyToken=93be5fdc093e4c30”的类型。] 原因是:PTWebForms 项目运行在 development web server(Cassini)环境中,而不是IIS 环境中。由于ASP.NET Development Web Server的限制,不支持解析引用的程序集。 在使用定制的principal 对象时,必须运行Web Application在 IIS 环境下,这是ASP.NET Development Web Server 的限制,影响到所有的定制 principal 项目。 原文帖子:http://forums.lhotka.net/forums/t/157.aspx 解决这一问题的步骤: 1. 设置 … 继续阅读
分析CSLA.Net 4.* 开源框架的源码,深入理解框架内部运行机制(4)
本文分析DataPortal_Insert(),DataPortal_Update(),DataPortal_DeleteSelf() 方法的调用过程。下面具体示例代码来自ProjectTracker 应用程序和 CSLA.Net 框架。 在业务对象的工厂方法区域,可发现有如下工厂方法。 public static Project NewProject() { return DataPortal.Create(); } public static Project GetProject(Guid id) { return DataPortal.Fetch(id); } public static void DeleteProject(Guid id) { DataPortal.Delete(new SingleCriteria(id)); } 没有发现 InsertProject() / UpdateProject() 方法,但是在数据访问方法区域,却可以看到 – DataPortal_Create(),DataPortal_Fetch(),DataPortal_Insert(),DataPortal_Update(), DataPortal_DeleteSelf(),DataPortal_Delete() … 继续阅读
分析CSLA.Net 4.* 开源框架的源码,深入理解框架内部运行机制(3)
在《分析CSLA.Net 4.* 开源框架的源码,深入理解框架内部运行机制(1)》文章中,分析了CSLA.NET 4.* 客户端的调用细节。 在《分析CSLA.Net 4.* 开源框架的源码,深入理解框架内部运行机制(2)》文章中,分析了CSLA.NET 4.* 服务端的调用细节。 本文主要分析业务对象中工厂方法和数据访问方法返回值的疑问。业务对象有返回值,类型多数为业务对象本身,而数据访问方法 DataPortal_XYZ 的返回值多数为 void 类型。 以Project业务对象 – 工厂方法GetProject() 方法为例: public static Project NewProject() { return DataPortal.Create(); } public static Project GetProject(Guid id) { return DataPortal.Fetch(new SingleCriteria(id)); } public static void … 继续阅读
分析CSLA.Net 4.* 开源框架的源码,深入理解框架内部运行机制(2)
在《分析CSLA.Net 4.* 开源框架的源码,深入理解框架内部运行机制(1)》文章中,分析了CSLA.NET 4.* 客户端的调用细节。 下面是Server端的调用过程。具体的调用细节,如下图所示。 1. Server端的Csla.Server.Hosts.WcfProxy 对象接收到Client的调用之后,这里是调用Fetch() 方法。Csla.Server.Hosts.WcfProxy 通过WCF提供Server端的DataPortal功能。 result = portal.Fetch(request.ObjectType, request.Criteria, request.Context); 2. 调用Csla.Server.DataPortal,Server端的DataPortal单一入口点,将所有Client端调用转发给Server端业务对象方法。 Csla.Server.DataPortal portal = new Csla.Server.DataPortal(); object result; try { result = portal.Fetch(request.ObjectType, request.Criteria, request.Context); } 3. 根据业务方法的TransactionalType 选择不同的DataPortal 类。 下图和代码具体描述了这个过程。 对应的CSLA 4.* …继续阅读
CSLA.Net MobileList类型及其定义
CSLA.Net 框架中的 MobileList <T>类型支持使用MobileFormatter 序列化对象,该类型是CSLA.NET for Silverlight 的一部分,MobileList 对CSLA.NET框架 在.NET 运行环境下没有任何影响。 如下是 MoibleList<T>和 IMobileObject 类型在CSLA.NET 框架中的定义。 [Serializable] public class MobileList<T> : List<T>, IMobileObject /// <summary> /// Interface to be implemented by any object /// that supports serialization by the /// … 继续阅读
分析CSLA.Net 4.* 开源框架的源码,深入理解框架内部运行机制(1)
分析CSLA.Net 4.* 开源框架的源码,以ProjectTracker 范例应用程序为例,详细了解其相关代码和调用过程。 下面是 ProejctTracker 应用程序中,获取项目列表(ProjectList.GetProjectList() 方法)的调用过程。 1. 首先,是用户界面ProjectSelect.cs 窗口调用 — ProjectList.GetProjectList() 方法。 private void ProjectSelect_Load(object sender, EventArgs e) { DisplayList(ProjectList.GetProjectList()); } 完整Client端的调用过程,如下图所示。 2. ProjectList 业务对象调用Client端DataPortal 架构的入口点,这里调用Csla.DataPortal.Fetch() 方法。 3. 在Fetch()方法中,先需要构建DataPortalClient.IDataPortalProxy 对象实例,才可以执行对Server 端WCF 服务方法的调用。 DataPortalClient.IDataPortalProxy proxy; proxy = GetDataPortalProxy(objectType, method.RunLocal); … 继续阅读
CSLA.Net – WCF 服务的Server端配置
CSLA.Net – WCF 服务的Client端配置 — Client端的配置,可参考此链接。 CSLA.Net – WCF 服务的Server端配置 WCF Service 服务端的配置和普通的WCF Sevice 服务端的配置完全一样,没有特殊的地方。 如下是ProjectTracker 项目 – WCF服务端的配置。其中service name 为 Csla.Server.Hosts.WcfPortal,对应Csla.Server.Hosts.WcfPortal.cs 文件,实现了public class WcfPortal : IWcfPortal 接口。 <system.serviceModel> <services> <service name=”Csla.Server.Hosts.WcfPortal” behaviorConfiguration=”returnFaults”> <endpoint contract=”Csla.Server.Hosts.IWcfPortal” binding=”wsHttpBinding”/> </service> </services> <behaviors> <serviceBehaviors> … 继续阅读
CSLA.Net – WCF 服务的Client端配置
WCF Service – Client 端配置 首先,因为public class WcfProxy : Csla.DataPortalClient.IDataPortalProxy 代码中,设置了 private string _endPoint = “WcfDataPortal”; 因此,在Client端,必须设置endpint 名称为WcfDataPortal。具体设置如下所示: <system.serviceModel> <client> <endpoint name=”WcfDataPortal” address=http://localhost:4147/WcfHost/WcfPortal.svc binding=”wsHttpBinding” contract=”Csla.Server.Hosts.IWcfPortal”/> </client> </system.serviceModel> 在CSLA.Net 4.* 版本之后,在WcfProxy.cs 代码中,添加了如下一段代码。其中有检查 !string.IsNullOrEmpty(ApplicationContext.DataPortalUrlString) — 配置文件中 ConfigurationManager.AppSettings["CslaDataPortalUrl"] 是否为空。 如配置文件中 – CslaDataPortalUrl 不为空,则按照该配置 … 继续阅读