标签: soa

将参数作为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<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)

c# xml t-sql soa

6
推荐指数
1
解决办法
2万
查看次数

在非服务代码中使用SOA原则而不是OOD

我们的架构师已经谈到在整个代码库中使用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)

我无法真正了解这种方法的好处,并想知道是否有人可以提供帮助?

这是一种常见的方法吗?

oop soa

6
推荐指数
1
解决办法
218
查看次数

基于WCF的SOA,分布式和服务器端编程的好书?

我基本上是一个.NET GUI程序员,并且已经使用了很多WPF,Winforms,并且还使用过WCF.我加入了一家银行的新工作,我们正在编写一个新软件来取代现有的交易应用程序.这涉及基于WCF服务的大量工作,我们需要使用/实现许多与SOA相关的概念,如消息代理,pub-sub模式,消息总线等.因此,基本上意味着很多服务器端和分布式编程以我的方式先 !我们现在使用简单的WCF服务来完成我们的服务层工作,但目的是使其更具可扩展性,健壮性,安全性和可靠性.

我有一本基本的WCF书,但想知道是否有更专业的SOA,基于分布式架构的书(基于.NET,WCF或可能不是),可以快速帮助我完成服务器端编程的曲线.可能会谈到CEP,EDA等.

非常感谢,Mani

.net wcf soa distributed

6
推荐指数
1
解决办法
1072
查看次数

什么是一个很好的开源软件包,用于在大型Rails站点上构建灵活的垃圾邮件检测?

我的网站越来越大,它开始通过各种渠道吸引大量垃圾邮件.该网站有许多不同类型的UGC(个人资料,论坛,博客评论,状态更新,私人消息等).我正在进行各种缓解措施,我希望以闪电般的方式进行部署,以使垃圾邮件发送者相信我们不是一个有价值的目标.我对我正在做的功能有很高的信心,但是一个缺失的部分就是一次性杀死所有旧的垃圾邮件.

这就是我所拥有的:

  • 大的好/坏语料库(5位数不好,6或7位数字好).很多垃圾邮件都有非常可靠的指纹,事实上我已经忽略它6个月有助于:)
  • 部署到AWS的大型模块化Rails站点.它不是一个巨大的流量站点,但我们在SOA的开始运行8个实例.
  • Ruby,Redis,Resque,MySQL,Varnish,Nginx,Unicorn,Chef,都在Gentoo上

我的要求:

  1. 我希望它在数据量方面表现得相当好(因此我对纯ruby解决方案持谨慎态度).
  2. 我应该能够针对不同类型的内容训练多种分类(419-scam vs僵尸网络链接垃圾邮件)
  3. 我希望能够根据我们自己的侦探工作(模式匹配,IP重用等)添加手动因素
  4. 最终我想构建一个与Ruby一起使用的漂亮接口.如果这需要我的手弄脏C或其他什么,我可以处理它,但如果可以的话我会避免它.

我意识到这是一个漫长而模糊的问题,但我正在寻找的主要是一个好的包列表,其次是来自某个人的随机想法,这些人建立了一个类似的方法来处理它.

ruby linux soa spam bayesian

6
推荐指数
1
解决办法
489
查看次数

BPM vs ESB - Orchestration?

我们可以有把握地说,如果ESB提供了Orchestration功能,它是否有资格成为BPM的实现?

我知道BPM有不同的目的,即建模一些业务流程,这些业务流程的实现可以通过任何简单的Java/J2EE应用程序,复杂的SOA应用程序或某些应用程序来完成,即我提供BPM.是对的吗?

soa esb business-process-management eai orchestration

6
推荐指数
2
解决办法
1万
查看次数

支持RESTful服务 - 我应该使用Pragma,Cookies,自定义标头或其他东西来识别客户端会话和事务吗?

问题

我们正在使用RESTful方法构建SOA.一旦系统投入生产,我们将有许多客户使用该接口,包括内部和第三方系统.

我们希望能够在客户端应用程序提供的响应信息中使用和回显,例如: -

  • 会话ID - 可以是Java EE会话ID或任何特定于客户端的,这对于支持团队和调试客户端问题以在我们的所有系统中跟踪它们非常有用.
  • 事务ID - 请求的唯一标识符,如果它们异步调用服务或者我们实现202 Accepted样式长时间运行的进程,我们可以回显给客户端以帮助客户端进行请求/响应关联.

潜在解决方案

因此,坚持使用RESTful约束表明我们需要利用HTTP来实现这一点,并且我们可以实现几个选项.

  • Pragma标题 - 为transaction-id,session-id等实现扩展-pragma.这似乎是解决方案的纯粹主义,因为它使用标准的HTTP标题,虽然我担心它会成为我们无法解决的一切问题的倾销场好好想想.
  • X-My-Header - 我们需要的每个字段的自定义标头.可能被代理剥离,而不是核心HTTP,所以感觉反休息
  • 在查询字符串或XML/JSON表示中 - 将字段添加到我们的所有资源.因为它是一个操作参数,所以感觉它应该作为元数据而不是资源提供.
  • Cookie - 使用Cookie和Set-Cookie来保存自定义键值; 在会话ID的情况下很有用,因为大多数实现已经使用了cookie.每次都必须重新发送以支持客户端关联哪种方式使用cookie失败.

答案

这有先例吗?我们生气了吗?在我的所有研究中是否有一些明显的东西?没有人真正关心他们部署后如何支持他们的服务?我应该闭嘴并离开吗?

我希望有人可以提供帮助.

PS抱歉,如果这是一篇文章,建议确实说"具体"....

rest soa

6
推荐指数
1
解决办法
557
查看次数

SOA Webservices - 如何在Git上管理个人服务开发

作为更大的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中我们可以管理这种分组吗?

architecture git version-control soa web-services

6
推荐指数
1
解决办法
789
查看次数

企业集成模式解决方案绘图工具

我想知道是否有任何绘图工具可用于根据EIP映射给定的用例解决方案.有一个可用于MS Visio的模板和一个用于OpenOffice的SVG替代方案.模板中的形状很好,但似乎不是演示文稿的最佳图形.有没有可用于绘制EIP的替代方案?提前致谢.

soa esb apache-camel enterprise-integration

6
推荐指数
2
解决办法
6030
查看次数

PaaS中的SOA云可能吗?

我目前正处于一个新服务云的绘图板,我们正在构建一个面向服务的架构.这个想法是这样的:

  • 10个服务的云.
  • 3个完全不同的业务逻辑层(BL),可以自由地混合和匹配这些服务.
  • BL处理授权和访问管理,服务仅接收和响应.

问题是,如果使用PaaS(最好是Heroku或Google App Engine)进行此设置,主要问题是要有多个非公开的服务,但同时可以从不同的应用程序(BL)访问.

基本上:如何保护服务免受公共访问(最好不使用身份验证和令牌),但同时让我的任何应用程序都可以访问它们?

在此输入图像描述

architecture soa google-app-engine heroku paas

6
推荐指数
1
解决办法
447
查看次数

企业服务总线与BPM

我所研究的ESB和BPM工具都采用了一些输入,调用了多个步骤来完成任务.我所看到的不同之处在于,在ESB中,一切都是自动化的 - 过程是自动触发的,涉及大量外部调用/数据被转换并发送到适当的系统以供消费.在BPM系统的情况下,该过程可以手动或自动启动,它涉及一系列决策步骤,其中一些涉及手动决策步骤.一旦完成这些步骤,任务就被标记为完成.是否有可能解释BPM和ESB之间的明显区别?

soa esb business-process-management

6
推荐指数
1
解决办法
3111
查看次数