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

众所周知,老牌大厂微软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#的运行时,这个必将是大公司标准产品的一个趋势,近些年博主在通信行业两年,新能源汽车行业三年,见过很多标准产品和非标产品,非标产品耗时长且心累,标准产品如果开口设计的不是很好,上限很低。我想不止是微软,

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

 

 

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

 

posted @ 2023-01-27 10:01  Jeffrey是个瘦子  阅读(170)  评论(0)    收藏  举报