WCF 4.0&Sync Framework 2.0&Entity Framework 4.0&ASP.NET MVC 2.0&自动生成的代码

问题描述:

我必须在我们的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

解决与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