- 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/
Java 库和 android 库有什么区别,各自有什么优点/缺点? 最佳答案 您可以在 Android 应用程序中包含标准 Java .jar 文件库。它们在 .apk 构建时被翻译成 Dalvik
所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设
我想在我的系统中设置 LEDA 库。 我已经从以下链接下载了 LEDA 库 http://www.algorithmic-solutions.info/free/d5.php Instruct
我想用 autoconf 创建一个共享库。但是,我希望共享库具有“.so”扩展名,而不是以“lib”开头。基本上,我想制作一个加载 dlopen 的插件。 .是否有捷径可寻? 当我尝试使用 autoc
我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB 我的代码: eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib
我正在构建一个使用以下 Boost header 的程序(我使用的是 Microsoft Visual C++ 10), #include #include #include #include
当我通过 cygwin 在 hadoop 上运行此命令时: $bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 我
我已经通过 vcpgk 成功安装了一个 C++ 库,名为:lmdb:x64-windows 我还安装了lmdb通过 Cabal 安装的 Haskell 绑定(bind)包 在尝试测试 lmdb 包时:
我该如何解决这个问题? 我刚刚将 javacv jar 文件复制到我的项目 Lib 文件夹下,但出现了这个错误! 我可以找到这个thread来自谷歌,但不幸的是,由于我国的谷歌限制政策,该页面无法打开
我有一个 Android 库项目 FooLib。 FooLib 引用 Android Context 之类的东西,但不需要任何资源文件(res/ 中的东西)所以我目前将其打包为供我的应用使用的 JAR
我正在开发一个 Android 应用程序(使用 Android Studio),它能够通过手势识别算法了解您正在进行的 Activity 。对于我使用 nickgillian ithub 帐户上可用的
关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework
我已经从互联网上下载了 jna-4.2.2.jar,现在想将这个 jar 导入到我的项目中。但是当我试图将这个 jar 导入我的项目时,出现以下错误。 [2016-06-20 09:35:01 - F
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
进入 Web 开发有点困难。过去 5 年我一直致力于 winforms 工作。所以我正在努力从一种切换到另一种。前段时间,我使用过 JavaScript,但现在还没有大量的 JavaScript 库
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在寻找一个用Python编写的与logstash(ruby + java)类似的工具/库。 我的目标是: 从 syslog 中解析所有系统日志 解析应用程序特定日志(apache、django、m
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我花了几天时间试图寻找用于 JavaPOS 实现的 .jar 库,但我找不到任何可以工作的东西。我找到了很多像这样的文档:http://jpos.1045706.n5.nabble.com/file/
这个问题在这里已经有了答案: Merge multiple .so shared libraries (2 个答案) 关闭 9 年前。 我有我在代码中使用的第三方库的源代码和对象。该库附带有关如何使
我是一名优秀的程序员,十分优秀!