Shim là gì

Trong thiết kế máy tính xách tay, shim là một thư viện nhỏ tuổi hoàn toàn có thể ngăn API một cách trong veo, thay đổi những tham mê số được truyền, xử lý chủ yếu vận động hoặc chuyển qua làn đường khác vận động ở vị trí khác. Shims thường xuất hiện thêm Lúc hành vi của API biến đổi, cho nên gây ra sự rứa tương thích cho các vận dụng cũ vẫn phụ thuộc vào tính năng cũ rộng. Trong đầy đủ ngôi trường phù hợp này, API cũ hơn vẫn rất có thể được hỗ trợ do một tấm cân xứng mỏng trên mã new hơn. Shims cũng có thể được sử dụng nhằm chạy các công tác bên trên những nền tảng ứng dụng khác nhau nhưng mà bọn chúng được cải cách và phát triển.

Bạn đang xem: Shim là gì


— Prasoon Saurav mối cung cấp
82
Câu trả lời này sẽ không không giống gì triển khai tìm kiếm tìm google thực tiễn bên trên wikipedia. Một ví dụ đang tốt rất đẹp.
— dance2die
4
Điều này nghe có vẻ như nlỗi vấn đề thực hiện chủng loại kiến tạo Facade để giao quẹt các thư viện.
— blz
84

Thuật ngữ "shim" nlỗi được có mang vào Wikipedia về mặt chuyên môn sẽ tiến hành phân một số loại, dựa trên khái niệm của nó, như là một trong những chủng loại thi công "Kết cấu". hầu hết giao diện mẫu thiết kế của kết cấu mạng được diễn đạt khá rõ ràng trong quy mô xây dựng ứng dụng phía đối tượng người dùng (một trong những bạn đang nói là defacto) tìm hiểu thêm "Mẫu xây cất, các nguyên tố của ứng dụng hướng đối tượng người dùng hoàn toàn có thể tái sử dụng" được Call là "Gang of Four" .

Vnạp năng lượng phiên bản "Gang of Four" tổng quát tối thiểu 3 mẫu được tùy chỉnh thiết lập giỏi, được Gọi là "Proxy", "Adaptor" với "Facade", tất cả hầu như cung ứng tác dụng các loại hình dạng shyên ổn shyên ổn. Trong phần lớn các nghành, câu hỏi áp dụng cùng bỏ qua câu hỏi sử dụng những từ viết tắt khác biệt mang đến cùng một khái niệm gốc khiến đa số tín đồ nhầm lẫn. Sử dụng từ "shyên ổn shim" nhằm mô tả các mẫu mã thi công "Proxy" , "Bộ điều hợp" cùng "Mặt tiền" rõ ràng rộng là 1 trong ví dụ cụ thể về nhiều loại trường hợp này. "Shim" đơn giản và dễ dàng là 1 thuật ngữ thông thường hơn cho những một số loại "Cấu trúc" ví dụ rộng "Proxy", "Adaptor", "Facade" với rất có thể các một số loại khác.


— Doug nguồn
5
Câu trả lời này cho rằng shyên ổn là 1 trong những mẫu mã kiến tạo (một trong các siêu nhiều), viết tên cho một số trong những mẫu thi công tương tự với tiếp tục nói về phong thái phần đa tín đồ bị lầm lẫn bởi vì những trường đoản cú viết tắt khác biệt. Nhưng nó ko thực thụ vấn đáp thắc mắc thuở đầu về shlặng là gì, nó làm gì hoặc sử dụng ra làm sao.
— Richie Thomas
53
Giải đam mê dễ dàng qua phim hoạt hình

Một ví dụ về shim:

*

Tóm lược

Lưu ý: sự tương tự bị căng thẳng mệt mỏi. thường thì Ralph đã nhận thấy CHÍNH XÁC hồ hết gì anh ta trải đời - cơ mà vẻ ngoài của CÁCH nó chiếm được là vấn đề mà anh ta có thể ko mong muốn đợi.

Một shyên ổn là một trong những mã quan tâm đến các gì được hỏi (bằng cách "tiến công chặn"), mà lại không một ai khôn ngoan rộng về nó. Đây là khái niệm chung. Bây giờ đồng hồ các bạn sẽ rất có thể phát âm với hiểu mục wikipedia bên trên shims.


— Bác sĩ phẫu thuật mổ xoang nguồn
13

Về bắt đầu của trường đoản cú, ứng dụng từ bỏ điển của Apple

noun a washer or thin strip of material used to align parts, make them fit, or reduce wear.verb ( shimmed, shimming) < trans. > wedge (something) or fill up (a space) with a shlặng.ORIGIN early 18th cent.: of unknown originĐiều này còn có vẻ phù hợp tương đối tốt cùng với cách các bên kiến tạo website thực hiện thuật ngữ này.


