WCF - 传递参数

WCF - passing parameters

我有 WCF 服务方法,它接受一个 int 参数和 returns 基于该参数的结果集。我正在使用 linq 和 entity framework 来检索记录。查询相同 table 与另一个 field.This 字段的新要求是一个 varchar 字段,并将字符串参数作为输入。那么实现这个的最佳方法是什么。是扩展相同的服务方法以合并新参数更好,还是我制作一个单独的服务方法更好。另一点需要注意的是,我不知道客户端在任何给定时间点会传递哪个参数。以下为现有服务方式逻辑

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();
            }
        }

简而言之,您需要使用这个新参数添加一个服务方法。

S服务O面向A的架构中,修改(并因此删除)是添加对客户透明时被视为重大更改。

当您更改服务端时,您必须问问自己,使用您的应用程序的实际客户会发生什么情况。如果答案是"they will have to update their clients",这通常不是一件好事。

从另一个角度来看,新功能意味着新概念,不应改变现有概念。

此外,即使您打算替换现有功能,也不应一步完成。您应该考虑优势兼容性:发布具有新修改功能的服务,将旧功能标记为过时,通知您的客户并稍后发布最终版本的服务。

这背后的整个概念称为SOA Governance