Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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
向.NETC#应用程序添加类似的Web服务_C#_Wcf_Web Services - Fatal编程技术网

向.NETC#应用程序添加类似的Web服务

向.NETC#应用程序添加类似的Web服务,c#,wcf,web-services,C#,Wcf,Web Services,我是web服务新手,我正在开发一个C#WCF服务,该服务调用另一家公司的外部服务来获取一些客户数据(例如:姓名、地址、电话等),到目前为止,这部分工作正常 外部服务基于标准XML模式,其他公司很快就会从相同的XML模式生成相同的服务,使用相同的名称方法并返回相同类型的XML文件 我的第一个问题是,在我完成第一个实现后,是否有任何方法可以“动态”添加其他外部公司的服务,包括其URL/端口/等信息,或者每次需要添加新服务项目时,我是否必须手动在其上插入每个服务作为我的内部服务项目中的服务引用,然后编

我是web服务新手,我正在开发一个C#WCF服务,该服务调用另一家公司的外部服务来获取一些客户数据(例如:姓名、地址、电话等),到目前为止,这部分工作正常

外部服务基于标准XML模式,其他公司很快就会从相同的XML模式生成相同的服务,使用相同的名称方法并返回相同类型的XML文件

我的第一个问题是,在我完成第一个实现后,是否有任何方法可以“动态”添加其他外部公司的服务,包括其URL/端口/等信息,或者每次需要添加新服务项目时,我是否必须手动在其上插入每个服务作为我的内部服务项目中的服务引用,然后编译并重新部署

我的第二个问题与数据契约/成员有关,我的理解是,即使它们返回相同的XML文件,它们的数据契约/成员也会不同,这是真的吗?因此,我必须编写一个特定的代码,从每个新的外部公司的数据合同中读取我需要的信息??如果这是真的,我一直在考虑编写一个通用代码来读取原始xml,这是最佳选择吗?

虽然C是一种编译语言,但它确实通过MEF支持插件体系结构。您可以使用它并为每个源代码添加一个小plugin.dll

也就是说,很可能您只需要一个配置列表,其中包含每个源的连接详细信息,并动态连接到它们。这只有在它们使用完全相同的模式时才有效,这样它们所服务的对象将对所有源进行相同的序列化。当然,您必须使用该配置通过代码动态实例化代理

我应该为你的第二个问题补充一些东西。只要你是定义合同的人,他们的实际对象是否不同并不重要。您所关心的只是它们提供的xml,您可以使用表示进行连接。事实上,您可以将契约生成为.wsdl文档。然后,每个服务实现者都可以从中生成域对象。另一方面,如果你不是“拥有”合同的人,一些消息来源可能会决定做得稍有不同,这会让你头疼。希望这不是你的想法

祝你好运!:)

虽然C#是一种编译语言,但它确实通过MEF支持pluggin体系结构。您可以使用它并为每个源代码添加一个小plugin.dll

也就是说,很可能您只需要一个配置列表,其中包含每个源的连接详细信息,并动态连接到它们。这只有在它们使用完全相同的模式时才有效,这样它们所服务的对象将对所有源进行相同的序列化。当然,您必须使用该配置通过代码动态实例化代理

我应该为你的第二个问题补充一些东西。只要你是定义合同的人,他们的实际对象是否不同并不重要。您所关心的只是它们提供的xml,您可以使用表示进行连接。事实上,您可以将契约生成为.wsdl文档。然后,每个服务实现者都可以从中生成域对象。另一方面,如果你不是“拥有”合同的人,一些消息来源可能会决定做得稍有不同,这会让你头疼。希望这不是你的想法

祝你好运!:)

我的第一个问题是,在我完成第一个实现之后,有没有任何方法可以“动态”添加其他外部公司的服务,包括它们的URL/端口/等信息

不幸的是,您每次都要添加、编译和部署服务

我的第二个问题与数据契约/成员有关,我的理解是,即使它们返回相同的XML文件,它们的数据契约/成员也会不同,这是真的吗

如果您使用自动生成的服务,每个服务将创建不同的合同。我会考虑创建您自己的类,并使用反射和扩展方法转换外部类

我的第一个问题是,在我完成第一个实现之后,有没有任何方法可以“动态”添加其他外部公司的服务,包括它们的URL/端口/等信息

不幸的是,您每次都要添加、编译和部署服务

我的第二个问题与数据契约/成员有关,我的理解是,即使它们返回相同的XML文件,它们的数据契约/成员也会不同,这是真的吗


如果您使用自动生成的服务,每个服务将创建不同的合同。我会考虑创建您自己的类,并使用反射和扩展方法转换外部类

@user1558528非常欢迎您。为您添加了一些奖金信息。:)@不客气。为您添加了一些奖金信息。:)