Trong xây dựng máy vi tính, shim là 1 trong những thỏng viện nhỏ có thể chặn API một cách nhìn trong suốt, biến hóa các ttê mê số được truyền, cách xử lý chủ yếu hoạt động hoặc chuyển làn hoạt động ngơi nghỉ khu vực khác. Shims hay mở ra Khi hành động của API biến đổi, cho nên vì thế tạo ra sự gắng cân xứng cho những áp dụng cũ vẫn nhờ vào công dụng cũ hơn. Trong gần như ngôi trường đúng theo này, API cũ hơn vẫn rất có thể được hỗ trợ vì chưng một tờ cân xứng mỏng tanh bên trên mã new rộng. Shims cũng hoàn toàn có thể được sử dụng nhằm chạy các chương trình bên trên những nền tảng phần mềm khác nhau nhưng mà bọn chúng được cách tân và phát triển.

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


— Prasoon Saurav nguồn
82
Câu trả lời này không khác gì triển khai search kiếm google thực tiễn trên wikipedia. Một ví dụ đang tốt đẹp.
— dance2die
4
Vấn đề này nghe dường như nhỏng Việc thực hiện mẫu thi công Facade để giao trét các thỏng viện.
— blz
84

Thuật ngữ "shim" nlỗi được có mang vào Wikipedia về phương diện kỹ thuật sẽ tiến hành phân loại, dựa trên tư tưởng của nó, như là một trong những chủng loại xây cất "Kết cấu". phần lớn kiểu dáng chủng loại kiến thiết của kết cấu mạng được biểu lộ tương đối cụ thể vào quy mô kiến tạo ứng dụng phía đối tượng người sử dụng (một số trong những bạn sẽ nói là defacto) tìm hiểu thêm "Mẫu kiến thiết, những nhân tố của phần mềm phía đối tượng người dùng có thể tái sử dụng" được hotline là "Gang of Four" .

Văn uống bản "Gang of Four" tổng quát tối thiểu 3 mẫu được thiết lập xuất sắc, được call là "Proxy", "Adaptor" và "Facade", tất cả những cung cấp tính năng loại mẫu mã shim shyên ổn. Trong hầu như các nghành, Việc thực hiện với bỏ lỡ bài toán sử dụng những từ viết tắt không giống nhau cho cùng một định nghĩa gốc khiến phần đa người nhầm lẫn. Sử dụng từ bỏ "shlặng shim" để biểu lộ các mẫu kiến thiết "Proxy" , "Sở điều hợp" và "Mặt tiền" cụ thể hơn là 1 ví dụ ví dụ về nhiều loại trường hợp này. "Shim" dễ dàng là một thuật ngữ phổ biến rộng cho các nhiều loại "Cấu trúc" cụ thể hơn "Proxy", "Adaptor", "Facade" cùng hoàn toàn có thể những loại khác.


— Doug nguồn
5
Câu trả lời này chỉ ra rằng shyên là 1 trong những mẫu thi công (một trong số cực kỳ nhiều), khắc tên mang đến một vài mẫu mã thiết kế tương tự như cùng liên tiếp nói về kiểu cách đông đảo bạn bị lầm lẫn vị những từ viết tắt không giống nhau. Nhưng nó không đích thực trả lời thắc mắc ban sơ về shyên ổn là gì, nó làm gì hoặc sử dụng ra làm sao.
— Richie Thomas
53
Giải ưa thích đơn giản và dễ dàng qua phyên hoạt hình

Một ví dụ về shim:

*

Tóm lược

Lưu ý: sự tựa như bị căng thẳng mệt mỏi. Thông thường Ralph đang cảm nhận CHÍNH XÁC đa số gì anh ta thử dùng - nhưng lại lý lẽ của CÁCH nó nhận được là điều cơ mà anh ta rất có thể không mong mỏi đợi.

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


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

Về xuất phát của trường đoản cú, ứng dụng từ điển của Apple

noun a washer or thin strip of material used to lớn align parts, make them fit, or reduce wear.verb ( shimmed, shimming) < trans. > wedge (something) or fill up (a space) with a shyên.ORIGIN early 18th cent.: of unknown originĐiều này có vẻ cân xứng tương đối xuất sắc cùng với cách những đơn vị xây đắp website áp dụng thuật ngữ này.


— Thilo nguồn
13

