- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
设置:我正在为我的部门开发一个Intranet工具集,其主要目的是集中管理数据质量和可访问性,以及自动化和扩展部分流程。
问题:我目前在CLR程序集中有我的业务逻辑,该逻辑在我的SQL Server上可用于直接在SQL Server上直接运行自动ETL的其他CLR程序集。我还在开发一个Intranet站点,该站点也需要该业务逻辑程序集中的代码信息,但是在部署和代码维护方面,对CLR程序集代码的引用一直没有达到最佳效果。另外,另一个部门也表达了对将代码库和数据用于自己的Intranet站点的兴趣。
问题:我已经阅读了很多有关该主题的问答(1,2,3,4,...),但我发现它涵盖面很广,所以我会尝试针对更具体的情况提出问题(即单个BL和数据访问代码库)
WCF服务是我想要的解决方案吗?我所有潜在的服务客户端都在同一台服务器上运行,在CLR程序集和网站项目中是否有另一种引用相同代码库的方法?我不需要对不同平台(例如Java)的支持-一切都是.NET(对于内部程序来说是这样!)-WCF是否会过时?
WCF服务中的代码可以像类库一样使用,还是我需要编程一种新方法来访问该服务中的类/方法?
将开发,测试和生产实例分开?
客户端访问时可以更新WCF服务吗?还是需要安排维护时段?更新服务时,是否还需要以某种方式更新客户端?
是否可以根据StageConfig = dev,test或prod来动态设置服务引用,就像当前正在动态设置数据库连接字符串一样?
我的CLR程序集是为.Net 3.5编写的,但是.NET 4.0的网站会带来问题吗?
我需要知道哪些最低限度的.NET服务体系结构编程集?随着时间的推移,我将学习更多有关WCF的知识,但我需要评估架构方面的工作,并权衡完成工作(功能请求)的情况。 MS tutorial能给我所需的技能吗?
我感谢仅回答单个问题的答案,如果您觉得自己有所了解,我会+1一切有助于我接近完整答案的内容。
最佳答案
好的,因此您想使代码在整个企业范围内。当您要执行此操作时,有两个基本问题要讨论,因此我将以这种方式来构造答案:
您必须了解WCF的全部含义。
您必须正确管理依赖项。
WCF是关于什么的
WCF是执行RPC / RMI(远程过程调用/远程方法调用)的一种方式,这意味着某些客户端代码可以调用通过网络位于其他位置的代码。
可调用的WCF服务由ABC三元组确定:
服务规范被实现为具有“ ServiceContract”属性的.NET接口。这是合同(“ C”)
服务的“位置”由一对确定:地址(“ A”)和绑定(“ B”)。绑定确定用于客户端和服务器之间的通信的协议套件(NetPipe,TCP,HTTP等)。地址是遵循绑定所确定的方案的URI(“ net.pipe”,“ net.tcp”,“ http”,...)
当客户端代码在具有特定绑定和特定协定(必须与特定地址处的服务器和特定绑定所传递的内容相匹配)的特定地址处调用WCF服务时,WCF会生成实现以下接口的代理对象:合约。
提供服务的程序是任何.NET可执行文件。它必须生成一个或多个WCF主机,这些主机将注册实现服务协定的对象或类,并将每个传递的服务与特定的地址和绑定相关联。 (可能很多)
可以通过app .config文件进行配置,在该文件中,您将指定ABC三胞胎,并将这些三胞胎与您将在应用程序中使用的名称关联起来。您也可以以编程方式进行操作,这非常容易。
WCF无法解决部署应用程序或地址和绑定配置的问题。它只是解决了让两个可执行文件与强类型对象(通过特定接口)相互通信的问题。共享服务配置由您决定。您可以在Windows共享上使用共享的.config文件,甚至可以设置LDAP服务器来提供查找服务所需的所有数据(即A和B)。
正确管理依赖项
在您的方案中,有三个参与者想要使用WCF基础结构:
您的SQLCLR程序集将成为客户端。
Intranet站点,它将是另一个客户端。
服务主机,将是服务器。
程序集的最小最小数量为4。每个上述行为者一个,而一个指定合同的契约,所有三个行为者都将使用该合同。它应包含以下内容:
指定合同的接口。
接口需要的所有类型,这些类型当然会通过网络发送,因此必须可序列化。
里面应该没有其他东西了,否则将成为维护的噩梦。
回答你的问题
我希望我的答案是明确的。让我们总结一下您的问题的答案。
WCF服务是我想要的解决方案吗?我所有潜在的服务客户
在同一台服务器上运行,是否有另一种方式可以引用
在CLR汇编程序和网站项目中使用相同的代码库?我不需要
支持不同的平台(例如Java)-一切都是.NET(适用于
内部程序!)-WCF会大材小用吗?
一切都太过分了。 WCF易于使用,并且缩放比例很好。
可以像类库一样使用WCF服务中的代码,还是我需要
编程一种从服务访问类/方法的新方法?
在现有代码上设置WCF仅需要实现一个附加类,并且某些代码创建将为上述类提供服务的主机。
调用WCF服务需要创建一个Channel,这是一个实现接口的.NET(代理)对象。
因此,基本上,您的业务代码保持不变。
将开发,测试和生产实例分开?
WCF对此不负责。不同的环境,不同的服务地址。您必须自己照顾这一点。
客户端访问时可以更新WCF服务吗?还是需要安排维护时段?
这取决于您的维护策略。终止服务过程并启动新版本是基本的升级机制。
更新服务时,是否还需要以某种方式更新客户端?
如果像我在上一节中所概述的那样正确地管理依赖关系,则仅在服务规范(接口)发生更改时才需要更新客户端。
是否可以根据StageConfig = dev,test或prod来动态设置服务引用,就像当前正在动态设置数据库连接字符串一样?
您必须通过以编程方式为服务设置地址和绑定来进行管理。
我的CLR程序集是为.Net 3.5编写的,但是.NET 4.0的网站会带来问题吗?
如果像我在上一节中所概述的那样正确地管理依赖关系,则唯一的约束将是“合同”程序集所需的最低CLR版本。
我需要知道哪些最低限度的.NET服务体系结构编程集?随着时间的推移,我将学习更多有关WCF的知识,但我需要评估架构方面的工作,并权衡完成工作(功能请求)的情况。 MS教程能为我提供所需的技能吗?
您将需要这些练习的结果:
制作两个可执行文件(客户端和服务器),它们将进行通信
通过位于单独DLL中的WCF合同。配置
应该位于app .config文件中。
制作两个可执行文件(客户端和服务器),它们将进行通信
通过WCF合同
位于单独的DLL中。配置应通过编程确定。
尝试将可序列化的类作为参数发送给您的服务。
尝试发送可序列化的类作为服务的返回值。
之后,您需要考虑共享服务地址和绑定的最佳/最便宜方法。
希望能帮助到你。
关于wcf - 如何将.NET代码库实现为服务层-在多个应用程序之间共享相同的BL/CRUD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13310918/
创建使用.NET框架的asp.net页面时,访问该页面的客户端是否需要在其计算机上安装.NET框架? IE。用户访问www.fakesite.com/default.aspx,如果他们没有安装框架,他
我阅读了很多不同的博客和 StackOverflow 问题,试图找到我的问题的答案,但最后我找不到任何东西,所以我想自己问这个问题。 我正在构建一个应用程序,其中有一个长时间运行的工作线程,它执行一些
已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 我一直想知道为什么微软为这样一个伟大的平台选择了一个如此奇怪的、对搜索引擎不友好的名称。他们就
.Net Framework .Net .NET Standard的区别 1、.NET Framework 在未来.NET Framework或许成为过去时,目前还是有很多地方在使用的。这一套
如果有选择的话,您会走哪条路? ASP.NET Webforms + ASP.NET AJAX 或 ASP.NET MVC + JavaScript Framework of your Choice
我有一个 Web 服务,它通过专用连接通过 https 使用第三方 Web 服务,我应用了 ServicePointManager.ServerCertificateValidationCallbac
为什么我应该选择ASP.NET Web Application (.NET Framework)而不是ASP.NET Core Web Application (.NET Framework)? 我在
我在网络上没有找到任何关于包含 .NET Standard、.NET Core 和 .NET Framework 项目的 .NET 解决方案的公认命名约定。 就我而言,我们在 .NET 框架项目中有以
.NET Compact 是 .NET 的完美子集吗? 假设我考虑了屏幕大小和其他限制并避免了 .NET Compact 不支持的类和方法,或者 .NET Compact 是一个不同且不兼容的 GUI
我已经阅读了所有我能找到的关于 connectionManagement 中的 maxconnection 设置的文章:即 http://support.microsoft.com/kb/821268
我现在正在使用asp.net mvc,想知道使用内置的Json或 Json.Net哪个是更好的选择,但我不确定一个人是否比另一个人有优势。 另外,如果我确实选择沿用Json.Net的路线,那么我应该选
在 Visual Studio 中,您至少可以创建三种不同类型的类库: 类库(.NET Framework) 类库(.NET 标准) 类库(.NET Core) 虽然第一个是我们多年来一直使用的,但我
.NET 和 ASP.NET 之间有什么区别?它们有什么关系? 最佳答案 ASP.Net 基于 .Net 框架构建,提供有关 Web 开发的附加功能。 你可以去看看wikipedia article
在安装更高版本(3.0)之前,我需要安装.net框架1.1和2.0吗?或者单独安装 3.0 框架就足够了,并为在早期框架版本上编写的软件提供支持?谢谢 ,丽然 最佳答案 不,您不必安装以前的框架。 我
我正在开发一个项目,人们可以“更新”类别,例如更改类别的名称。我收到以下消息 This is called after clicking update 按钮 with the SQL statemen
.NET 类 System.Net.CookieContainer 线程安全吗? --更新:交 key 答复-- 是否有任何方法可以确保异步请求期间修改的变量(即 HttpWebRequest.Coo
我正在使用 JScript.NET 在我编写的 C# WinForms 应用程序中编写脚本。它工作得很好,但我只是尝试在脚本中放置一些异常处理,但我无法弄清楚如何判断我的 C# 代码抛出了哪种类型的异
我需要你的帮助, 比如我有一个小数类型的变量,我想这样取整。 例如 3.0 = 3 3.1 = 4 3.2 = 4 3.3 = 4 3.4 = 4 3.5 = 4 3.6 = 4 3.7 = 4 3.
我使用过这样的代码:http://msdn.microsoft.com/en-us/library/dw70f090.aspx在 ASP.NET 中工作之前访问数据库(2-3 年前)。我没有意识到我正
自 ConfigurationManager .NET Standard 中不存在,检索正在执行的程序集的应用程序设置的最佳方法是什么,无论是 web.config或 appSettings.{env
我是一名优秀的程序员,十分优秀!