Tag: soa

在面向服务的体系结构中为服务调用定义方法签名的最佳实践是什么?

在面向服务的体系结构中开发应用程序时,定义服务调用原型/签名的最佳实践是什么。 例如,我想创建服务调用以发送电子邮件。 假设我的域层中有以下对象 [datacontract] public class Email { public string To { get; set; } public string From { get; set; } public string Message { get; set; } public string Subject { get; set; } //I am not going to use this properties in send email method public string OtherProp1 {get; set;} public string […]

从PHP发送字节数组到WCF

我必须从我的PHP客户端向WCF主机发送一个字节数组(编码的照片)。 当我在PHP中对我的数组执行var_dump()时,我得到一个数组[2839],这是正常的,但在服务器端调试时我看到接收到的数组只是字节[5] …我知道如何修复它? 我用这样的代码 $file = file_get_contents($_FILES[‘Filedata’][‘tmp_name’]); $byteArr = str_split($file); foreach ($byteArr as $key=>$val) { $byteArr[$key] = ord($val); } $client = new SoapClient(‘http://localhost:8000/MgrService?wsdl’, array( ‘location’ => ‘http://localhost:8000/MgrService/SOAP11’, ‘trace’ => true, ‘soap_version’ => SOAP_1_1 )); $par1->profileId = 13; $par1->photo = $byteArr; $client->TestByte($par1); 正如我之前在wcf主机上写的那样,我只获得了字节[5]:/也许它需要一些解码来对肥皂序列化? 我应该使用Base64解码吗? 一般我只想将发布的文件上传到c#函数,其中byte []作为参数:/ Help 哦,这个函数的wsdl部分看起来像这样

初学者WCF问题 – 消耗性异步服务

这是一个“可以做到的”,而不是“怎么做”的问题。 我正在寻找构建一个服务(中间层,.net,提供数据抽象和一些业务逻辑),将由不同平台上的多个内部客户端系统使用。 例如,一个客户端可能是一个网站,另一个客户端可能是一些Java代码,另一个客户端可能是C# 我想在我的服务中提供同步和异步API,例如GetData,BeginGetData,EndGetData方法。 我还希望客户能够注册添加到系统中的新“数据”的通知。 在过去,我使用带有Tibco EMS通道的Web服务来实现此通知。 我的问题是:我可以通过公开WCF服务来实现三个要求(synch,asynch和pub / sub)吗? 非WCF客户端可以使用此服务吗? 请原谅这个问题的模糊性 – 我可以根据需要详细说明。 提前致谢。

如何使用SOA体系结构实现松散耦合

我最近一直在做关于SOA和ESB等的大量研究。 我现在正在努力重新设计一些遗留系统,并且希望使用比现有更多的SOA架构来构建它。 我们在大约5个网站中使用这些服务,而我们现在使用我们的遗留系统遇到的最大问题之一就是我们几乎所有的时间都在进行错误修复或更新时需要重新部署我们的5个网站,这些网站可能是非常耗时的过程。 我的目标是使服务之间的接口松散耦合,以便可以在不必重新部署所有相关服务和网站的情况下进行更改。 我需要能够扩展现有的服务接口,而不会破坏或更新任何依赖项。 你们有没有遇到过这个问题? 你是怎么解决的?

WCF中的信息重用

在阅读SOA文章时,我在http://www.ibm.com/developerworks/websphere/library/techarticles/0806_boughannam/0806_boughannam.html上看到了一篇文章。 这解释了语义/逻辑服务。 有一个“来自销售部门的组织数据请求”的示例。 这种方法有助于克服孤岛概念。 我想知道是否有任何类似于本文中提到的体系结构的WCF实现。 虽然我做了一些搜索,但我找不到一个。 您能否提供此类实施的详细信息或提供WCF中类似实施的参考? 读: 使用SOA实现业务functionhttp://msdn.microsoft.com/en-us/architecture/aa699435 托管服务引擎的服务虚拟化http://msdn.microsoft.com/en-us/magazine/dd727511.aspx 托管服务引擎(MSE)路线图

快速并发检查.co.za域的SOA DNS记录

我想通过使用C#ASP.NET检查SOA或MX记录是否存在,尽可能准确地实现.co.za域名的批量可用性检查 。 我正在寻找一种解决方案,可以检查相关的DNS记录,以便正确利用线程一次检查至少10个域。 “你为什么不使用API​​?” 检查.co.za域的可用性的唯一真正准确的方法是使用http://co.za/whois.shtml ,但是古老的WHOIS服务不允许批量检查并限制对给定IP的连续检查。 之前的工作 到目前为止,我使用古老的经典ASP脚本,利用Emmanuel Kartmann编写的名为“Simple DNS Resolver”的旧DNS库,得到了相当准确的结果。 但是,这种方法不能很好地扩展 ,我需要能够使用正确的线程ASP.NET实现来处理更多用户。 我现在使用的顽皮代码看起来像这样: Dim oDNS, pDomain, found_names Set oDNS = CreateObject(“Emmanuel.SimpleDNSClient.1”) oDNS.ServerAddresses = “127.0.0.1” // Set DNS server to use oDNS.Separator = “,” // Set separator for found_names multiple outputs 对每个域执行以下操作: Err.Clear // Reset error flag. I know, I hate it too. oDNS.Resolve pDomain, […]

SOA中补偿缺乏inheritance的模式

我发现基类的inheritance和概念是OOP的最强点。 但是在SOA中并不鼓励这样做。 那么,在SOA中克服这种限制的流行模式是什么? 能否请您提供解释这些模式的教程(在WCF中使用代码演示)? 注意:这不是关于SOA中可用模式的一般问题。 但它更具体到上述问题。 注意:我正在使用WCF进行SOA。 读: “不要在Design中使用Abstract Base类; 但在建模/分析中“ 如何真正实现SOA架构? 如何在面向服务的体系结构中处理Java多态性 如何加快SOA的速度? 什么是面向服务的架构? DDD和SOA真的能很好地协同工作吗? SOA和WCF设计问题:这是一个不寻常的系统设计吗? 设计WCF数据合同和操作 C#4.0中的Expando对象

WCF – 设计参数决策

我正在为FundManagement设计服务。 FundManagement Service有一个名为“UpdateFundApprovalDate(FundDTO fund)”的操作。 此操作将使用fundingID的批准日期更新资金表记录。 该服务将由“FundManagementUI”客户端使用。 如果合同续订正在进行,则有一项业务规则,即不应更新批准日期。 有一个单独的续订服务。 续订服务使用续订表中的数据(其中包含资金ID)。 更新表的结构是(RenewalID,FundingID,RenewalStartDate,Renewal CompletionDate,RenewalStatus)。 有一个名为“public List GetInProgressRenewal(FundDTO fund)”的服务操作。 一点很重要。 虽然两个服务都使用相同的数据库,但“续进”续订应由续订服务决定。 它可以基于续订记录的状态或完成日期。 续订服务决定“进行中”续订的业务逻辑。 FundManagement Service声称没有对该逻辑的所有权。 什么是解释上述行为的SOA原则/模式? (使用续订服务确定“进行中”续订,但续订服务可能会根据自身利益更改逻辑。)。 有关此类情景的指导原则是什么? 对于任何涉及此类设计决定的文章,您有什么建议吗? 在FundManagement Service内部,谁应该负责validation返回的续订列表是否为NULL? 这种validation应该在服务操作方法代码内部还是在FundBusinessLayer内部(服务人员调用)中进行? 注意:这里的SOA将使用WCF实现,业务classess将是使用C#开发的dll。 读: SOA / WCF剖析系统和服务边界

SOA问题:公开实体

我想在我的3层结构中加入SOA模式。 我在BLL和UI之间创建了一个服务层(WCF主机)。 我的结构设置现在看起来像这样 UI WCF BLL DAL 问题是,我将我的实体放在单独的DLL中(并且它在除了UI之外的所有层中都可见)现在,我需要公开它以便我的服务的使用者可以使用它。在这种情况下,UI。 我怎么可能这样做? Entities.DLL namespace Entities { public class Account { public string AcctID { get; set; } public string AcctName { get; set; } } } 现在,我打算在WCF中使用它 服务接口层 public class AccountService : IAccountService { public Account GetAccount(string AcctID) { //fetch from DAL through BLL } } 只是属性我的实体可以吗? (注意,我也在使用DAL和BLL中的实体) […]

将参数作为Xml传递给存储过程

我有一个要求将参数作为Xml传递给我的存储过程。 我在中间层有一个WCF服务,它调用我的数据层,然后将请求转发到适当的存储过程。 设计是WCF服务负责构建Xml以传递到存储库。 我只是想知道是否要控制中间层中Xml中包含的参数,还是使用客户端构建的字典,然后将其转换为中间层的Xml? 目前我已经选择了后者 – 例如: public TestQueryResponseMessage TestQuery(TestQueryRequestMessage message) { var result = Repository.ExecuteQuery(“TestQuery”, ParamsToXml(message.Body.Params)); return new TestQueryResponseMessage { Body = new TestQueryResponse { TopicItems = result; } } } private string ParamsToXml(Dictionary nvc) { //TODO: Refactor StringBuilder sb = new StringBuilder(); sb.Append(“”); foreach (KeyValuePair param in nvc) { sb.Append(“”); sb.Append(“”); sb.Append(param.Value); sb.Append(“”); […]