Các miếng chêm được áp dụng vào .net 4.5 Microsoft Fakes framework để tách ứng dụng của người sử dụng khỏi các nhiều khác để thử nghiệm đơn vị . Shims chuyển sang làn đường khác những cuộc call đến các cách làm cụ thể nhằm mã mà các bạn viết nlỗi một phần của bài bác chất vấn của bạn


— Michael Freidgeyên nguồn
12

Theo nội dung bài viết của Microsoft "Làm khác nhau miếng chêm" :

Đó là một trong những phxay ẩn dụ dựa trên trường đoản cú shim vào giờ Anh, đấy là một thuật ngữ nghệ thuật được áp dụng nhằm bộc lộ một miếng gỗ hoặc kim loại được ckém vào giữa hai vật thể để làm cho chúng khớp với nhau tốt hơn. Trong thiết kế máy vi tính, shyên ổn là một trong những thỏng viện bé dại rất có thể ngăn API một phương pháp nhìn trong suốt, biến đổi các tsi mê số được truyền, tự giải pháp xử lý chuyển động hoặc chuyển làn phân cách vận động làm việc nơi khác. Shims cũng hoàn toàn có thể được thực hiện nhằm chạy những chương trình bên trên những căn nguyên phần mềm khác biệt mà lại chúng được cách tân và phát triển.

Tôi giải thích điều đó có nghĩa là shim là 1 trong thuật ngữ tầm thường mang đến bất kỳ tlỗi viện mã nào hoạt động nhỏng một tín đồ trung gian với đổi khác một trong những phần hoặc hoàn toàn hành động hoặc hoạt động của một công tác. Giống như một người trung gian thực sự, nó rất có thể tác động mang lại dữ liệu được truyền đến lịch trình đó hoặc ảnh hưởng mang đến dữ liệu được trả về từ bỏ công tác đó.

Bài viết thực hiện API Windows làm cho ví dụ và tôi thấy câu sau gồm liên quan:

Ứng dụng hay lừng chừng rằng yêu cầu vẫn gửi lịch sự DLL trong thời điểm tạm thời ráng vày Windows cùng Windows không biết rằng hưởng thụ tới từ một mối cung cấp không giống ko kể áp dụng (do DLL shim chỉ là 1 trong những DLL không giống vào tiến trình của ứng dụng) .

Để bao quát hóa trích dẫn này, nhì công tác tạo thành "bánh mì" của "bánh sandwich shim" chẳng thể sáng tỏ giữa thủ thỉ với chương trình đối tác của họ và nói chuyện với shlặng.

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

Một lần tiếp nữa, từ bài bác viết:

quý khách hàng hoàn toàn có thể sửa các ứng dụng nhưng ko đề xuất truy cập vào mã nguồn hoặc không biến đổi chúng. quý khách hàng buộc phải Chịu một lượng tối thiểu ngân sách làm chủ bổ sung cập nhật ... cùng bạn cũng có thể sửa một vài lượng áp dụng hợp lí Theo phong cách này. Nhược điểm là cung cấp bởi vì đa số những nhà cung cấp không hỗ trợ các ứng dụng xinh xinh. Bạn quan yếu sửa phần lớn áp dụng bằng miếng chêm. Hầu hết những fan thường xuyên lưu ý các miếng chêm cho các vận dụng mà đơn vị hỗ trợ không vận động, ứng dụng cảm thấy không được kế hoạch nhằm đề nghị cung ứng hoặc bọn họ chỉ mong muốn cài đặt một thời gian.

Trong ngữ cảnh của câu hỏi này, các thuật ngữ nlỗi "proxy", "bộ gửi đổi" cùng "mặt tiền" tất cả ý nghĩa sâu sắc rộng (ít nhất là cùng với tôi) sau khi phát âm links trên.

Xem thêm: Khá Bảnh Được Dũng Trọc, Thắng Mắt Sâu Là Ai, Thắng Mắt Sâu Là Gì Của Khá Bảnh


Như chúng ta có thể thấy trong tương đối nhiều đánh giá ở đây, shim là 1 các loại bộ điều thích hợp cung cấp chức năng sinh sống cấp API mà không duy nhất thiết đề xuất là một phần của API kia. Chủ đề này có nhiều ý kiến xuất sắc cùng không hề thiếu, vị vậy tôi không không ngừng mở rộng tư tưởng hơn nữa.