— Thilo nguồn
13

Các miếng chêm được thực hiện trong .net 4.5 Microsoft Fakes framework để tách vận dụng của chúng ta ngoài những cụm không giống để thử nghiệm đơn vị . Shims chuyển làn đường các cuộc Gọi mang đến những cách tiến hành ví dụ nhằm mã nhưng mà bạn viết nlỗi một phần của bài xích kiểm soát của bạn


— Michael Freidgeyên mối cung cấp
12

Theo bài viết của Microsoft "Làm minh bạch miếng chêm" :

Đó là 1 trong những phép ẩn dụ dựa vào từ bỏ shyên ổn trong tiếng Anh, đấy là một thuật ngữ chuyên môn được thực hiện nhằm biểu hiện một miếng mộc hoặc sắt kẽm kim loại được ckém vào thân hai đồ gia dụng thể để triển khai cho chúng khớp với nhau tốt rộng. Trong lập trình sẵn máy vi tính, shyên ổn là một tlỗi viện bé dại rất có thể ngăn API một bí quyết nhìn trong suốt, biến hóa các tham số được truyền, trường đoản cú giải pháp xử lý hoạt động hoặc chuyển sang làn đường khác vận động sinh sống chỗ không giống. Shims cũng rất có thể được thực hiện để chạy những công tác bên trên những nền tảng phần mềm khác nhau nhưng bọn chúng được cải tiến và phát triển.

Tôi phân tích và lý giải vấn đề này Có nghĩa là shlặng là một trong những thuật ngữ chung cho ngẫu nhiên tlỗi viện mã nào hoạt động nhỏng một bạn trung gian và biến hóa 1 phần hoặc trọn vẹn hành động hoặc buổi giao lưu của một chương trình. Giống nhỏng một người trung gian đích thực, nó rất có thể ảnh hưởng mang lại tài liệu được truyền cho công tác đó hoặc tác động mang đến tài liệu được trả về từ bỏ lịch trình đó.

Bài viết áp dụng API Windows có tác dụng ví dụ và tôi thấy câu sau bao gồm liên quan:

Ứng dụng thường không biết rằng thưởng thức vẫn chuyển sang trọng DLL tạm thời vắt bởi vì Windows với Windows lưỡng lự rằng trải đời đến từ một nguồn khác ko kể ứng dụng (vì DLL shyên ổn chỉ là 1 trong DLL khác trong tiến trình của ứng dụng) .

Để bao hàm hóa trích dẫn này, nhì lịch trình tạo thành "bánh mì" của "bánh sandwich shim" quan yếu minh bạch giữa rỉ tai với lịch trình đối tác của họ cùng rỉ tai với shyên ổn.

Một số ưu với điểm yếu của việc thực hiện miếng chêm là gì?

Một đợt tiếp nhữa, từ bài xích viết:

quý khách hàng rất có thể sửa các áp dụng cơ mà ko bắt buộc truy vấn vào mã nguồn hoặc ko biến hóa bọn chúng. Quý khách hàng bắt buộc chịu một lượng buổi tối tđọc ngân sách quản lý bổ sung cập nhật ... cùng chúng ta cũng có thể sửa một vài lượng ứng dụng hợp lý theo cách này. Nhược điểm là cung cấp vì hầu hết các đơn vị hỗ trợ không cung cấp những áp dụng mỹ miều. Quý Khách chẳng thể sửa đa số ứng dụng bởi miếng chêm. Hầu không còn hầu như fan thường xuyên chu đáo các miếng chêm cho các ứng dụng mà bên cung ứng ko hoạt động, phần mềm không được kế hoạch để đòi hỏi hỗ trợ hoặc họ chỉ mong download một thời hạn.

Trong ngữ chình ảnh của thắc mắc này, những thuật ngữ như "proxy", "bộ đưa đổi" cùng "mặt tiền" có ý nghĩa hơn (ít nhất là với tôi) sau khoản thời gian hiểu liên kết bên trên.

Xem thêm: Bruhan Maharashtra Mandal: Bmm Testlabs Reviews, Bruhan Maharashtra Mandal: Bmm


Nlỗi bạn có thể thấy trong không ít phản hồi tại chỗ này, shyên là một trong những một số loại bộ điều đúng theo hỗ trợ chức năng ngơi nghỉ cung cấp API cơ mà ko độc nhất vô nhị thiết nên là một trong những phần của API kia. Chủ đề này có khá nhiều đánh giá xuất sắc cùng vừa đủ, vày vậy tôi không mở rộng khái niệm không chỉ có vậy.

