我有一个要求将参数作为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<string, string> nvc)
{
//TODO: Refactor
StringBuilder sb = new StringBuilder();
sb.Append("<params>");
foreach (KeyValuePair<string, string> param in nvc)
{
sb.Append("<param>");
sb.Append("<" + param.Key + ">");
sb.Append(param.Value);
sb.Append("</" + param.Key + ">");
sb.Append("</param>");
}
sb.Append("</params>");
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但是我可能需要第一种方式.例如
public TestQueryResponseMessage TestQuery(TestQueryRequestMessage message)
{
string xml = …Run Code Online (Sandbox Code Playgroud) 我们的架构师已经谈到在整个代码库中使用SOA技术,甚至在实际上不作为服务托管的接口上也是如此.他的一个要求是我们设计我们的接口方法,以便我们不对实际的实现做出任何假设.因此,如果我们有一个接受对象并需要更新该对象的属性的方法,我们显然需要从该方法返回该对象.否则,我们将依赖于Something是引用类型的事实,并且c#允许我们默认更新引用类型的属性.
所以:
public void SaveSomething(Something something)
{
//save to database
something.SomethingID = 42;
}
Run Code Online (Sandbox Code Playgroud)
变为:
public Something SaveSomething(Something something)
{
//save to database
return new Something
{
//all properties here including new primary key from db
};
}
Run Code Online (Sandbox Code Playgroud)
我无法真正了解这种方法的好处,并想知道是否有人可以提供帮助?
这是一种常见的方法吗?
我基本上是一个.NET GUI程序员,并且已经使用了很多WPF,Winforms,并且还使用过WCF.我加入了一家银行的新工作,我们正在编写一个新软件来取代现有的交易应用程序.这涉及基于WCF服务的大量工作,我们需要使用/实现许多与SOA相关的概念,如消息代理,pub-sub模式,消息总线等.因此,基本上意味着很多服务器端和分布式编程以我的方式先 !我们现在使用简单的WCF服务来完成我们的服务层工作,但目的是使其更具可扩展性,健壮性,安全性和可靠性.
我有一本基本的WCF书,但想知道是否有更专业的SOA,基于分布式架构的书(基于.NET,WCF或可能不是),可以快速帮助我完成服务器端编程的曲线.可能会谈到CEP,EDA等.
非常感谢,Mani
我的网站越来越大,它开始通过各种渠道吸引大量垃圾邮件.该网站有许多不同类型的UGC(个人资料,论坛,博客评论,状态更新,私人消息等).我正在进行各种缓解措施,我希望以闪电般的方式进行部署,以使垃圾邮件发送者相信我们不是一个有价值的目标.我对我正在做的功能有很高的信心,但是一个缺失的部分就是一次性杀死所有旧的垃圾邮件.
这就是我所拥有的:
我的要求:
我意识到这是一个漫长而模糊的问题,但我正在寻找的主要是一个好的包列表,其次是来自某个人的随机想法,这些人建立了一个类似的方法来处理它.
我们可以有把握地说,如果ESB提供了Orchestration功能,它是否有资格成为BPM的实现?
我知道BPM有不同的目的,即建模一些业务流程,这些业务流程的实现可以通过任何简单的Java/J2EE应用程序,复杂的SOA应用程序或某些应用程序来完成,即我提供BPM.是对的吗?
问题
我们正在使用RESTful方法构建SOA.一旦系统投入生产,我们将有许多客户使用该接口,包括内部和第三方系统.
我们希望能够在客户端应用程序提供的响应信息中使用和回显,例如: -
潜在解决方案
因此,坚持使用RESTful约束表明我们需要利用HTTP来实现这一点,并且我们可以实现几个选项.
答案
这有先例吗?我们生气了吗?在我的所有研究中是否有一些明显的东西?没有人真正关心他们部署后如何支持他们的服务?我应该闭嘴并离开吗?
我希望有人可以提供帮助.
PS抱歉,如果这是一篇文章,建议确实说"具体"....
作为更大的SOA计划的一部分,我们在Oracle Service Bus上开发了许多Web服务.目前这些是在SVN上管理的.SVN允许我们管理单个服务的版本控制,因为它允许我们在单个文件夹级别创建标记和分支.以下是我们遵循的典型结构,
+- Services
|
+- Service1
| |
| +- tags
| |
| +- branch1
| |
| +- trunk
| |
| +- artefacts
|
+- Service2
| |
| +- tags
| |
| +- branch1
| |
| +- trunk
| |
| +- artefacts
|
+- service N
Git绝对不允许在文件夹级别进行版本控制.我们有150多个webservice,每个都可以拥有自己的开发周期,并且可以构建为可部署的.将我们当前的策略直接映射到Git将是将每个服务作为git存储库并遵循git的原则,但这使得我们拥有超过150个git存储库.
这种方法对吗?有没有更好的方法?任何人在开发大量的Web服务时都有类似的用例?
我们还考虑创建某种逻辑分组并为该组创建git存储库,但我想这是一个错误的策略,因为这会使我的版本控制和单个服务的标记变得混乱.在git中我们可以管理这种分组吗?
我想知道是否有任何绘图工具可用于根据EIP映射给定的用例解决方案.有一个可用于MS Visio的模板和一个用于OpenOffice的SVG替代方案.模板中的形状很好,但似乎不是演示文稿的最佳图形.有没有可用于绘制EIP的替代方案?提前致谢.
我目前正处于一个新服务云的绘图板,我们正在构建一个面向服务的架构.这个想法是这样的:
问题是,如果使用PaaS(最好是Heroku或Google App Engine)进行此设置,主要问题是要有多个非公开的服务,但同时可以从不同的应用程序(BL)访问.
基本上:如何保护服务免受公共访问(最好不使用身份验证和令牌),但同时让我的任何应用程序都可以访问它们?

我所研究的ESB和BPM工具都采用了一些输入,调用了多个步骤来完成任务.我所看到的不同之处在于,在ESB中,一切都是自动化的 - 过程是自动触发的,涉及大量外部调用/数据被转换并发送到适当的系统以供消费.在BPM系统的情况下,该过程可以手动或自动启动,它涉及一系列决策步骤,其中一些涉及手动决策步骤.一旦完成这些步骤,任务就被标记为完成.是否有可能解释BPM和ESB之间的明显区别?
soa ×10
esb ×3
architecture ×2
business-process-management ×2
.net ×1
apache-camel ×1
bayesian ×1
c# ×1
distributed ×1
eai ×1
git ×1
heroku ×1
linux ×1
oop ×1
paas ×1
rest ×1
ruby ×1
spam ×1
t-sql ×1
wcf ×1
web-services ×1
xml ×1