Tuy nhiên, tôi cho rằng tôi rất có thể thêm một ví dụ tuyệt, chính là Javascript ES5 Shyên ổn ( https://github.com/es-shims/es5-shim ):

Javascript sẽ cải tiến và phát triển không hề ít trong vài năm qua và trong các những thay biến đổi so với đặc tả ngôn từ, rất nhiều cách thức bắt đầu đã được phân phối những đối tượng người sử dụng chủ công của nó.

Ví dụ, trong quánh tả ESnăm ngoái (nói một cách khác là ES5), thủ tục findđã được cung cấp Arrayngulặng chủng loại. Vì vậy, đưa sử bạn đang chạy mã của chính bản thân mình bởi khí cụ JavasScript trước thông số kỹ thuật này (ví dụ: Nút ít 0.12) không cung cấp cách thức đó. Bằng phương pháp tải shim ES5, những cách tiến hành new này sẽ tiến hành thêm vào Arraynguim chủng loại, chất nhận được các bạn áp dụng chúng trong cả khi bạn không chạy trên một đặc tả JavaScript mới hơn.

Quý Khách hoàn toàn có thể hỏi: tại vì sao ai này sẽ làm điều đó vậy vì chưng nâng cấp môi trường thiên nhiên lên phiên phiên bản mới rộng (đưa sử là Nút 8)?

Có rất nhiều trường hợp thực tế trong đó phương pháp tiếp cận đó gồm ý nghĩa sâu sắc. Một ví dụ điển hình:

Giả sử các bạn tất cả một khối hệ thống cũ đang làm việc vào môi trường xung quanh cũ cùng bạn cần áp dụng những cách thức mới như thế nhằm thực hiện / thay thế một công dụng. Việc nâng cấp môi trường thiên nhiên của bạn vẫn đang được triển khai vị có những sự việc tương xứng yên cầu các biến đổi cùng khám nghiệm mã (một nguyên tố quan liêu trọng).

Trong ví dụ này, chúng ta có thể demo sinh sản phiên bạn dạng tính năng điều này, nhưng lại điều này đã khiến cho mã của khách hàng cạnh tranh đọc hơn, tinh vi hơn, rất có thể giới thiệu những lỗi new và đã yên cầu hàng tấn xem sét bổ sung chỉ để khái quát một tính năng mà các bạn biết nó sẽ có được sẵn trong phiên bạn dạng tiếp sau.

Thay vào kia, bạn có thể áp dụng shyên này và sử dụng các cách tiến hành new này, tận dụng thực tiễn là sửa lỗi / công dụng này vẫn tương thích sau khi tăng cấp, bởi vì bạn đang áp dụng những cách làm sẽ biết bao gồm sẵn trong thông số nghệ thuật tiếp sau. Và có một nguyên nhân bửa sung: bởi vì các thủ tục này còn có xuất phát từ bỏ sệt tả ngữ điệu tiếp theo, hết sức hoàn toàn có thể chúng đã chạy nkhô hanh hơn bất kỳ thực thi làm sao chúng ta cũng có thể triển khai nếu bạn nỗ lực chế tạo phiên bản của riêng mình.

Một kịch bạn dạng thực tế khác mà biện pháp tiếp cận những điều đó được tiếp nhận là làm việc cung cấp trình chuẩn y. Giả sử bạn cần hỗ trợ trình chăm bẵm cũ và ao ước tận dụng những tính năng mới rộng này. Javascript là ngữ điệu có thể chấp nhận được chúng ta thêm / sửa đổi các cách thức trong các đối tượng người dùng cốt lõi của nó (nhỏng thêm các cách thức vào nguim mẫu Array) với những tlỗi viện shim đó đầy đủ sáng dạ để thêm các cách thức đó chỉ Khi việc thực hiện bây giờ thiếu thốn bọn chúng.

PS: 1) Quý Khách vẫn thấy thuật ngữ "Polyfill" liên quan mang lại các miếng chêm Javascript này. Polyfill là 1 loại shyên chuyên được dùng hơn được sử dụng nhằm cung cấp kỹ năng cân xứng về vùng trước trong các thông số nghệ thuật cấp trình ưng chuẩn khác biệt. Nhân tiện thể, ví dụ của mình ngơi nghỉ bên trên nhắc chính xác đến ví như vậy.

2) Shims giới hạn max vào ví dụ này (thêm chức năng sẽ có được trong phiên phiên bản tương lai). Có những trường phù hợp áp dụng khác nhau cũng trở thành được xem là một shyên.

3) Nếu bạn tò mò về phong thái tiến hành polyfill rõ ràng này, bạn có thể msinh sống thông số Javascript Array.find và cuộn mang lại dưới trang chỗ các bạn sẽ search thấy triển khai thiết yếu tắc cho phương pháp này.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *