簡體   English   中英

WCF 4.0和Sync Framework 2.0和Entity Framework 4.0和ASP.NET MVC 2.0和自動生成的代碼

[英]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類庫實例的解決方案:

在這里,您將看到類似以下內容:

 <%@ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM