我們知道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