2010-05-18 80 views
2

我必須在我們的WPF應用程序中使用Sync Framework 2.0,該應用程序將包含SQL Compact 3.5並與SQL Server 2008同步。WCF 4.0&Sync Framework 2.0&Entity Framework 4.0&ASP.NET MVC 2.0&自動生成的代碼

我跟着這個視頻:http://download.microsoft.com/download/6/7/3/6730f0e7-a649-4656-96ab-150c7501a583/IntroToSyncServicesADODetNet_HighQuality.wmv

但是改爲DataSet我已經使用了EntityFramework 4.0和C#。

我非常感興趣的代碼自動生成通過添加本地數據庫緩存文件與擴展同步。這很好,我可以修改我的部分類中的代碼來改變基本功能。

當我在WPF應用程序中有客戶端和服務器的代碼時,一切正常。

當我使用包含服務器同步邏輯的WCF類庫時,一切正常。

但是...在以下示例中,它們向我們展示瞭如何在本地「WCF主機」中僅在我的計算機上運行解決方案和託管WCF。

的第一個問題是:

「如何創建WCF類庫類的實例,其中包含所有服務器同步邏輯,然後託管並在ASP.NET MVC 2.0應用程序公開」

最重要的是保留此* .sync文件並且不要手動編寫所有代碼,它使我可以在數據庫架構發生更改時自動更新此代碼。

第二個問題是:

「我如何配置端點和行爲WCF類庫的這種情況在我的web.config時,它有它在類庫的app.config ... 「

不幸的是嚮導* .SYNC文件只看到本地的WPF應用程序,或WCF類庫,我不能直接選擇ASP.NET MVC 2.0(這將是巨大的),生成類在web應用程序同步。

我會很高興看到工作示例。

問候, 丹尼爾Skowroński

回答

1

解決與ASP.NET MVC 2.0託管同步邏輯創建WCF類庫實例:

在這裏你會看到類似這樣的:

<%@ ServiceHost Language="C#" Debug="true" Service="namespace-assembly.class" CodeBehind="filename.svc.cs" %> 

其中服務是工廠方法,將創建「namespace-assembly.class」的實例,所以,您必須將其更改爲「wcf_librrary_namespace-assembly。**** DataCacheSyncService」和CodeBehind以「wcf_librrary_namespace-assembly.filename.cs」

  • 下一個修改WCF類庫WCF的實例,使具有相同的憑據asp.net應用收留了它,只需添加:[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]屬性

  • 下一個配置Web。配置:

    <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 = new ** DataCacheSyncAgent(new ** DataCacheSyncCont ractClient());

Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();

您可能會得到異常:「無法將類型**轉換爲Microsoft.Synchronization.Data.SyncGroupMetadata,現在我發現解決此問題的一種解決方案是擴展您的服務參考並將b CTR + H重命名所有的「ASP-網具組件SyncGroupMetadata」等類似文件「Microsoft.Synchronization.Data.SyncGroupMetadata」等

  • 現在應該同步啓動

HTH

Regards,

DanielSkowroński