Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WCF时,创建工厂方法的最佳方法是什么?_C#_.net_Wcf_Web Services - Fatal编程技术网

C# 使用WCF时,创建工厂方法的最佳方法是什么?

C# 使用WCF时,创建工厂方法的最佳方法是什么?,c#,.net,wcf,web-services,C#,.net,Wcf,Web Services,我已经构建了一个复杂的查询机制,我想为它提供一个工厂,以帮助人们使用常见的查询模式。我的方法都是通过WCF作为SOAP web服务公开的。确保我的工厂易于在所有希望使用我的服务的客户中使用的最佳方法是什么(因为我不希望我的所有客户都使用.net) 更新:我想编写一些工厂方法,以帮助针对我编写的“查询系统”使用常见模式。我目前从我的服务中公开了多个OperationContracts,同时也公开了多个DataContracts。我有一个思想障碍,那就是如何最好地构建一个工厂来返回我的自定义查询对象

我已经构建了一个复杂的查询机制,我想为它提供一个工厂,以帮助人们使用常见的查询模式。我的方法都是通过WCF作为SOAP web服务公开的。确保我的工厂易于在所有希望使用我的服务的客户中使用的最佳方法是什么(因为我不希望我的所有客户都使用.net)

更新:我想编写一些工厂方法,以帮助针对我编写的“查询系统”使用常见模式。我目前从我的服务中公开了多个OperationContracts,同时也公开了多个DataContracts。我有一个思想障碍,那就是如何最好地构建一个工厂来返回我的自定义查询对象,以支持我认为它们所需要的公共模式


一个具体的例子是,一个方法基于一个搜索请求对象返回对我的数据库的点击,该对象有多组多个匹配概念,我的代码将所有这些转换为LINQ表达式树,这个搜索请求对象中的一个常见组是将结果限制为仅来自美国的源,这实际上是一个大约有20个匹配项的组,可以移动,所以我不想显示硬编码的代码示例,我更喜欢根据项目来源的数据返回group对象,然后他们可以在搜索请求对象中使用这些数据。这听起来非常适合“GroupFactory.CreateGroupOfSomethingOrOther”这样的工厂方法,但对我来说,什么地方最适合这样做呢?或者我只是让这在我的脑海中变得比它应该的复杂得多吗?

除非你用自己的母语为每个消费者提供库,否则你不可能真正提供工厂。 而不是返回分组对象的工厂,考虑过滤器添加一些需要较少粒度配置的过滤器对象。 例如,而不是:

GetMatches(new GetMatchRequest() { 
        Filter = new FilterByState() { 
            "AZ", "CA", "OH", ... }});
考虑:

GetMatches(new GetMatchRequest() { Filter = new FilterByCountry("USA") });
其中,所有通用筛选器都源自类似于
FilterBase
或实现
IFilter
。在服务器端,调用类似于
FilterBase.ConstructQueryObject()
的函数来返回更细粒度的对象