001*_*001 5 c# asp.net api web-services software-design
我即将设计我的Web服务API,我的API的大多数功能基本上与我的Web应用程序非常相似.
现在问题是,我应该创建1个单一方法并将它们重用于Web应用程序和Web服务API吗?(这似乎是合乎逻辑的解决方案,但它非常复杂;复制Web应用程序使用的方法要容易得多,并且保持两者分离,即Web应用程序的一种方法和Web服务的一种方法.)
你们是怎么做到的?
1)REUSE:一种主要方法,并将它们重用于Web应用程序和Web服务应用程序(我喜欢这个,但它很复杂)
即Commonfunctionmethod_x包含可重用的一组常用功能
PRO:更少的代码,更少的维护,更少的错误.
CON:非常复杂
2)DUPLICATE:两种方法,一种是Web应用程序的方法,另一种是Web服务的方法.
PRO:简单
CON:复制=更多代码,更多维护,更多错误!
您的公共 Web 服务 API 的用例很可能与内部应用程序 API 的用例不同。创建一个公共服务项目/层,并从您的 Web 应用程序和面向公众的 Web 服务 API 中使用同一层。为每个 Web 应用程序和 Web 服务创建单独的 http 可调用方法。
归结为存在
1)不同的安全问题。例如,最好(通常需要)提供一个使用您的公共 API 的示例客户端应用程序,以便其他人可以轻松地了解您所提供的内容。该客户端 API 可能需要传递您提供的已去除内部安全逻辑/内容的对象构造。(请记住,编译后的 C# 也可能是使用 Reflector 的明文!)
2)不同的需求和约束。例如,对于内部应用程序调用,您有时会强制执行与面向公众的 Web 服务 API 不同的业务规则(通常后者的范围受到更多限制)。
如果您将业务逻辑设计到服务层中,并分别从您的 Web 项目和 Web 服务项目中很好地调用这些类/方法,那么您将获得大量代码重用,而无需尝试通过混合用例使事情变得过于复杂。
归档时间: |
|
查看次数: |
451 次 |
最近记录: |