我们知道Csla.net框架的网络通信是基于WCF技术的,所以我们可以在示例中的项目WCFAppServer中找到二个服务发布svc文件:
WcfPortal.svc和SlPortal.svc查看WcfPortal.svc中内容为:
<% @ServiceHost Service="Csla.Server.Hosts.WcfPortal" %>
只这一行,当然,我们通过WCF的知识知道这是一个服务,但这个服务在哪里定义的呢?如果没看过《C#企业应用开发艺术-
CSLA.NET框架实战》这本书或没看过这个框架的开源代码,一般是不好找的,当然经验丰富的开发者可能先在本项目中查找,当然
是没有这样的定义了,再会到引用的程序集中查找,当然,这样你就会发现他定义在CSLA程序集中的Csla.Server.Host命令空间下
,定义如下:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WcfPortal : IWcfPortal
{
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
public WcfResponse Create(CreateRequest request)
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
public WcfResponse Fetch(FetchRequest request)
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
public WcfResponse Update(UpdateRequest request)
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
}
public WcfResponse Delete(DeleteRequest request)该服务类有四个成员方法:Create,Delete,Fetch,Update分别实现业务对象的创建,删除,读取,更新功能。
当然我们也知道实现的接口IWcfPortal应该是契约定义,进一步转到源码后发现就是协约定义。
另一个SVC文件中的内容为:
<% @ServiceHost Service="Csla.Server.Hosts.Silverlight.WcfPortal" %>
我们也进一步可以知道这个是Csla.net框架专门为Silverlight实现的服务定义,也定义在Csla.Server.Silverlight命名空间下。
注:
1,Csla.net的统一服务契约在文件Source\Csla\Server\Hosts\IWcfPortal.cs文件中定义。命名空间为Csla.Server.Hosts
在契约中定义了四个方法:Create,Delete,Fetch,Update,分别实现业务对象的创建,删除,读取,更新功能。
2,Csla.net的统一服务实现在文件Source\Csla\Server\Hosts\WcfPortal.cs文件中定义。命名空间为Csla.Server.Hosts