[英]WCF 4.0 & Sync Framework 2.0 & Entity Framework 4.0 & ASP.NET MVC 2.0 & auto generated code
我必須在WPF應用程序中使用Sync Framework 2.0,該應用程序將包含SQL Compact 3.5,並將與SQL Server 2008同步。
我觀看了此視頻: http : //download.microsoft.com/download/6/7/3/6730f0e7-a649-4656-96ab-150c7501a583/IntroToSyncServicesADODetNet_HighQuality.wmv 。
但是我使用EntityFramework 4.0和C#代替了DataSet。
通過添加具有擴展名同步的本地數據庫緩存文件,我對代碼自動生成非常感興趣。 太好了,我可以在局部類中修改代碼以更改基本功能。
當我在WPF應用程序中擁有用於客戶端和服務器的代碼時,一切正常。
當我使用包含服務器同步邏輯的WCF類庫時,一切正常。
但是...在下面的示例中,他們向我們展示了如何僅在我的計算機上運行解決方案並在本地“ WCF主機”中托管WCF。
第一個問題是:
“如何從包含所有服務器同步邏輯的WCF類庫中創建類的實例,然后承載它並在ASP.NET MVC 2.0應用程序中公開。”
最重要的是保留此* .sync文件,而不是手動編寫所有代碼,這使我可以選擇在數據庫架構更改時自動更新此代碼。
第二個問題是:
“當在類庫中的WCF類庫實例位於app.config中時,如何在我的web.config中為該WCF類庫實例配置端點和行為?...”
不幸的是,*。sync文件的向導只能看到本地WPF應用程序或WCF類庫,我無法直接選擇ASP.NET MVC 2.0(這很好)來生成用於在Web應用程序中進行同步的類。
我很高興看到工作示例。
此致DanielSkowroński
使用ASP.NET MVC 2.0中托管的同步邏輯創建WCF類庫實例的解決方案:
創建ASP.NET MVC 2.0應用並添加WCF服務
刪除* .svc后面的C#文件* .cs
將來自ASP.NET projet的Project Referece添加到WCF類庫
在ASP.NET中編輯* .svc文件
在這里,您將看到類似以下內容:
<%@ ServiceHost Language="C#" Debug="true" Service="namespace-assembly.class" CodeBehind="filename.svc.cs" %>
其中Service是Factory方法,它將創建“ namespace-assembly.class”的實例,因此,您必須將其更改為“ wcf_librrary_namespace-assembly。**** DataCacheSyncService”,並將CodeBehind更改為“ wcf_librrary_namespace-assembly.filename.cs”
接下來,在WCF類庫中修改wcf實例,使其能夠使用與asp.net應用程序相同的憑據托管它,只需添加:[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]屬性
接下來配置web.config:
<service name="asp.net-namespace.wcf_service_name" behaviorConfiguration="service_nameBehavior"> <host> <baseAddresses> <add baseAddress="http://ipaddres/asp.net-app-name/service-name.svc" /> </baseAddresses> </host> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <endpoint address="" binding="basicHttpBinding" contract="wcf_librrary_namespace assembly.I****DataCacheSyncContract" /> </service> <behavior name="service_nameBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior>
還添加
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
下面
<system.serviceModel>
現在只需將其發布到您的服務器並創建ASP.NET應用
現在將服務參考添加到您的客戶端應用程序
在這里,我們有一個問題,當您執行時:
** DataCacheSyncAgent syncAgent =新** DataCacheSyncAgent(新** DataCacheSyncContractClient());
Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();
您可能會得到異常:“無法將類型**轉換為Microsoft.Synchronization.Data.SyncGroupMetadata,目前為止我發現的解決此問題的一種方法是擴展服務引用,然后b CTR + H重命名所有“ asp- net-assembly-SyncGroupMetadata”和“ Microsoft.Synchronization.Data.SyncGroupMetadata”等其他文件。
HTH
問候,
丹尼爾·斯科文斯基
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.