Rya*_*yan 6 c# wcf web-services
我注意到我无法将WCF数据服务(.svc文件)添加到Visual Studio 2010中的WCF服务库项目.我对WCF有点陌生,并想知道我应该如何/为什么要将我的WCF数据服务放入其中自己组装.
是的,您可以在自己的程序集中托管 WCF 数据服务 - 使用一些小技巧。这样做可以使您的解决方案更清晰 - 它将各个部分分成更易于管理的部分,所以我绝对建议这样做。
就是这样:
将您的数据模型(EF 数据模型)放入其自己的程序集中,我们称其为DataModel
创建一个新的类库项目(命名为MyDataServiceHost)
添加一些参考:
DataModel与数据层的组合System.ServiceModelSystem.ServiceModel.WebSystem.Data.Services.ClientSystem.Data.Services- 您无法从 .NET 类别下的常用Add Reference对话框中选择它 - 您需要浏览程序集文件。找到该目录C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0(或C:\Program Files (x86)\...在 64 位机器上)并选择System.Data.Services.dll其中的内容添加一个新类到该类库并调用它,例如YourDataService.cs- 它将看起来像这样:
using System.Data.Services;
using System.Data.Services.Common;
using DataModel;
namespace MyDataServiceHost
{
public class YourDataService : DataService<YourModelEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以为该类命名任何您喜欢的名称,并且它必须源自DataService<T>数据T模型的名称;如果您使用实体框架,它是您的对象上下文类的名称 - 通常类似于(database)Entities或您在创建 EDM 时选择的任何名称
将另一个类添加到您的新项目中,调用它MyDataServiceHost.cs,它将如下所示:
using System;
using System.Data.Services;
using DataModel;
namespace MyDataServiceHost
{
public class MyDataServiceHost
{
public static void LaunchDataService(string baseAddress)
{
Uri[] baseAddresses = new Uri[1];
baseAddresses[0] = new Uri(baseAddress);
using(DataServiceHost host = new DataServiceHost(typeof(YourDataService), baseAddresses))
{
host.Open();
Console.WriteLine("DataService up and running.....");
Console.ReadLine();
host.Close();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它实例化一个 DataServiceHost,该 DataServiceHost 派生自 WebServiceHost(WebServiceHost 又派生自 ServiceHost),并且它将为您启动 WCF 数据服务运行时。
现在您可以使用以下命令从任何应用程序启动 WCF 数据服务:
MyDataServiceHost.LaunchDataService("http://localhost:4444/YourService");
Run Code Online (Sandbox Code Playgroud)最后要记住的是:用于启动 WCF 数据服务的应用程序必须app.config在其(或) 中具有连接字符串(EDM 连接字符串,如果您使用实体框架)web.config才能正常工作!
| 归档时间: |
|
| 查看次数: |
4361 次 |
| 最近记录: |