繁体   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