最近已经给出了一个完全使用XML的项目.我们正在查看使用SOA的现有项目.我很想加快SOA的速度,所以想知道是否有人会推荐任何好的网站/书籍等.
我有一本Thomas Erl的书叫做面向服务的架构,我希望用其他资源补充这本书.
干杯
征求关于"最佳"模式的反馈/选项/评论,以用于我的服务中的参考数据.
参考数据是什么意思?
我们以Northwind为例.订单与数据库中的客户相关.当我实现我的订单服务时,在某些情况下,当我只想要一个对客户的引用(例如一个键/值对)时,我会希望引用来自订单的"完整"客户和其他情况.
例如,如果我正在使用GetAllOrders(),我不想返回完全填写的订单,我想要返回订单的轻量版本,其中只包含每个订单的客户的参考数据.但是,如果我使用GetOrder()方法,我可能想填写客户详细信息,因为很可能需要此方法的消费者.可能还有其他情况我可能要求在某些方法调用期间填写客户详细信息,但留给其他人使用.
这是我提出的:
[DataContract]
public OrderDTO
{
[DataMember(Required)]
public CustomerDTO;
//etc..
}
[DataContract]
public CustomerDTO
{
[DataMember(Required)]
public ReferenceInfo ReferenceInfo;
[DataMember(Optional)]
public CustomerInfo CustomerInfo;
}
[DataContract]
public ReferenceInfo
{
[DataMember(Required)]
public string Key;
[DataMember(Required)]
public string Value;
}
[DataContract]
public CustomerInfo
{
[DataMember(Required)]
public string CustomerID;
[DataMember(Required)]
public string Name;
//etc....
}
Run Code Online (Sandbox Code Playgroud)
这里的想法是,因为在CustomerDTO中总是需要ReferenceInfo(它是一个通用的Key/Value对),所以我总是有ReferenceInfo.如果需要,它可以为我提供足够的信息以获取客户详细信息.让CustomerDTO需要ReferenceInfo的缺点是,当我获得完整的CustomerDTO(即填写了CustomerInfo)时,它可能有点过分,但至少我保证参考信息.
我可以使用其他一些模式或框架来使这个场景/实现"更清洁"吗?
我问的原因是,虽然我们可以简单地说在Northwind中总是返回一个完整的CustomerDTO,但这可能在简单的Northwind情况下工作正常.在我的例子中,我有一个对象,有25-50个字段是引用/查找类型数据.有些在不同的情况下加载比其他更重要,但我希望尽可能少地定义这些引用类型(这样我就不会进入"DTO维护地狱").
意见?反馈?评论?
谢谢!
我是我办公室的开发人员,SOA开发处于巅峰状态.我们使用IBM MQ,IBM Message Broker和Java/J2EE Technologies.
我目前已进入项目,其中使用Message Broker开发一个在两个应用程序之间进行交互的中间件.我不太确定Message Broker是否是这类项目的正确选择,因为Java可以以高效的方式完成同样的工作,这使我在互联网上搜索使用这两者的优势.
我在不同的站点中读到Message Broker用于转换,路由和增强消息,这可以通过有效地使用java来完成.所以这让我想到了这个问题"何时使用Java以及何时使用Message Broker进行开发?" 如果有人可以帮助我使用这两者的优势,那将是很棒的.
-RDJ
根据我对N-Tier和SOA架构的理解.
N-Tier意味着将应用程序划分为多个层,示例I正在asp.net中开发应用程序,我将总数据库层推送到WCF,然后将其称为N层.[紧耦合]
根据我对SOA的理解,它是非常通用的术语,以及我们如何将松散地耦合到我们的架构,然后称为SOA.SOA服务的最佳示例 - Stock feeds/weather feed.
即使我们使用WCF开发应用程序,如果它与单个客户端/或.net应用程序紧密耦合,也不意味着它只能了解服务.
你能帮助我理解SOA VS N-Tier吗?
好的,我们正在使用实体框架,并希望将这些实体的数据暴露给消费者.这些数据非常常见,虽然最初仅由WPF应用程序使用,但未来可能会被其他技术(如Silverlight,ASP.NET,Office等)使用.
通常,您将构建WCF服务,该服务公开了许多显式方法,以根据使用者的需求返回数据.例如,GetCustomersById(int Id),GetAllCustomers()等.如果您将来需要添加其他方法,这将导致必须重写WCF服务并处理版本问题的开销.您还可以使用DTO返回数据.
因此,我们正在考虑通过WCF数据服务公开实体.这似乎有道理.它通过消除必须构建实现各种接口的显式服务来节省开发工作.如果发生对实体的修改,它还可以保护您不必重写这些接口.
这一切似乎很容易,我相信我们错过了一些东西.这种方法有哪些缺点?此外,如果我们返回实体而不是DTO,我们还会失去什么?
然后有关于您可能还有的更新和删除操作的明显问题.是否值得为这些操作考虑WCF数据服务?
感谢您的任何见解!
我正在研究WCF和安全性.有几种安全模式,但总体情况是您可以保护2个主要"层":传输或消息.
有人可以更深入地解释这个吗?当我确保运输安全时,我有什么想象,它是如何工作的等等.
让我们想象一下,我们的应用程序需要从关系数据库到另一个关系数据库的ETL(提取,转换,加载)数据.最简单(和大多数性能,恕我直言)的方式是在数据库之间建立链接并编写简单的存储过程.在这种情况下,我们使用最少的技术和组件,所有功能都是"开箱即用".
但这是SOA(面向服务的架构)的良好实践吗?紧耦合怎么样?我们是否永远将数据库强烈地相互耦合?
还有另一种方法:我们在每一侧构建2个Java应用程序,并通过SOAP Web服务进行通信.这更加SOA友好!但性能下降和额外的失败点值得吗?
在这种情况下,最佳做法是什么?ETL如何适应SOA?
这是一个非常理论和抽象的问题:面向服务的体系结构(SOA)与基于组件的方法有何不同?SOA的概念是基于组件的方法的扩展吗?
你的想法是什么?也许你知道任何涵盖这个主题的好文章?
我必须创建一个Java EE应用程序,它将大型文档转换为不同的格式.每次转换需要10秒到2分钟.SOAP请求将来自我还必须创建的客户端应用程序.
处理这些长时间运行请求的最佳方法是什么?显然,该过程需要花费很多时间来运行而没有任何反馈给用户.
我可以想到以下提供某种反馈的方法,但我不确定是否有更好的方法,也许是标准化的方法.
还有其他方法吗?在性能,稳定性,容错性,用户友好性等方面哪一个最好?
谢谢您的回答.
我有一个使用jquery自动完成插件的Web应用程序,该插件实际上是通过ajax将包含已经输入文本框的文本的请求发送到我们的Web服务器,一旦Web服务器收到此请求,它就会被移交给rabbitmq.
我知道我们确实从使用消息传递中获益,但似乎使用它来阻止rpc调用是一种误用,在这种情况下像WCF这样的东西更合适,是这种情况还是被认为是可接受的架构?
soa ×10
wcf ×4
architecture ×2
.net ×1
asp.net ×1
components ×1
database ×1
datacontract ×1
decoupling ×1
etl ×1
java ×1
rabbitmq ×1
rpc ×1
soap ×1