2015-05-07 66 views
1

我有WCF服務方法,它接受一個int參數並返回基於該參數的結果集。我正在使用linq和實體框架來檢索記錄。有一個新的要求,用另一個字段查詢同一個表。這個字段是一個varchar字段,它將字符串參數作爲輸入。那麼實現這個最好的方法是什麼?擴展相同的服務方法以合併新參數還是我製作單獨的服務方法會更好嗎?另一點需要注意的是,我不知道客戶在任何時間點會傳遞哪個參數。以下是現有的服務方法邏輯WCF - 傳遞參數

public IEnumerable<TBI.JV.Business.Objects.Asset> GetAssetsBasicBySedols(int[] sedols) 
     { 
      var priceDate = DateTime.UtcNow.Date.AddMonths(-8); 
      var typeList = new string[] 
       { 
        "UNIT TRUST", 
        "OEIC", 
        "INVESTMENT TRUST", 
        "INVESTMENT COMPANY", 
        "PENSION FUND", 
        "INSURANCE BOND", 
        "LISTED EQUITY", 
        "PREFERENCE SHARE", 
        "ZERO DIVIDEND PREF", 
        "GILT (CONVENTIONAL)", 
        "GILT (INDEX LINKED)", 
        "AIM", 
        "VCT", 
        "OFFSHORE FUND", 
        "ETP" 
       }; 
      using (var dealingContext = new dbDealingContainer()) 
      { 
       return (from fundprice in dealingContext.FundPrices 
         where (fundprice.FUND_STATUS == "ACTIVE" || fundprice.FUND_STATUS == "SUSPENDED") && 
           (fundprice.INVNAME != null || fundprice.INVNAME != "") && 
           !fundprice.INVNAME.StartsWith("IFSL Bestinvest") && 
           fundprice.WaterlooTradable == true && 
          //fundprice.PRICE_DATE > priceDate && 
           fundprice.BID_MID_PRICE > 0 && typeList.Contains(fundprice.FUND_TYPE) 
           && ((sedols.Count() > 0 && sedols.Contains(fundprice.Id)) || sedols.Count() == 0) 
         select new TBI.JV.Business.Objects.Asset 
         { 
          AssetName = fundprice.INVNAME, 
          AssetId = fundprice.Id, 
          AssetType = fundprice.FUND_TYPE, 
          Epic = fundprice.INVESTMENT_CODENAME, 
          StarRating = fundprice.STARLEN, 
          Sedol = fundprice.SEDOL_NUMBER 
         }).ToList(); 
      } 
     } 
+0

是否需要查詢與另一個字段** _(通過整數和字符串查詢)相同的表,或只是字符串參數? – Herdo

回答

3

總之,您需要添加一個服務方法與這個新的參數。

小號 ervice ö riented 體系結構的設計,修改(並因此刪除)被認爲是同時加入的斷裂變化是透明的客戶端。

當您更改服務端時,您必須問自己使用您的應用程序的實際客戶端會發生什麼情況。如果答案是「他們將不得不更新他們的客戶」,這通常不是一件好事。

另一種觀點認爲,新功能意味着新概念,不應改變現有概念。

此外,即使您打算更換現有功能,也不應該一步完成。您應該考慮升級兼容性:使用新的修改功能發運服務,將舊服務標記爲過時,通知客戶並稍後以最終版本發送服務。

背後的整個概念被稱爲SOA Governance