Tuy nhiên, tôi cho rằng tôi rất có thể thêm một ví dụ tốt, sẽ là Javascript ES5 Shlặng ( https://github.com/es-shims/es5-shim ):

Javascript vẫn cách tân và phát triển không ít trong vài năm qua với trong những nhiều cầm cố biến đổi so với sệt tả ngôn ngữ, rất nhiều cách làm mới đã làm được cấp dưỡng những đối tượng người dùng chủ đạo của chính nó.

lấy ví dụ như, vào quánh tả ES2015 (nói một cách khác là ES5), phương thức findđã được cấp dưỡng Arraynguyên ổn chủng loại. Vì vậy, giả sử chúng ta đang làm việc mã của chính mình bởi lao lý JavasScript trước thông số kỹ thuật nghệ thuật này (ví dụ: Nút ít 0.12) không cung cấp cách thức đó. Bằng biện pháp cài đặt shim ES5, những cách làm new này sẽ được thêm vào Arraynguyên ổn chủng loại, có thể chấp nhận được chúng ta áp dụng chúng ngay cả khi bạn không chạy xe trên một sệt tả JavaScript new rộng.

Bạn rất có thể hỏi: tại sao ai đó sẽ có tác dụng điều này cố gắng vày nâng cấp môi trường thiên nhiên lên phiên phiên bản bắt đầu hơn (trả sử là Nút 8)?

Có không ít trường hợp thực tế trong các số ấy cách tiếp cận đó có chân thành và ý nghĩa. Một ví dụ điển hình:

Giả sử các bạn bao gồm một khối hệ thống cũ đang hoạt động vào môi trường thiên nhiên cũ và bạn cần sử dụng các phương pháp mới những điều đó nhằm tiến hành / sửa chữa một chức năng. Việc nâng cấp môi trường của công ty vẫn đang được thực hiện vày bao gồm vấn đề tương xứng yên cầu các đổi khác với bình chọn mã (một nhân tố quan lại trọng).

Trong ví dụ này, chúng ta có thể demo chế tạo phiên bản tính năng điều này, tuy thế điều đó đã khiến cho mã của bạn cạnh tranh đọc hơn, phức tạp hơn, rất có thể đưa ra những lỗi new với sẽ thử khám phá hàng tấn thể nghiệm bổ sung chỉ nhằm bao quát một công dụng mà lại các bạn biết nó sẽ có sẵn trong phiên bạn dạng tiếp sau.

Tgiỏi vào đó, chúng ta có thể thực hiện shyên ổn này và sử dụng các thủ tục bắt đầu này, tận dụng thực tiễn là sửa lỗi / chức năng này sẽ tương hợp sau khi nâng cấp, bởi vì bạn vẫn thực hiện những cách làm vẫn biết bao gồm sẵn trong thông số kỹ thuật kỹ thuật tiếp theo. Và có một lý do vấp ngã sung: vì các cách thức này còn có bắt đầu từ quánh tả ngôn từ tiếp theo, siêu rất có thể bọn chúng sẽ chạy nkhô nóng hơn ngẫu nhiên triển khai làm sao chúng ta có thể thực hiện nếu bạn cố gắng tạo thành phiên bản của riêng biệt mình.

Một kịch bạn dạng thực tiễn khác cơ mà biện pháp tiếp cận như thế được chào đón là làm việc cấp cho trình coi xét. Giả sử bạn cần cung ứng trình xem xét cũ và ao ước tận dụng những tính năng vượt trội hơn này. Javascript là ngôn ngữ được cho phép bạn thêm / sửa đổi những phương thức trong những đối tượng người sử dụng chủ yếu của nó (như thêm những cách làm vào ngulặng mẫu mã Array) và các thư viện shim đó đủ thông minh để thêm các cách tiến hành đó chỉ Lúc bài toán xúc tiến bây giờ thiếu hụt chúng.

PS: 1) Quý khách hàng sẽ thấy thuật ngữ "Polyfill" tương quan đến các miếng chêm Javascript này. Polyfill là 1 trong những loại shim chuyên được sự dụng hơn được áp dụng để cung cấp năng lực tương thích về phía đằng trước trong số thông số chuyên môn cung cấp trình chú ý không giống nhau. Nhân tiện thể, ví dụ của mình ở bên trên đề cập đúng chuẩn mang lại ví như vậy.

2) Shims giới hạn max trong ví dụ này (thêm công dụng sẽ có được vào phiên phiên bản tương lai). Có những ngôi trường đúng theo sử dụng khác nhau cũng biến thành được xem như là một shlặng.

3) Nếu các bạn hiếu kỳ về cách xúc tiến polyfill ví dụ này, chúng ta cũng có thể mngơi nghỉ thông số kỹ thuật Javascript Array.find với cuộn cho chân trang vị trí bạn sẽ search thấy xúc tiến chính tắc mang lại phương pháp này.