首页 > 数据库 >以SQL SERVER和C#聊聊微软生态趋势中产品跨生态组合

以SQL SERVER和C#聊聊微软生态趋势中产品跨生态组合

时间:2023-01-27 10:11:15浏览次数:61  
标签:ConsoleApp1 C# SERVER 生态 产品 SQL clr

众所周知,老牌大厂微软intel都在裁人,国内短周期的互联网大厂(菊厂,狗厂,福报厂,开水团,鹅厂)更是如此。拿微软来说很多基础软件产品,SQL SERVER,C#开发语言,F#开发语言,Access,POWER BI,report生态等。

所以一家大厂的产品涉及多个生态,C++运行时,C#运行时。要实现一些分布式的api应用很简单,但如何将这些时态本地混合化,微软自前些年net core3.0 一直用的一个思想时kenstrl主机托管化,突然发现SQL Server中集成了他旗下开发语言C#的生态,可直接调用程序集。

我想这可能大概是大厂多产品生态走向绑定和打通的一种思路和趋势。进而在底层做加解密算法,在底层实现更多的数据自滤,尤其对工业标准产品,算法程序限定了,加功能如堆屎山,按程序设计原则,程序要依赖于抽象接口,不要依赖于具体实现。当然说的更多的是上层和中层的设计,但是标准产品又没办法,那么适当在底层做程序集也是这种依赖倒置原则的一种底层应用。

 

一、话不多说,拿C#运行时态,和SQLSERVER来说,上代码,写一个function 功能函数,并编译成dll程序集

 

 

二、开启数据库CLR,开启unsafe命令

EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
GO

ALTER DATABASE MyTestDB SET TRUSTWORTHY ON;
GO

三、导入本地程序集(类似于net framwork 未开源调用本地library程序集库的形式)

CREATE ASSEMBLY clr_ConsoleApp1_ConsoleApp1
FROM 'C:\Users\CNZHAJ\source\repos\ConsoleApp1\bin\Debug\ConsoleApp1.dll'             //本地程序集路径,可更改
WITH PERMISSION_SET = UNSAFE;
GO

CREATE FUNCTION dbo.clr_UserLogin
(
    @username AS NVARCHAR(100),
 @password AS NVARCHAR(100)
)
RETURNS NVARCHAR(100)
AS
EXTERNAL NAME clr_ConsoleApp1_ConsoleApp1.[ConsoleApp1.UserFunctions].UserLogin;
GO

四、调函数

SELECT dbo.clr_UserLogin(N'jeffrey',N'abc123') AS 'State'
GO 2

 

 

成功了,可以看到SQL SERVER中集成了C#的运行时,这个必将是大公司标准产品的一个趋势,近些年博主在通信行业两年,新能源汽车行业三年,见过很多标准产品和非标产品,非标产品耗时长且心累,标准产品如果开口设计的不是很好,上限很低。我想不止是微软,

很多老牌大厂如果打不破生态,产品迭代再好也是多做很多事情。

 

 

赠人玫瑰手留余香,博主是一个五年全栈,一年架构的小伙子,各路大佬欢迎交流。

 

标签:ConsoleApp1,C#,SERVER,生态,产品,SQL,clr
From: https://www.cnblogs.com/hamster5/p/17068587.html

相关文章

  • 学习Ucore_lab体会
    纸上得来终觉浅,觉知此事要躬行使能中断物理内存管理虚拟内存管理内核线程管理用户进程管理进程调度同步和互斥文件系统 这些实验的名字都会让我心动。学习uc......
  • .NET Core 面试题
    值类型和引用类型的区别?值类型继承System.ValueType,例如:int、bool、double等,string为特殊的引用类型赋值:值类型会产生一个新的数据副本,而引用类型是直接赋值引用。内存......
  • Ucore_lab 5~8 相关
    实验五博客:https://kiprey.github.io/2020/08/uCore-5/实验书:https://learningos.github.io/ucore_os_webdocs/lab5/lab5_2_1_exercises.html源码 ......
  • CSAPP随笔:hello world到底是怎么运行的?
     通过命令行执行./test拆分:    0.shell是干什么的?:shell输出提示符,等待输入一个命令行并执行,若该字符串的首个单词不是shell命令,就假设为一个可执行文件的名......
  • Ubuntu22.04 x64 下运行.NET Core3.1程序 报错 usable version of libssl was found
    问题Ubuntu22.04x64下运行.NETCore3.1程序报错:usableversionoflibsslwasfound解决办法wgethttp://security.ubuntu.com/ubuntu/pool/main/o/openssl/libss......
  • JDBC连接数据库
    jdbc(javadatabasecontectivity),即java连接数据库。jdbc的核心思想.java提供数据库的接口,数据库提供驱动实现类。jdbc是由多个接口和类进行功能实现  ......
  • 「解题报告」ARC140F ABS Permutation (Count ver.)
    洛谷题解说这题是“巨大蠢题。这是我见过的最垃圾的ARC,没有之一。”好吧,我不会做巨大蠢题。首先我们可以想到,如果\(|a_i-a_j|=m\),那么\(a_i\)和\(a_j\)一定在......
  • electron使用用npm无法安装的坑
    1、connectECONNREFUSEDip地址443错误npminstall-gelectron使用上面的命令安装后出现“RequestError:connectECONNREFUSED223.75.236.241:443”错误原因外网......
  • S2 - Lesson 24 - It could be worse
    Wordsmanager wicked upset contain sympathetic honesty complain     Content ItcouldbeworseIenteredthehotelmanager'soffi......
  • Codeforces 708 A-E1题解
    A.Meximization这道题问给一些数,如何让前缀的mex之和最大,那么首先,我们要抬mex的话肯定是要把前面都铺垫完的,所以在i位置确定的时候,i+1自然是越大越好,可以证明i+1的位......