簡體   English   中英

WCF數據服務與WCF服務庫

[英]WCF Data Service vs. WCF Service Library

我注意到我無法將WCF數據服務(.svc文件)添加到Visual Studio 2010中的WCF服務庫項目。我對WCF有點陌生,並想知道我應該如何/為什么要將我的WCF數據服務放入其中自己組裝。

是的,您可以在自己的程序集中托管WCF數據服務 - 只需一些小技巧。 這樣做可以使您的解決方案更清潔 - 它將各個部分分成更易於管理的部分,因此我絕對建議您這樣做。

這是如何做:

  • 將您的數據模型(EF Data Model)放入自己的程序集中,我們將其稱為DataModel

  • 創建一個新的類庫項目(稱之為MyDataServiceHost

  • 添加一些參考:

    • 您的DataModel程序集與數據層
    • System.ServiceModel
    • System.ServiceModel.Web
    • System.Data.Services.Client
    • System.Data.Services - 您無法從.NET類別下的常用“ Add Reference對話框中選擇此項 - 您需要瀏覽匯編文件。 在64位計算機上找到目錄C:\\Program Files\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.0 (或C:\\Program Files (x86)\\... )並選擇System.Data.Services.dll里面的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; } } } 

    您可以將類命名為任何名稱,並且必須從DataService<T>派生,其中T是數據模型的名稱; 如果您正在使用Entity Framework,那么它就是您的對象上下文類的名稱 - 通常類似於(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(); } } } } 

    它實例化一個DataServiceHost,它派生自WebServiceHost(后者又派生自ServiceHost),它將為您啟動WCF數據服務運行時。

  • 現在,您可以使用以下命令從任何應用啟動WCF數據服務:

     MyDataServiceHost.LaunchDataService("http://localhost:4444/YourService"); 
  • 最后要記住的事情:用於啟動WCF數據服務的應用程序必須在其app.config (或web.config )中具有連接字符串(EDM連接字符串,如果您使用的是Entity Framework)上班!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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